From ad246c6c7f10124a8cc671ec995603ea7224e014 Mon Sep 17 00:00:00 2001 From: Colin Date: Sun, 8 Sep 2024 15:22:12 +0800 Subject: [PATCH] Update mnist unsuper learning. --- unsuper/dump1/conv1_output.png | Bin 6519 -> 3492 bytes unsuper/dump1/conv1_weight.png | Bin 647 -> 415 bytes unsuper/dump1/conv1_weight_grad.png | Bin 242 -> 738 bytes unsuper/dump1/conv2_output.png | Bin 292 -> 246 bytes unsuper/dump1/conv2_weight.png | Bin 549 -> 711 bytes unsuper/dump1/conv2_weight_grad.png | Bin 741 -> 733 bytes unsuper/dump1/fc_output.png | Bin 109 -> 108 bytes unsuper/dump1/fc_weight.png | Bin 594 -> 661 bytes unsuper/dump1/fc_weight_grad.png | Bin 251 -> 648 bytes unsuper/dump1/pool_output.png | Bin 90 -> 107 bytes unsuper/dump2/conv1_output.png | Bin 7718 -> 4166 bytes unsuper/dump2/conv1_weight.png | Bin 647 -> 415 bytes unsuper/dump2/conv1_weight_grad.png | Bin 242 -> 738 bytes unsuper/dump2/conv2_output.png | Bin 267 -> 220 bytes unsuper/dump2/conv2_weight.png | Bin 549 -> 711 bytes unsuper/dump2/conv2_weight_grad.png | Bin 726 -> 727 bytes unsuper/dump2/fc_output.png | Bin 109 -> 106 bytes unsuper/dump2/fc_weight.png | Bin 594 -> 661 bytes unsuper/dump2/fc_weight_grad.png | Bin 251 -> 621 bytes unsuper/dump2/pool_output.png | Bin 90 -> 113 bytes unsuper/minist.py | 119 ++++++++++++++++++---------- 21 files changed, 78 insertions(+), 41 deletions(-) diff --git a/unsuper/dump1/conv1_output.png b/unsuper/dump1/conv1_output.png index e41e88130e0098dc316e7d5ac5ab349e858be69f..034f0a7503a477129f771077b67eec42061eef51 100644 GIT binary patch literal 3492 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
    T literal 6519 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 WCbgndAshHY1%%hQgnN#)3Hcw#{`flp diff --git a/unsuper/dump1/conv1_weight.png b/unsuper/dump1/conv1_weight.png index e8681f86257068a1dcabca381bbea9f58ffe5536..4ee741a739d68ef1bdf7826bb190be8b39b0d4b2 100644 GIT binary patch delta 389 zcmV;00eb$21)l?uBYy#ANkl52#p=*?30LSs~1HbTuCtNUGc!doXE?n69fkBhS zDo%|10}Klb5BP+I1-mvuhgqRsw$gQx=hUoz} zl~{?9Y7}xSZ1e6YKe_t#n$LIa0m31-!Zs`Bb5@Z$kRsJ652#p{p8k0KoC@4=!A|U@#bDTrga?V31)j7-Yyp z#swJ$gA9W_PjKj$tqu3>PjO{PqW! z-sdC!%J&PZXHtFo4t9d;p4^3Go!N?ViR9Gs+;#oe-sf}rSm}gQUT83kRZG>v!>I8XqXHq-zWmX2hhp7>YZ}MxIRhOZM zsS#SZNiKPIA%EJ8dW@nIc$iHldvZ%EXHpHOq9+Huo%kZZ8~7TbgFT|Np;%z+V@zqx zskvAonocmHqZ0(^QyMGE;)lG~2(KiHY!u=-wIr7eM-$J+sj~1f8cbhk&8TaH4)%_` z_#;2~7!LM?rj29a>IA@;wu?2UtrGbddvcFFxmY#k0e`x9kk1xwpMI8uPH-h*;2Zc; z8Vjm*W-3vHst_y0O(p^Qnv%GauS2>Cu3HKk;eo7+)nuX*09y(wk%@OCljanmE~#WW zh@KqqcH*7d0pbOaBYy&^Nkl52#|4Y<&9KiACOCp8(;ijzIlrg4|l~6N(u+!Bj zix`d^`Ac8+t@)KX=9b`yKJWK^-k%l{eUY|Bvtz@s`X%ie!YmvcH+LC?#i&pS*5J%y zGmmu}cObs@2i#9S9uk2Ynn=uSo-El^CC2FQS7>_h;aWxs&wt)be6!hn9QZ9}AWAi? zk5cl{<7T4rogO?WukeMXcUof=cDHl?dfQg~JjV7I?>yqw6d||Qi(lUQ#&mqsn#sxg zubcIOBsBbwBz8SfEf=|~rY!J>3DDWWjWo!P1wjc&-(LGfd>>dOs`G%zB(se`}BF@11Y)(z`$CHI^x zQfv!n=lke-_v8h8$oVs7rj#U9L!L?mUyM4IP9o3<8yA!&=*6rFT-GbhpFhIUPQG6L zQr64{PPRZA((n)#jOK|Zxl>XVqcKToiclr@+%-?r!ha*ON5}`O&Rz2qVG7&hT-G!B zfl#AVLOK0CZ7l=+_I>Aec+^3LNU!{$lMRgcx6E7(MITV~{j+B+FPQUzK!lB!yVtfR?L&zRM#=SqvHk@NTG!@@K9eX`y)kYZfzk`SatqIBScMFm_OgZ$iUEhc8?>6#C1!O(!KsA xKSD7)R(FE#|KvCa4DBM zpH@tX*8}DA9CAlzUJaZRDSK4%;9`r-R$a!c7h5P-h@^+P7p9epq_gxtI`c~7+?u{e zJrBUjK&mHh{^S1vEC`Y#!H79e>zg3v{t&PMTXnb{VyvVc)TR%L5X;;6El>Zib8^UM TT=t<+9pnp7S3j3^P6urB!9h0L_t&t9d*GWPXb{W!14dHUAW+w8x(I88u3UNj?Ingr;utO zTJ(IM5iS@AG&VkgeggI{*Lx07*qoM6N<$f?2#^L;wH) delta 265 zcmV+k0rvj(0i*(uB!BBkL_t&t9d*GyOG057fZ_Y0S3On)g&d4bPMIG=iIYlWQ$u4z zgJVCTxuLnAP($F*(AeHoR1gF<*h%DI7NUJXh^4;q^b5K!xz(aa&?XV5Ge3O&jLgm6 zd_0vhRVvcdWs5P`rI+S-Asl)i;qW|_JYrX_biG5o%(cZV{(rV;P|M~$fZ2rQ;bMfUZ8fBXTUnN52#QD_rq0KoD8ryml=L2vfJ1FtNj5dxMOs6s#= zL{nXBr$U8^47$-GDl)59DY9P3mm;!tWrMYBQmcZX4u#FRj)l7JL8O!l5q+pMlqe_M z!zm{mc*5y7_ME5we&U=yUniYqQIbfK2*bxVh-`ch$H9v*)PI@bgrUn zSBdlbT!O5VcJOLsGSp&H7D0maaB@^V93{TqrROUzI+oYBe*EKd@q`kG^~D@jAizoy zM;Hk*!U(W(RDEoNXp;V)IG!Tzd^k;=VviCN`q&Hw2QNjOWwA~=L57$aY9VHtdYyDX zlP#~G&o=G&hJTSfa|V$(rN=A+gGiEum@z4X$RhBu4WcSJ2Twg5-qAk$gf@%7#^1($ z;cCUoiCwx<`MqOo-|3UzkCCR>qw1tH)PNMRhhq{BGJ1_K($u?d|M^MJ!{%pP_=o~-dpRa$5T%F{WP(hPK6Z#{5lsAj zlut{pUL_dP3{Y9OyW@3bYtw@QGc__6fk9*vN|F$>^ov_M!T=Z`uV}ZoEL^QvIpJz` zgM$P7aDVjO#9yns=E#?Bx_zHd%}{uLsRfDKTc&}as)R)Lfrghg7+UCgLrTguM zHN_M1gCO1Mov?`%f+-+QfSAY83jx&HtK WX%P^>an2_I000052#k#eLl0KoBoW&(jgAP@)yK3G^-SSS?w9QOc) zVxe%buy9Z)7Wx499ECz*VPRq6gFqk<2m}I|$<3TD_4gCUd01H%Rz;VLiYZt{_oPS& z#ER*thTe0!vZ)wH7O(SVAS1z%BOwqw%2Eb0;rE;(p`$bn@PDL)A4u^u-}jsbvS1~n zp$D>~3Urc0J5O3!?)cU;;EQ`t5{G%@=fwMby0TGpLyZJS&bWnjAQe61 z6g}exa?k0)c7MwyLP*82fN$+*n` P0000FUZB!8qyL_t(26_vqnNYr;6!14EIyGr9~w|3Bhl`$Jh?T@_EGxd1A<#gxkI6yiNs~5y^Q38R(ceLa!?aFN zkRdQfzN~?z{S+1dRmUkSxx3o7MB=R9oc?)bCsndU??y;|{o|4N<^x@9TElfa&0!7n zT&3UxCNSz*$$x20G}eyW%jGgsY9*zWt2$D#YTS)*9CxX;=bV|f&jV!YNhFDE<817{ zdAWFcPF~Ci!36H86{D7^69QT}dL#ALDs7O}dr}+ewz8K0y$xOXc9@r56`fI{y_5|R z%H0>U*b_pk%_89_hh4fcKY6y$S@8VvfV4pt4jFColYc$VzF~qdHcX=*^UxEmgCNwv zCSt?n)K21?E{)ajULPeT55lzi$&O3hEro6bHAS9iAJ0l=-=lQJu{1Yv&s+PtLj`nQ z#`h7E{}^pbP=A<%yMH;+wz9ULg<1S^K|k@6{jmHB2ldj(k+f^f zm@?~jul|7hX^)4@wVOBPFpb_02^stbjox;Z2S-Q0TVQ*HrGNON>cpM4jkRRj<+^Xf zzpp~tNbqsBync$Kue4mFLI(qyurA>;e1kuzdLy8fo-dzS_izuh@xQB-SYi5h344(y ztEwEXC#~}XQsf(@bOKuOpQ=iMLw?J)6UTd-EiQhU3jAq}<%6fVV{6x(yx?C|m4dZ} zr1;GiFS_Td|9?;QqhR7KxzD7G=`ks3Hx=t5dLF+Tj?uAX^9T#|ND#J)Gm*3QWym%RHr89nPh z=q3-l()L2#w>1pNxIGvWZlZJLbpIEn8-Af$&jyy4WPhE@k~rSm?4C+)7dHtjYOY43t6LDu#Yqk)~b;0~TUCgaIhWf3Fmgy)Xs7nsgUXVg^%G3``8t{?0cGHDCRa gi&?FJnHe;I(l)78&qol`;+0OW5OGXMYp delta 78 zcmd1FouJ}r;_2cT!XcY{=kS4omd1rZsJL+6$NhZFkEb&8uzvgRDk1s*exg8F-Sp!c hM-Ch~aN|G&14Huy?&m2?cJCN~z|+;wWt~$(697ZeAwvKF diff --git a/unsuper/dump1/fc_weight.png b/unsuper/dump1/fc_weight.png index e6f3b9c3130046826cf166feae3d304152003267..3d66203a6d960cf687ab56bac3f83cf996e87eff 100644 GIT binary patch delta 636 zcmV-?0)ze11eFDlB!65a_4(%SNnI=n1YtuKUXj+<@y6&*Y(v$_~ zvBHlt)AXFhW+VP9S3)Q~MEP;i#G;Wb`X-r~KfWS_l@qCcc+K=H71=0kNB!3x6L_t(I5uL%I%i??h!13=7404R);V>8$4C62?$YC%n7z_r3 z;o*3KVH^tvITqwW4iOo0$b(_LEEvYig5lwKg27-g7#0k27#8GMFf174csRyk5PtU` zJYk=Y_$fb?IE@+GxB=#Yii_Q0QRb+UD5O&c4K_D&I#HRUkAHO~ZxH6WiVyO44=+Mr z)9f=d2+JI8+%e-9?tQE^%^JH1J-~FaEqsM^MXSY1yqAB@6d!o*GT%}2=+)R6ggv|& z{Q=V^YlCn}`<|BsHAb7!zfjmw6W`?bCG8=TE^`}KB{@)0NCV6+^8hnKU(l(sThbmf zxlpk14^%9CF@KT{S&1+5e~+F@q7&8Gnglm;UFIiB9Tv|#ENSPtngn&Wd#VGbH*#I( z4?K$}`Pg6+qnQMKW^=kGL6NgUnxLL2EoqlHS@;(U2P$Qb8yZd4Id0-fKE`MY>42$6 zFF{?=su#`pk}$Qxuh?$vQ<@(Gnx+kd^o<|MTdX1RlL9gA0WU2c4+EWkH8GiO=%Knc|I{ zjT@o6*kz7GCN^$|1#c3+?} zaJb__MbVk8~15+mu5l^98fti(tnl&>I@ERbVK+zu5f{;J#xeiC#1!=|A^TjTZrcYa}8L9X%u1=go`k!sE59!x@i1W z5z2!rBdu}b^Z7LMNTkw@Xf$}PR{y%gn>`L<;{??!j`g#S6QUI%t4$ZmceR;m*+yJa z3WQ)ifvp0-ddTEdI4xF(Pzn$ML;wL+KP_uy$v_1DTV?%9>H>wdxV^h`sn|q`ke#9hh45a_zGa5RL2OO{Utneh zfY2sj9*76FvW^j}AY7y&?1>t`ftyq0vsLcmaw$5R?^mMCVs&6$l&)iA{d;Rp-mc58 zF~i~@c4+|{)wT~3zw=;Sl%)Px1V)4Dldb`)STSWxh+ z?U1mrnS9LRPI=4g+w?Dgn9@T z!zX3_qw4_JI<9&_pgy36hx!m(wf{i%weEkx7JrdmdKI;Vst04h3P;s5{u diff --git a/unsuper/dump1/pool_output.png b/unsuper/dump1/pool_output.png index 19bb070d247d45a086fcdd74cf0742bdd4986a89..49eb3715f6bdbe2c5ee001ea45db6034883273b1 100644 GIT binary patch delta 76 zcma#bo}l7x(2$Wqfrt5EKd)Mg0=um2qGsO06CBy^kMMLC-halhYKEKW fa3doF1H(ZBIrA@tVV%Jxa~3@okzM}6!ZrO&C>Nu%=5kA* OG=rzBpUXO@geCw)6cbng diff --git a/unsuper/dump2/conv1_output.png b/unsuper/dump2/conv1_output.png index 052c35669e46c22f183170b3338476cd50b1d4c9..d13915cf19dbf7336e5b9d146e57c42d43491f01 100644 GIT binary patch literal 4166 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 literal 7718 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 PzaTxdp;m#0E&l%imBLU# diff --git a/unsuper/dump2/conv1_weight.png b/unsuper/dump2/conv1_weight.png index e8681f86257068a1dcabca381bbea9f58ffe5536..4ee741a739d68ef1bdf7826bb190be8b39b0d4b2 100644 GIT binary patch delta 389 zcmV;00eb$21)l?uBYy#ANkl52#p=*?30LSs~1HbTuCtNUGc!doXE?n69fkBhS zDo%|10}Klb5BP+I1-mvuhgqRsw$gQx=hUoz} zl~{?9Y7}xSZ1e6YKe_t#n$LIa0m31-!Zs`Bb5@Z$kRsJ652#p{p8k0KoC@4=!A|U@#bDTrga?V31)j7-Yyp z#swJ$gA9W_PjKj$tqu3>PjO{PqW! z-sdC!%J&PZXHtFo4t9d;p4^3Go!N?ViR9Gs+;#oe-sf}rSm}gQUT83kRZG>v!>I8XqXHq-zWmX2hhp7>YZ}MxIRhOZM zsS#SZNiKPIA%EJ8dW@nIc$iHldvZ%EXHpHOq9+Huo%kZZ8~7TbgFT|Np;%z+V@zqx zskvAonocmHqZ0(^QyMGE;)lG~2(KiHY!u=-wIr7eM-$J+sj~1f8cbhk&8TaH4)%_` z_#;2~7!LM?rj29a>IA@;wu?2UtrGbddvcFFxmY#k0e`x9kk1xwpMI8uPH-h*;2Zc; z8Vjm*W-3vHst_y0O(p^Qnv%GauS2>Cu3HKk;eo7+)nuX*09y(wk%@OCljanmE~#WW zh@KqqcH*7d0pbOaBYy&^Nkl52#|4Y<&9KiACOCp8(;ijzIlrg4|l~6N(u+!Bj zix`d^`Ac8+t@)KX=9b`yKJWK^-k%l{eUY|Bvtz@s`X%ie!YmvcH+LC?#i&pS*5J%y zGmmu}cObs@2i#9S9uk2Ynn=uSo-El^CC2FQS7>_h;aWxs&wt)be6!hn9QZ9}AWAi? zk5cl{<7T4rogO?WukeMXcUof=cDHl?dfQg~JjV7I?>yqw6d||Qi(lUQ#&mqsn#sxg zubcIOBsBbwBz8SfEf=|~rY!J>3DDWWjWo!P1wjc&-(LGfd>>dOs`G%zB(se`}BF@11Y)(z`$CHI^x zQfv!n=lke-_v8h8$oVs7rj#U9L!L?mUyM4IP9o3<8yA!&=*6rFT-GbhpFhIUPQG6L zQr64{PPRZA((n)#jOK|Zxl>XVqcKToiclr@+%-?r!ha*ON5}`O&Rz2qVG7&hT-G!B zfl#AVLOK0CZ7l=+_I>Aec+^3LNU!{$lMRgcx6E7(MITV~{j+B+FPQUzK!lB!yVtfR?L&zRM#=SqvHk@NTG!@@K9eX`y)kYZfzk`SatqIBScMFm_OgZ$iUEhc8?>6#C1!O(!KsA xKSD7)R(FE#|KvCa4DBM zpH@tX*8}DA9CAlzUJaZRDSK4%;9`r-R$a!c7h5P-h@^+P7p9epq_gxtI`c~7+?u{e zJrBUjK&mHh{^S1vEC`Y#!H79e>zg3v{t&PMTXnb{VyvVc)TR%L5X;;6El>Zib8^UM TT=t<+9pnp7S3j3^P6dv3?$*K{p za|j3^55*?45itp?Mm!Q_a9a>DSaT*})riM$R*h($c}&DNt2stkC?!(&Yg;WZ?*t6NOA?*^`bM{&)c58a)A?GIrkp0000V{K52#QD_rq0KoD8ryml=L2vfJ1FtNj5dxMOs6s#= zL{nXBr$U8^47$-GDl)59DY9P3mm;!tWrMYBQmcZX4u#FRj)l7JL8O!l5q+pMlqe_M z!zm{mc*5y7_ME5we&U=yUniYqQIbfK2*bxVh-`ch$H9v*)PI@bgrUn zSBdlbT!O5VcJOLsGSp&H7D0maaB@^V93{TqrROUzI+oYBe*EKd@q`kG^~D@jAizoy zM;Hk*!U(W(RDEoNXp;V)IG!Tzd^k;=VviCN`q&Hw2QNjOWwA~=L57$aY9VHtdYyDX zlP#~G&o=G&hJTSfa|V$(rN=A+gGiEum@z4X$RhBu4WcSJ2Twg5-qAk$gf@%7#^1($ z;cCUoiCwx<`MqOo-|3UzkCCR>qw1tH)PNMRhhq{BGJ1_K($u?d|M^MJ!{%pP_=o~-dpRa$5T%F{WP(hPK6Z#{5lsAj zlut{pUL_dP3{Y9OyW@3bYtw@QGc__6fk9*vN|F$>^ov_M!T=Z`uV}ZoEL^QvIpJz` zgM$P7aDVjO#9yns=E#?Bx_zHd%}{uLsRfDKTc&}as)R)Lfrghg7+UCgLrTguM zHN_M1gCO1Mov?`%f+-+QfSAY83jx&HtK WX%P^>an2_I000052#k#eLl0KoBoW&(jgAP@)yK3G^-SSS?w9QOc) zVxe%buy9Z)7Wx499ECz*VPRq6gFqk<2m}I|$<3TD_4gCUd01H%Rz;VLiYZt{_oPS& z#ER*thTe0!vZ)wH7O(SVAS1z%BOwqw%2Eb0;rE;(p`$bn@PDL)A4u^u-}jsbvS1~n zp$D>~3Urc0J5O3!?)cU;;EQ`t5{G%@=fwMby0TGpLyZJS&bWnjAQe61 z6g}exa?k0)c7MwyLP*82fN$+*n` P0000AkT^Zt0R&%P*g`@tIYg__xoH9F{+!VH3pjSv#Ca7?E^+)`BB z58fPO7N@WNfcweELq4|7n^X_Ui+uFNo^O7tWK>H%!Z5f5r+;|bclUxWVt4OulAJyE zybV*8A}ZE_#B-2@3{*M$Tg7|E?#;BFT_l>y*0hOvPS>4CHt)U)0O4Q7Y3!>iIEEWQy?gSgETB61N=1 z+z<2Q<4}k{ui{KuIXPh$&L21-zuMNB@jDl{xZ{C7=TQ#*kV_Eu-DIE%k9vwK9xQyY zmM)wH@`nA9B3dSgNcvRbUI}!aS2jO0Ez8gc_0BHnUVpFq%E1Ec{RZDHCsmd|vg$#sf{5aHo9*{@uOMX8>HDuu?44JCD4-+s- l&GFU0J&Myo9&x6u-2Zt2A`l!OW*qHOxbWFi*8? zCvjv=c062osJP+mViF}5{e8dZ_x&}&*2%K0<3bvvU6@ANP%Wuy5kXEUo1m%WwCm!? zdLf)hP5JB(I9GkWgkfbjR6`vgb`(;Pt;P) ztZ)9V;)L7fam?qj9W9l@TI>PmWGURB*fMm9*q5d~5K_v1v|E^sj8pSb;Kq9uZ?CS9 zia0E6#(wSGZ-3tOZO_U{cM$upZM<0>ejZ9b+f^^!rjCZ(r0vmit4TQ|I1!a|{1`FffOxPu!aG!53nd z#n{o_&>(}1STiAzySgAmuB5e(43uM+IoIats03e`41dvvp6zC3;7>EWKt?-RwWi>z z)=(>&ff1gT(g>U2cXh7BqyNegz4%g&T-KYP)9LRu19e0b$~>sVlm$Xux!{wsv_JxL zAPA95k$T-ai3nR4pNf+4e>6w;B$E&8iO?ICbLxbN%1=-U-H^gO3Wf>)dV3eeumsYW zqQDnZsDJNsgeJAU_T#))Cq^A(CtX^x`k$_6Gp2{gwNTm5>?PdF5nBJ`4?@t3UF*mr zIu$}Z9HOimYOqsWn({EiK!WBWinBz>Bb_h;X-Gg>4BPHplSde`P}Kw7MhnOzefn|9 z{XQbRD*9mZ@|X6yYh-hbj{2VDwv{JOuG?bH2RG!ASvolQWG1Ce(9b+;?gjo{!)eIk kkMbE@Q%4>#>KMEK0e|2c5Xl`cIRF3v07*qoM6N<$f)rn2B>(^b diff --git a/unsuper/dump2/fc_output.png b/unsuper/dump2/fc_output.png index bdb90d2a10e1ed37c0eaf3683b5c115ab06734b1..d07871915cae0b7088b52b4c03b5d9ba25316240 100644 GIT binary patch delta 75 zcmd1JnxNul=;`7Z!XcZSa^h#a`Ocl4ALX6hY#+0;u`#xZ^4L85|K7mJ=*^G&4-TGS fVC&)K;b36c6v7kicG~$G0}yz+`njxgN@xNANCg|# delta 78 zcmd1GouJ}r;_2cT!XcY{=kS4omd1rZsJL+6$NhZFkEb&8uzvgRDk1s*exg8F-Sp!c hM-Ch~aN|G&14Huy?&m2?cJCN~z|+;wWt~$(697XsAwd8D diff --git a/unsuper/dump2/fc_weight.png b/unsuper/dump2/fc_weight.png index e6f3b9c3130046826cf166feae3d304152003267..3d66203a6d960cf687ab56bac3f83cf996e87eff 100644 GIT binary patch delta 636 zcmV-?0)ze11eFDlB!65a_4(%SNnI=n1YtuKUXj+<@y6&*Y(v$_~ zvBHlt)AXFhW+VP9S3)Q~MEP;i#G;Wb`X-r~KfWS_l@qCcc+K=H71=0kNB!3x6L_t(I5uL%I%i??h!13=7404R);V>8$4C62?$YC%n7z_r3 z;o*3KVH^tvITqwW4iOo0$b(_LEEvYig5lwKg27-g7#0k27#8GMFf174csRyk5PtU` zJYk=Y_$fb?IE@+GxB=#Yii_Q0QRb+UD5O&c4K_D&I#HRUkAHO~ZxH6WiVyO44=+Mr z)9f=d2+JI8+%e-9?tQE^%^JH1J-~FaEqsM^MXSY1yqAB@6d!o*GT%}2=+)R6ggv|& z{Q=V^YlCn}`<|BsHAb7!zfjmw6W`?bCG8=TE^`}KB{@)0NCV6+^8hnKU(l(sThbmf zxlpk14^%9CF@KT{S&1+5e~+F@q7&8Gnglm;UFIiB9Tv|#ENSPtngn&Wd#VGbH*#I( z4?K$}`Pg6+qnQMKW^=kGL6NgUnxLL2EoqlHS@;(U2P$Qb8yZd4Id0-fKE`MY>42$6 zFF{?=su#`pk}$Qxuh?$vQ<@(Gnx+kd^o<|MTdX1RlL9gA0WU2c4+EWkH8GiO=%Knc|I{ zjT@o6*kz7GCN^$|1#c3+?} zaJb__MbVk8~15+mu5l^98fti(tJ{0qq2kBYy%kNkl zNBk2v7gbdrO?S01Wtfo?;;&s-CrxHS7D}K*y-(DQe2EXTb7}g<->NW1 zxb5tY?3y9xy3Md0i)auTZmO&QM~^0?|e&@+jIM`XtGuRC1S z+%}2kAWq|l4@Y6T>@Z}EMdZaAy1q;@W=&K}?5_KbAqHg3%)Qxb`)STSWxh+ z?U1mrnS9LRPI=4g+w?Dgn9@T z!zX3_qw4_JI<9&_pgy36hx!m(wf{i%weEkx7JrdmdKI;Vst04h3P;s5{u diff --git a/unsuper/dump2/pool_output.png b/unsuper/dump2/pool_output.png index 19bb070d247d45a086fcdd74cf0742bdd4986a89..c08cd8d74ad008f9937f4c8e717b101e8cfe81d1 100644 GIT binary patch delta 82 zcmazloS@=s;pyTS!Xcada3doF1H(ZBIrA@tVV%Jxa~3@okzM}6!ZrO&C>Nu%=5kA* OG=rzBpUXO@geCw*b`xFz diff --git a/unsuper/minist.py b/unsuper/minist.py index 3a98061..8a1dec2 100644 --- a/unsuper/minist.py +++ b/unsuper/minist.py @@ -16,10 +16,8 @@ torch.cuda.manual_seed_all(seed) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # device = torch.device("mps") -# Hyper-parameters num_epochs = 1 batch_size = 64 -learning_rate = 0.2 transform = transforms.Compose([transforms.ToTensor()]) @@ -36,93 +34,132 @@ class ConvNet(nn.Module): self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(8, 1, 5, 1, 0) self.fc1 = nn.Linear(1 * 4 * 4, 10) - # self.fc2 = nn.Linear(120, 84) - # self.fc3 = nn.Linear(84, 10) def forward(self, x): - x = self.pool(F.relu(self.conv1(x))) - x = self.pool(F.relu(self.conv2(x))) + x = self.pool(self.conv1(x)) + x = self.pool(self.conv2(x)) x = x.view(x.shape[0], -1) - # x = F.relu(self.fc1(x)) - # x = F.relu(self.fc2(x)) - # x = self.fc3(x) - x = self.fc1(x) return x - def printFector(self, x, label): - show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]), "input_image.png", Contrast=[0, 1.0]) + def forward_unsuper(self, x): + x = self.pool(self.conv1(x)) + return x + + def forward_finetune(self, x): + x = self.pool(self.conv1(x)) + x = self.pool(self.conv2(x)) + x = x.view(x.shape[0], -1) + x = self.fc1(x) + return x + + def printFector(self, x, label, dir=""): + show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]), dir + "/input_image.png", Contrast=[0, 1.0]) # show.DumpTensorToLog(x, "input_image.log") x = self.conv1(x) w = self.conv1.weight - show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]), "conv1_weight.png", Contrast=[-1.0, 1.0]) + show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]), dir + "/conv1_weight.png", Contrast=[-1.0, 1.0]) # show.DumpTensorToLog(w, "conv1_weight.log") - show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]), "conv1_output.png", Contrast=[-1.0, 1.0]) + show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]), dir + "/conv1_output.png", Contrast=[-1.0, 1.0]) # show.DumpTensorToLog(x, "conv1_output.png") x = self.pool(F.relu(x)) x = self.conv2(x) w = self.conv2.weight - show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]).cpu(), "conv2_weight.png", Contrast=[-1.0, 1.0]) + show.DumpTensorToImage( + w.view(-1, w.shape[2], w.shape[3]).cpu(), dir + "/conv2_weight.png", Contrast=[-1.0, 1.0] + ) - show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]).cpu(), "conv2_output.png", Contrast=[-1.0, 1.0]) + show.DumpTensorToImage( + x.view(-1, x.shape[2], x.shape[3]).cpu(), dir + "/conv2_output.png", Contrast=[-1.0, 1.0] + ) x = self.pool(F.relu(x)) - show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]).cpu(), "pool_output.png", Contrast=[-1.0, 1.0]) + show.DumpTensorToImage(x.view(-1, x.shape[2], x.shape[3]).cpu(), dir + "/pool_output.png", Contrast=[-1.0, 1.0]) pool_shape = x.shape x = x.view(x.shape[0], -1) x = self.fc1(x) show.DumpTensorToImage( - self.fc1.weight.view(-1, pool_shape[2], pool_shape[3]), "fc_weight.png", Contrast=[-1.0, 1.0] + self.fc1.weight.view(-1, pool_shape[2], pool_shape[3]), dir + "/fc_weight.png", Contrast=[-1.0, 1.0] ) - show.DumpTensorToImage(x.view(-1).cpu(), "fc_output.png") + show.DumpTensorToImage(x.view(-1).cpu(), dir + "/fc_output.png") criterion = nn.CrossEntropyLoss() loss = criterion(x, label) - optimizer.zero_grad() loss.backward() - w = self.conv1.weight.grad - show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]).cpu(), "conv1_weight_grad.png") - w = self.conv2.weight.grad - show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]), "conv2_weight_grad.png") - show.DumpTensorToImage(self.fc1.weight.grad.view(-1, pool_shape[2], pool_shape[3]), "fc_weight_grad.png") + if self.conv1.weight.requires_grad: + w = self.conv1.weight.grad + show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]).cpu(), dir + "/conv1_weight_grad.png") + if self.conv2.weight.requires_grad: + w = self.conv2.weight.grad + show.DumpTensorToImage(w.view(-1, w.shape[2], w.shape[3]), dir + "/conv2_weight_grad.png") + if self.fc1.weight.requires_grad: + show.DumpTensorToImage( + self.fc1.weight.grad.view(-1, pool_shape[2], pool_shape[3]), dir + "/fc_weight_grad.png" + ) model = ConvNet().to(device) +model.train() -criterion = nn.CrossEntropyLoss() -optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) - +# Train the model unsuper +epochs = 10 +model.conv1.weight.requires_grad = True +model.conv2.weight.requires_grad = False +model.fc1.weight.requires_grad = False +optimizer_unsuper = torch.optim.SGD(model.parameters(), lr=0.1) +n_total_steps = len(train_loader) +for epoch in range(epochs): + for i, (images, labels) in enumerate(train_loader): + images = images.to(device) + outputs = model.forward_unsuper(images) + sample = outputs.view(outputs.shape[0], -1) + sample_mean = torch.mean(sample, dim=1, keepdim=True) + diff_mean = torch.mean(torch.abs(sample - sample_mean), dim=1, keepdim=True) + diff_ratio = (sample - sample_mean) / diff_mean + diff_ratio_mean = torch.mean(diff_ratio * diff_ratio, dim=1) + label = diff_ratio_mean * 0.5 + loss = F.l1_loss(diff_ratio_mean, label) + optimizer_unsuper.zero_grad() + loss.backward() + optimizer_unsuper.step() + if (i + 1) % 100 == 0: + print(f"Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{n_total_steps}], Loss: {loss.item():.8f}") # Train the model +model.conv1.weight.requires_grad = False +model.conv2.weight.requires_grad = True +model.fc1.weight.requires_grad = True +criterion = nn.CrossEntropyLoss() +optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=0.6) n_total_steps = len(train_loader) for epoch in range(num_epochs): for i, (images, labels) in enumerate(train_loader): images = images.to(device) labels = labels.to(device) - - # Forward pass - outputs = model(images) + outputs = model.forward_finetune(images) loss = criterion(outputs, labels) - - # Backward and optimize optimizer.zero_grad() loss.backward() optimizer.step() - if (i + 1) % 100 == 0: print(f"Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{n_total_steps}], Loss: {loss.item():.4f}") -test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=1, shuffle=False) -for images, labels in test_loader: - images = images.to(device) - labels = labels.to(device) - model.printFector(images, labels) - break - print("Finished Training") +test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=1, shuffle=False) +test_loader = iter(test_loader) +images, labels = next(test_loader) +images = images.to(device) +labels = labels.to(device) +model.printFector(images, labels, "dump1") + +images, labels = next(test_loader) +images = images.to(device) +labels = labels.to(device) +model.printFector(images, labels, "dump2") + # Test the model with torch.no_grad(): n_correct = 0