From 42510a8c54642719b70c0952e4d4ea6ae2970787 Mon Sep 17 00:00:00 2001 From: Danny-Nosrati Date: Thu, 19 Mar 2026 19:27:56 -0700 Subject: [PATCH 1/3] Added visualization and a json file to keep the metrics of a training loop --- mnist_confusion_matrix.png | Bin 0 -> 45199 bytes mnist_raw_data_samples.png | Bin 0 -> 14684 bytes mnist_training_curve.png | Bin 0 -> 25493 bytes mnist_training_metrics.json | 15 +++++ pyproject.toml | 5 +- src/common/MNIST.py | 126 +++++++++++++++++++++++++++--------- 6 files changed, 115 insertions(+), 31 deletions(-) create mode 100644 mnist_confusion_matrix.png create mode 100644 mnist_raw_data_samples.png create mode 100644 mnist_training_curve.png create mode 100644 mnist_training_metrics.json diff --git a/mnist_confusion_matrix.png b/mnist_confusion_matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c8d6c5bfa0a788cab70907cd45503e6f7f51e7 GIT binary patch literal 45199 zcmeFZcUV-}_AQFJMS)fUm8b$DStUvo5s;j75|NxGg9H;OQIH@xrz$8UXHXFkkesuK z#3D$J1$S=j?&Ik`zw_>W@BMlGzWy4D+G*{z<{Wd3G1n`3S#bh4hnKS>aaUN` zIc9Fy$)0#(ux^RzB*X9b?#LaMq+bpE-Bsym3XS5iqj!ag8LsHuIeGt(a2dzUOJB)z zM~P2$q-+F+9=&%d^!e=&_x-Pio|r=#wB_s%tK;n^DIAR)Cp{dEK90Bvt@uaRKFIwI zZU7JOLgO$z+`+$-ya)eFyZw|9`N8Yt>x3i75BCq#{`|^Yyg$Bj_5Xh5|BlQ5f0N*RdDpzb`JbadUHLtLI)3E%w}AH7zYIHC-4gWhfg?*9aivR8AHnNUnjQcfNMk z9*-6K>D9T}p6ux5$z~>MYU-`6t;|OgjoYi8awO-^Pqn!_O}7c}tj~95C?s=u?mZ4; zQfo=vu}cf2ifS_VE7_MNkC3}pyfd)Cq%&CO}icb$YuRl2IGsxjtPzGN6$Epx!`b?*7!G-$@;N^KUgoqoqEcwqZNK?L-vP!_ zz-_$?9^B#U`$H_61@~m4xm0Xyei+Q}fBo=`Oz?4uSyx8lP^sO1u^1lSk5C%n6JH<6 z#`31BW@|F2VYCNIY?GfpeVWzex;mXWULR!MjZz^T+@ENQpp!Us=n&zcPjqzj+7l$jbVk(OWz)z+)fhp>q-zl;=b0cCi{wxi%WH;BlS&0M1<0MgkqfMo=bGE zpr9b~Fvu@8<+C~Jxp&GP=R4rJy3=IHqYaC#M|)!VoKE|m#`8)i*BLrg5@S1FH#6BB z9mQ!LF7wDkZ*O;Nt%Yw&qQK!sLTYgQ1}z zi^*)gYF!nSvcm1#ULEOjIj>*;4ySG_+tuGlupTN=fSD1Nlaq7!@Zqi!TLVg7`{^e; zd>*?cypD4jUS4=xJ3DBlbXnhk0Qb!kJ4BWP1?_P2_VWXr*oyhVVk|77h7eu}-@riC z(JFV93TN9?xp-Ze3;?{Y;03P=x2mvynuR6I+{`wC0|}We#CC4C=%kJF6V9;oGY-$;NRmVk09X_$N=c zi&MMP`qe(jkApWi;)-Q~g?p#gm*fphZeLOsRH1pV;4*tbJ=|wjJ%@<*X|uM3CxjF{ z_w!}%-hIyNFq;x{%dT;7P)k@?*legIw~)^T7CSP%aJwt5J*}&w9!Gg>zdff#mUTn; zaJA0&MM7%9EK(NDYf5R-%S%fNrH>|7hn+?>B3fhl)Yz(b^Jp`TnxlFycx=z4@BerO z^KkVFG7qcv_uM9$qt(I~Rr1VntU6^T(`|{2N@@OeLDV_3-DoC$e(h|{Ldl|qrSbai zB+*j>`@1XKo8v+7@L~>geeF@#In8^dVcJH}7FrE!u1vM|K0kSmifQl23Bu{r2wla; zk1IZY{J6SQPmNYc7TcaL9^G4W7uwrQh6sh0ieR02MkFY|I8wQ`vsjIW=OLYa8Ni^FHVtFd6F|;wzdolS(E+0x%5E%6 z!l?XtJCcx$V>)rCa-XL2yx!yBxf8EEd2POWF{)-|z)jEKHb#5vsXdwX^z=AQJMJQ< zq|MYUG;`gVFQ$`#7gJF8V*|5`hgWj+6kf^ew{I`_(MrL+&TD#ZEDV!Mgu^`O`?5G# zoFf`y2%q=3z;w#HmuE3j(a*cskt#)MZEYVg5lzqSS?{VA7c~n^^lk0z@+pKohIr*dYMYvxj7H)F+?Yd{-&~b( z{a&@Ov)shS62ctKWtpeWOxgsmhZ%x&I7X*@AnW{@Gx|##8^tZvu4}VLT8ljy;e2_m zQ~D1K3|KB-z6>J^$w~tPmq{eVSGt=wZ}yi#FeoBs(;a%Wvu=s4NJ*iUN|g*_K88>1 zY_fxgXCtcIcBmv2+nXa5a`WNm`@P#}wVd#jhbrxY?%Vei^W3`qh#8U~MrrC9H%FIK@_xU^QIEz|1TS3+W9c-88xQz0Vujx|Nz#R8&2vMRyqR;MxaB zfVP#?Rb$fd|l3EM7>u?v6 zVVxIS=|J|Do@$Mk3x11-caPv6GO{}xbt5IVHJG*5m|HYXPEHf8@uNl_FuNe%*iU}B z7`@dhxMPuL`S8oz8?|R?BwQ!L)Rapf83I@k?awz>L#t*NSoG(4%JeMOUp#v@#6n~2 z;|qt0MiNL6O-6e{gCP(oC0w(Lx^ndNF5Z0D2Fs_=X6#NFo1S35v5TIfVh9py4&tanO0Jy+e~m30G{C^YT7 ziX;*9UQ9PUK1?+hcxwxZH~2C1rcLgUG|hUlBH@eaZ|LRruVJ+%a{*KWn$M0C!2FF? zPM3{6Q6v%)NO3E~qJON$CyY*tbZdKC(1nI70ia}*fLjqnNNS#UBkoNRY-+HyAmcJe zZ@~yCg)?hp<;>%9KT#E14J*Q#lvD1V0W2i}QCq1qO(vVBR!AB`^6Gey&}>}*IhV>R zWKyjNz5yKTN`IcA+t(YOZQHOa6(E`;kAP%CYR}zVQfBo_42FWe{ukL9^{O8CP`^it z35n&^)yEJ08CV!OWn4qz+44Dh*=dL#VfHzGMJW$yvOSj@ z=tEMD6Og5-Yr}F^l9u*gUl=xzbz1r+ioMsnAu29T?`92PoR*<~_wnt-d<~MlgE|?3e{l@VE?>gM#eSF08e3v8iJR;|)CU%5q`KRms>$|Hx zJ!1vjR97aOJL%&eCjsh4Lq;URQ7oeMs;kbPJGTbM_kW=l@~8mp3Aw+LK5$+Epa_$Y zkPz}#AcxBo?JiF=g)9i1*n>pE)dat!pT2mrub{KHw|Ak{zBNvu?9qf|-j;DoO#6pt zC$ftbA2x-{aGG_stsdM(+S8SwE!^4YHMFM!t@W_9W4R=uu*$U%5St zhHU*7U|sU4=e~}f$5tw&g=-Rw8hI&za1$=F8%+-snxk|p%Ze-q(_B_2GbP?!C31h> z>)DP{VOm=p)q}awJ!oB>-Pfls6U(b|>=bFiMOqdJzR}#)sxY}inbhE=*h>H+RA`C0 zr2=Wi$7&xkpfW^HVlpyRODrD~6i$%XLaM9xs~rVA6&Ds3$oQRq(Db^^q(%^vlBPjq zhqoa)P;4Df%BpRW{c$7$0@tylM@UG#&AGC(_%ocrUjH0%+ zRSwX+3RGb#Y0?)F5Cy@k8zL?I$f$zR)`)jsj|`*|K*8vs0Vgslro8M(kw~_#+7b&6 z4(1XdgW!nHR7yAd{yDfYUZ^_Huqh3&kATf6B+=e?`ZZk{3N$KN>IyTR>Aeka=sDfi zEo$rQ2V>+Q_^87CSB4S+*02hUxyr+bDMc3jNp@2$8u4~|C}jp0XJ-?rUwmJ^3I;H5 z){Qdkg4?zBsE|J@pC?KP-~d2@$mF@lsT9;wI_?enIDf2y0Qa+n*}QSq7<3v zo^MlA#-@Gm5+|S_<-!h)jtWtaBX7r#wh2axYCBSsxhP1(?X8c1QMO#XV0c2pB`J8n z2ggHln|Kl=z5_3bMbwu#7f^6rS}X#mh*>mOpX}`JIAZjwtr{Qk`0GNbO4_Ea}6LX<*Gwqdoa_U?2{^=c!w0gu3vR^b?TiL z_~9@w`Yq_MT>01mP+Q9T^hM^7y|rL-C=v=zQ}T8x<~|UWg7?a7+L4m`usNz5`C7C% z(TLNxPbZtuIaOvSPoFMuc6HT!^!>BG3oHd@h`hxb){|c%!y!j#^7HdMe<#CxPgknJ zEO-450n7jZ6laE>{eK_`Z<8e-@mkp`dTU_+oA*o2j)v*q;iPll48B>q0;Ox?@Yk`}I16Ipjpw4*>&({FC-#T|oXnSAWUYtH#FR;IH=&|NL5CknlG=pTs{O z!{5g&dD}?&tHq_c(p_1kY&_d;Z*2K~oOQxE(LYnxT$HpDwu=r+nmN4U3+W z4P!ZmICJdBilVZDgjlX17l~W>o0<_*4ROMLJKY^K8rcp@ens0!P6UQ48@7&06b~Ab zUZ6G}vxKqfXj^JkX1TjhQ@>C@F}4N*?16Pp{=F#L$zE>eB_9LdN!>`Xj4DPzWso8z8LQ~gtXl-K0A#R)6q!*)+9aQ%M zt+hd=xjey*f07}EyWBw)5Pf^%Eop7-tUGt^aNPfKJz2z-abR9^K3sccdnDIATGw<~ zb>%!;=W3)~=Oei{T3gcRlZ%EX|x47Q@jjg&T$xv^m6rW_RMN7bb zck@QF2s;tC)A-d(VRrdY3MD`DvV+POQ1{(}ge1pISNbaW`R>eP)buUc4jj>(3X6cEp&QE1kCgO@lx zX&BRPrB+=<$H2?0$%*zhTdz3AsD-I$ALDs}j-B$H@~z*gLM67&3|Ha0vbLIJ2h)RI zS>Kh>GJL7O6S(8>Tz}_y%#-*;={YDu5Oj=S!?rg07vA0|fVA6C?K*5N8z$Ghp-r`Q zQX(UAsvVUnh@^I+S4e!3-_R`Mn)`*F*Kw(=igNd()dBr{w@gDQ-Ln zsUgX&D-xkHH){%K*)NOT+;m2gc$Lr+W{96(iMfaM9JjgI1|#o{{IIiU-xTaT46WLo z50#u~w!ra~neAw}7cD2ynl8?msQlKD#>z(Ak#mB^VZyayz%x(cT$%T5^R{T{!`$g6 zJvp=9S4@)M2v6f(Pi?31!G6j$h~o1MZcluFQhVNcswGyusY){uFqa9gjGE)&eb45o zaxYp+ubSY5=q|WH4xq6gHk8sLOgb=fDl;8H3uYu#R2YEzgI}bSN`fnVIV3XW9T=Cr zbt#I(W-2;Avt_4W!PJ_LlylniE_)|geZpGZ2_cO2%XMiDUb%tK6571&S`&AQaj!?M zG3JBT$ycPcpGMjnB6FtgzXuTeb@typ{xB2)$cLctO$w!x3iqiv^}h3ccg|uvO-%t5 z{v2*2hYg8NbMR8|yk(-YmSbZRh-QkQ&AiwCfcKpzV7<*dB0|5h^W1!M{~gzR{gN_i z#_QMR2a7D-rk5=Tix}M2#Yf`>0JtD!s&w3C0>zuk=)TRPqS}5+UO5r7q4+(G^TrO` zmnHb*v=u(w7m9XRIk7d9)5QJ8l4e${;=zN(4Av8wV3C#?|A(Lr&3^YgM>-< z&Z)^(C2j4PC=N>_dlSNQZrJdaINT@^(^PA0=a`5O=sP(HU+*8Gv11-^4?-7cJ!;0f zt-c)7%y&(_DjjuY)V`{0dH+awTI*|J07A#br+6@~apkj1d-l8aD8<64!_S@)!%0GNsd z4SHxZHB77sthH2c-Q1a-ZFbJy9QXHT8_C4xI%Q)kG|^t$94v_xksULAFD?XV7ipo3 z_7|IE)d%y;)M%=2rfu{@HgR*B51*0Ibh#ut&hhPrc}Rit*x}}Ab}1nLRqrK!oE5Tp zCmDLp^d57|JNH3VhnZEgysZE-?(UcE2B%+szGYIJ-8HhXqdmXPs=@L7$x4lwH`-1;qvsAb-XwRWm5rRSPucv9J z<(>cz)f7M05<=(4FA$$~IIiR5cIU?o1R8y{4NefcaFSP%@0{LtNo!}P67cL|J_ta$ zx4^$}+J+dQ4}v`29|ejC`QiGZvJ&Kzchs%ICn&uC4os{NWP(rfC+_(b6=~}r$K(B? z5TAEKK3F$+>OWClCW6`BzjlHhUQP#(%gtg4aY2fY{$rk=l9W5WK%&TFD7Yn+uHp zP^W*rc1hX6A=eN6{Mt{LCjT#pSe}qU7wb>>;rEM8)rJ5`OUiKU$s$nd;Q7@~|K=~8 zOS+G6J8NS;)MgL`%bb^zsk(jm6eZ36||&p?%Xd7e=-3Zmz1<;IAeky5bl&pW#> z1c)Q8-Ui#l62`2d2o;;h*JY@KOo0@GBpp>`HOvTwKzFv58faTZn9d?gElM7n+eqmL zcTwoFVpO@ejqRD}&C%;c_(~`_OyTa4l)eT^l}Vld#r^sG7fk?ZwAVJ&dmZ>bAP)GeqtWehvlsTXsVgV6oys?u&X%%CDa7qG7ZLe4E0;~T)$?#t3 zGH_#X8ZISg=S>4^sG#nIgbKJhMsGm@Ud-zE@})eS-6A|4MApcghItxO!h@STf?oCd zkfo97Bwhc0hw%963kf5YZi8P|*4MeNkzJYq;tc-g%;@aqmVWOJ)rAY!Bz*n-mF4AM zJ9t2a4GOWL&J+-XT#Hio?#bKR7p&o)Jb40NDbSeO!|q`5f}Z`XCA1}>ZYI8PA%lRN zOMObG+CxXH*h|NHBym@P^+MRge(x8E_U0nLRcg#D=Ux?B0w(4T&&uWMI>`5 z4pC5ZWA81#ICZ`U6wVBo;AW5)5n*e!N6R`B-Zo5xa9SWe#dLLbXMvLjX)hsFDqUZZsX@vnv;pKCjLo}!CoJIO(5H{O@HCP*QTbzN^=ZahFMVLfThD3o-2m>~K zO#rm)E-mZIRNy|EhKF_F(RxAZ&u+rua3H?%u1&X#KXD#lQwiml z;+`#NIur8Zr4VAa0|KTJqU8pzvY#Gw8p1!Tmtys^==wF_oO6mpZty;D&@FXxydB%W z6>qI7;tNM&y#7`j4i7;%`&WFr^k*oU{)SY=?~%(;`26h{+_ir{#7Bu)qd zD7c!~w^KXmae6&**521#o9KDVc%`YUd+&J6xLfq>Y*vzPTaLMv6**MwsV`U63{L!( zZzQW09o|f$Syf=BOrVkzH|((8C6Qe7h)2zG!(DENb5E~Svs`D5f3(z~+||)j#KBBi zp&{w=K*^YRvdE*T&!6uR%#EsbGpWhH$fN5@G8Liht8Rr-urVx%8*e-~p=PY-ztm>^ z&D`0=>y!dHx?@t*CHy*?Y`ChO=f~x=m)=hZYv4#iyY-ILc_!zv1*!JxpIUvKdL@c0 z%QDZQdUKtKMQ_7c(tA;vugJQSDSOat@0($ipk3hEvu9VudRssc=j7$^dDQJFl{rqf z&!(L_449$5ww95W_U@76MC?!~l~J8b4xHCw3P?{EjOJ3(^DLLF+*yx^kFP$c0I3%1 z#~`@%9ZhkxA_YC${&yS9;K`O@y+Ktrv`OwaG9G7Gc?=8^Y+V>kkL3W`uD3UqRJ?B4 zI`y;TH%Irh@Wqz44I#RmPyzB#32{}Q%#TcC18%Fk)mG^mu^mwYvnqy|F7a2dB)FQ6 zJD_vCIi)flpl`@gEOyVw3oLQP-Gx|Srb^H~=W~7Ko6$iZ%_mv!dgwfxr zD$PnhsPFK3DP|X9`FQPrcrkjb=C#;4IjPn9h7~xqvL2yfkJCF&tyAs5r|~FmV5q`Y zB;@;4d>Iq#{&&WC$8Pf>l|h^w=22WZDxTX?IXJ1dt9WA&rNN?{Q(%&m6VArY%lsCP z#QweQy|yuVwHzH45Y28Hw^*HT^*EBkANVWFWZwg%#8 z<(Zq1C=;Mo4PYu9RLQZ0c{p0y;j#dH?T(Zlt4@}2d~^ zc$wj^_*%azKzd_?@F<;c-0CsS3kD6}prGPN-Z9c{?hYJZ|W>hSAJF?KN6{4JBb0(I@QMxIDMIpIPh9Hno zEGdM5hmd47T^-&MAc2h>>~kNVrqR(+qiq|Dk~ddE|ExlU-~6mXNYiWeNoP7;u;mTI z4m9gUx-$YwCr@S;yX{N|>kojM7l@MbbZdneOiWj0qHl4(rvDnH z5?o%X+&I13q-M>?Ff($aWk;GcRSugyr?DH_GuXM!za~OYW6yoLJyK?`RV?TNh7+x3 z_A!NFS!N2&6u~AH(qa7h5;b+ac*V}l1ZqB9u^vKR$pa+h1ywpoLFHXoCFr>jLrBd_ z>*?uv?AQtN3y}te=A*(;Y4l97r_H=Lk2T$|s@yi)x=C=66e(~fQ1v^uZMBp(6jb>} z4{kmB-UbpLxOc`+u#Q%`6(bD&r%&}#Lou-lQXSu3oZ_%HBxLMsbO~J}mO(-Xt9CS?+lgH0jwr88c|=Z4U|jOd(}sHZiFX zkGETas4%7}@{u8>YufO`x^ddJx4Lt1H7* ztuUTOc4NDN+Q*cQrYhHR&-BezkL_12aksKTeMRZ`$eN8Lr79WNII^0Ak6TXGXKfY7 zS@%^Lkkap09ZR{2ym^om5amo?pJ*@D74#uSow9g7?&%;;Ba?yJ~dIneN2r%Q_&>$A78H4ysUcB(wadfk8l9UjXX@a)^&obJQ&nIzMj{?agaI`$p0E zk)lRc3YCFrE3{n8Tb~~`x4$Px>#iy1-j|ve_{A(|dLqZXv&4u|>r%9XOOaPWR69Cc zwq-scV?t+b{sbF?-s|dSuH~cKrZex)J2(o{i?Yrq9mDC#!&h6Zd}~U+xv-WRl`9Rd z;jaCUu&TtBtxGZU!R3ZDNIK+{n!W>ot43y)yyJ2-R8sv&I?@P)2AD_RdBl#)ZAY0Y zV-h-Q@n=4di5wT5Rp)cEP-|VV&X5gYWYpleOTNE!>tG$!n657lq9^oN6+S$@Eavl# z!@M`EM|}KaceWc5%hodai|520(Zjqg5!Q$n-43SN?O*4M{&*@8aqr$iTaD@ z&rRNc)fe-5pa~_3x6Exb@u!68FCjV~+1}`UH%2otwYWdcopN?%s#zhQl%+ex)NZ0F zUhkO?K?Kwds*iDD?TI*gL0u{{MTVT?&HYKEgxXyVe!ZM#OOCN67m_h+evF>)su_v# zy9Sj!ds+-4?B{klD+MNux13!v4A%~aq_kZTZVY32Rwmn*aKt#t;j45(ng3|U&8_@Q zu~#v`{5F)#0z{dYwd^exNNahUS|=0D;JJ4gpF#PaesbOPx7t$(&;nSg3<5DQlB!ss zA!S@ABaKxsyLMte;Yldv>@+It4aIEURw0`$sQ@zcV6=ep4UVpc;9F{8sP45MzD3l! zh~No48``t>JhgxsP^#HwfZc8alr8ly^9nVAo@h zMsES_j#3Q1Ozu#l$8 ziI2K-&+(X%bUMuxW@avxoUA=D>G0#qiO4z~_oxWfmaG|)w>M&GO$UST4VSsACG&bS zW;>Ck!u-6EqoN3c#4#gDW1Ca^e30mL3J)fwHdMr9+>Qm3VXVm@zakjR0(32_p^`)~ znJ6+!{QDH#N9Zqw(Fk*ACW{B5Y{ovq@J9KbXTw0!!G5dt>zTN5;|B0JoixSgsHt;+ zQyG*7d>MFpSnN}+9~rk%=*N1GYhc1lpFbbC0*kA$S%&vkPV$4Qg)}MxKlA>{aml=U zCtpdJak^$NpExo7Eu_U)cdraZ(wbPv*K)1lK`^aOsfU(jJw^#P^$6RThw;@O5Z#-p zT$@^wl9bH5FjTf*htPqR+zS^49+k*a@TJ*O2XMpd*IZgtLusc*f!YsX8qZ7lWqnqp z^8OwUroxT+zFZN+Edy>3#JYt8cbn^azw!Kttg~~8H&HRAp<~-?eKP*lXT*V<9|)=V z6Q(n+6}py2I_Ls!cU`Fq?c!9 zP=l#fUR`_9I5(C2{1a{MP+78)o_*KM%W*MI?5m%PDqL}K%`)d7%zb*P%~(az-cq?> z-1UZOc{~wYw-aA^04^X_S}Yhqm4OI=rAF$$kK33XsVs;0i2~P11K3zF^QSLdzYTm_ z5tIftx~XXJCu>%HbBlJVIZhzIP~p;@Y1gZ~Gocg0Us<7Ca!a2{exHPdvrME+qZ9_SDW_aS-vn2Q$MBt(v{tF+4V_A@+ zb5FcQr+eZpkIFUTjG!{r_7v-l>Ao%V9P_bH;o&TU<#6*&8PV^QkI(UxlhsZ@1g=b5#zMicuLE@zTy*b zN0@?5kWstjUGpwD8>K@KI}FXoj|Q%}y6!pwfjyzES7#f;njmniE2Vj2zR200SNGIo zdr_&Wa4RoGZ8czUdwt^#8J8y-bTwLuCy^bd7E_Ilq_0)as2LR6jGuYIHmsi?@buOZ z;-18$o2eiTNO5ym^~=iaItHC-KD3wLmF`)Tk`}K8&n?S%ro6&Va_iO_hHf!OmVM z|8#2@)%+W#`@6(IE--Yc{x4_5AG9|&V#fG8c{U8>S>RuKz(4r5g@sjM++G~uRxf2b zNIhW0QUC%ql*>{RWE43XG5^V|J1CC8SBA8Zh1c;yjjKgaI z%3DxS7u0~_$ZzB0Z?e@g73nPd-U)*W5k@=TpD$j$w~Z8C^b%mo5502b3fMI%v2Nf< zLR@c_{duAx1%^$eV2D#kXmuDn5H$)Nu&Ux*=l)>Tk#QP29SzM46N`)1>@Wf8{g&Xt z5bH3~z~JKQih>3cxJbl6ktLIa@5`63X~C&GJn8yN&l)2(mb_PDu}DJY>t(x3M;!9U%@SVl|2 zrmGE}Mg_=3NQElc&&EDlg$GSDef84OWnEk1ZnqY8aahf5Cwn5i$7ddR>W<;gqyz`vHmyW&Y$N2^V=`Q_CL6VnqRBsKMH(A1N|>`EY(3B z`|qB$1G3|PdIq1t|H#p!{$u4U%Wgh-8exxZ$CCXCCtjs)EOq(Bia0zJGZ$rZmx-?9 zQ0(8;$Zm3X?=X4X+sM1;LXLdyDeJ1CGfP^;>dB?$TAS^Rd!m#t>Edsq==-Q}<#ErK z8MDs3(mPENssX6P+3x&u*?3-4dv)1yvwE!%Fo$!#^VCzx(H16Y43`Ion8W>jLC_km z0T?=W?i{B}$IOG`R--5h>ZImeoq#WIHNR*O4FpXn=U*Vt-KIBv2DBI zl1(;p`$J@hL`Yo~DQc?eyK*}G4K;PseH|wl;8~eR7TQWD!Rs^;{>Ui?q87_QBDt;8 zYE8W7#r^{NN#Cih!1=*dNo-M6wR2=zYfSR<=SM5s3-h7XC4jJbOnb>$FX)v*{d#s- zU8hpKOmt>WwNC1Y`%Y79>*#bFMWagV%B_5(*``##wY~R=+uP;cuIWyC&9S&rQnnat zdlNiu=%b~;NOsStBLVkaC>8d)L3LO8st#@(tQ@QVU*`-nw2_zZ5s8+pzw;0A=cORC4)uR1)U0KVIM-O>maw- z)s71ouS*|0ew@+bVF?sZi4?cu6;c~jR=?!8BGrHCtV@;g25WbQhE_MKR~|&zwcS%} z;A0?}AC1^{^X+Sb9?5qn@6E&NJ@H3T`yY&96xOSsuY=S$oHj3)&#|z8Sg;12&RI^5 z2FfX?UU?FdA{2OcHg&l)i)78L_NnrvK0ToY!HxHp;VluOsmn&~6>H)Y#DZx9>=Yu1t6^d_PU1_C;G)~7^%!^_p+gw&xAb)9udqcnp(wsiR|fe z640_Bn5E;npge)+?(h;iS1HSUBJcE8Fu6JGP^lg zr5w2IS>9Xeu?OC@Pb4fm6VD~5nyyI9jwHN|JJpajncOowml};ydL4CpF z{<9GhZ8|gjdc}?bsyVy5V+KO1Rl8db-+x?o=i$=U$Tzf$94C0sV{gly`R?8IHDIbC z%0#gn2ZBdD8PUIS+iL^hNC$+K4n48_kNC#M#+IQGE>e(!eBn9iC4<{yFmSZwJPeGC zlF;LH;~HZ?rKFdQq1TcS>r(s2E#z155K>p3dBaO$E5deKH}gx* z7u6@Mr&QJ|NtUI@F-pPQ-^V8s$L1T+`*SRsmAI_+_*Xpz-6slmd*94Upnc~UUI!N)wjS$*!^cEc6_c-;ZJ3>C-g{iuo_OfMafx)~LJzD$NEdXe4wu-9 zK==1MR_no{?Dc^q_2@%Kj$gZawa#d^*V8NcW8J8;t4pR$aMHkbJ?TNCpXG3wD4k?D z*Y%tAnew?w;W?YSQq`LJv4Gstw%ItlI&xG$*VNQZ{~oVy@%Ska3JmXir5q%ux*9Fh zCuYW2+2n}maN{TWUrCUbmeVhu=*yLTscI>d%+zbm$6!`(Tf3qi0!TzG=yWF{XxXjv z|0QTqErz5vO|R~c20b2)WKSm{4y{Re8B+s6d9c{J2}kW-GCV90y4otV%<2zL?fOK& z@>j$AG(b+VA{z?qTgrz+M+`jOWbojRb=i^F;r=6H^+@??+^VS;FXSZaLqrK(CDl)# zK8q#ye^dBB)!vc72tLoT-hQ}oHBBZ$_R!uTIh=r>gXBbLbTnebTRygBYG04f>$(tC z)n{`ToQ{?wp2Ep|%JM_8M`J7Pl~nwWWm*Oto)t3oYj#{dzMUxUYa*sG#)Ed4P1oLu=uefmADSqq?qJ2ie_nTh9XA z?2o^gOTqI_PlvbC%pKQW;-)i4&S`}@lT1ACsi=)VM50z1Zb}edLCYRK18GDuDrsUGUFDDSG{>I(Z`}=IL{7h8*gua6_^-!I%ECea zF#iP{EVMrbsXq&Ue4uUsmEQ})uzC(7l2`Wdd8C?6Q z{?jqn{$CvP->+l;^ExsAxt{~f1cMPQ8Y!eQYnRrW-Je$Z(!Eo8Ah&6uOh)zdu8P&YHwo{nh6yH3HZY_IZw)iQ{cQ+|u z{qcbE5v|bBbn)5EMfyU@#rhk+))cj42z4AcJSrbcrlOo@@{-GHvwiw?%!B`_N?3vk` zzgGg7zIBWKBWo???uDC8IfW+uYOa_&qLnMEM3h1vUjT};a#Afy3^QgLE#0pa+){h7 zzN1UNq1#pbEM85%t^j;K$F-)`XpZ%9IZnHl^JR}`Lbj_0JKtvnApXn$Gm8==q|!%&`xvun zJJ(`sAx`tXy!J$%(2IdiMUHwYeMOJ?1?=^$%nSES-gxvmjPUMHwG*t4FRYN|S`?>M zX-MqNRCG;_$Ip!{46>1^Oii6aedilZQO}AXt%!Osm=|#|u=vaa>){S2Htx=Z%QYN! z+scRn>2~D!MauBb(0@6Wkdg-4)KMCo%K1|)^8Jq{Vv9yU(N4LmR6<%9=w2rlACbz`i}Q36>9TRkD|Ks}P9M&OUDIgP&)sy5nDWscZD z55eCPgQc99wvBd0im~x6N^1LtTb-9UsjS@ss4gOnDCh?!bj>k>-P1N-?;-^U?bg-~ zImN5-p%RyzfW7_EI*}7Z*DjA?7?rag>d=GB2mdsF&xk-dWmH0R`3bFI->x6VK z=tf2M03pKq+jvHT3V2LpA zGEBpz=W>8`Gu{2v&=?_9-L8KNnY-N9^d{JLDc2m0la#k$yCFWN3j z%>|XSO_y65J4|-SOh8jvjb>Pn+G4Nj{AKgdRj=w-F8Ri7ST@p*ugCaehhvDt$byOm zda`s=p#|Bjy<gFw@bEFJOHK>?n(N*8!xb(f*j`-1_zIp>mD9Dw&F=%~Q4 z?_j~MExrZBEn?n=Z8Nx5SV;YVG^Pd5c6nKukB^Tz?CHU^a-85|+6NJ#dml`wS^umZ zIR2;|Y$Z>N*-jL>xw_2s?^m<>60@Wo+1W51d&OL)ui-{ zvD1mSLY`HOYM3mr6UW}N6YHpaz60&tg>K}azN&(K9NJcsfVkA4 zCn6$3w!ndHIXa+)pSm>mm%`$`r`6#2^1oVV+%L=h(K>S_Z1l}sqvd`&5V6CRcJ7m*$v-Gd$-vxwh%P_do@HkDtcXF?e&i=pL6W9pcpG`d>^YqrsFt@75IQ>u5O zgwoEE$7_5NCbKQy#llrINl&Ip`vcUzq6iDl>{x>fBk1KEt`FaGS*hnl=1(ygw;1~q zGSmVI8UW)VL+;tNs$myKV=Nmz@xqT-C5j_%plHprcY8*O9_rqwO(UL!?{hN}(%&IX z+rYabM7UT0nPKG=|D{W}k!^X9t!V~YK-A1Zn!bTXFoRxZgioKD+3H(zcB5ZxS(sB8 z8g!aYfr*ZWyJG}+OZp`~y`+Q(#H6`)Ymdg#2ZKVC`?-kA;C;fSTBudJ(W++k>y}Zx z2H^nowPE=eN*!$i&DwFSZ27oR+sh(Dhq*icq`UUoRnU6r;TN)Pg}o?R_lZGn{WQM0 zk}5rowF$Igh3rMd#8*C&dPX`YPg=c?6DT9L8_Y0Dec9z)u^(_y+)$&#mpW-jW}|j0$<7QuNaR z_3AGR%jrX#e+Muv-C$A-xX50|TMc~(vxCKp29{{(t44OZLiQg6wFD6mC!{3fFF(U4J>3qp7_nw1B+`SC z^qApa6UN@eZwZxEv#!HJ%p@s#7;*M2i{!YKLas48N~W-4d1I}k7HvCFvhh@mbugRn zq(n$c6y4J>w$E}~Pj~GfqUH_OcQsRoXvX|slLc{8&Aoquo9&qK3|ihX(JrCQJn-$g zeyJH*@6sx=&!x?@t6%5(qi<;I@@x|fPH(RTb@%3nm+fX<-*w4%D!6Z3SuMrm%R~?h4@qaE9+${`m@zWY3Wk%bwZsX$^>X)gbg>|BAp*EU;YNoaV;DTNHhJ90`N=s z0>@>Uwz;|a5bM4%>;zFdM%QD@5Y#mp(1?0q8D%%g!47_KBy`u*^R~hYM)oNRXW5`a z!|rAOK@U7pbQa@(bXXX+_B29{PQ0ZNyN!{-? zQFA;eIp=xa@BR177#Yz}_FikxHRoNf>v!X=RTwy+=}K5RgTjYoI$0*@>^fgl+m5#D zdNS~+E7#-~uR#&6FHl48ZC7ak=|x)pju(GcYxKuih~vwqvr;pL`cBiz$EIJ z&X#}>2{q9|aB5<4P9NBz{=V?u)rc4906u^U1Yw<8j@@twX^z3@YYb%p;ZDB&K(0!G zR5!t%Y&t8?2#DX= zy4{w<%c!U5Bw(jZ!s2=-&IAxlJ#lejC2V45A)nQ;)-_>6YLN6W3tfC^&<^-TvM*<4 zz%JjPmoLvaU9@uWGek-zV7F0GQwOr4Bt3uwglu)T;b2$6($E#0-sHq`%1_0XVi5bSV@dgaNG1QH?BzB9k?JaOk99xkm0!rUQ{D`I5>ohOeh zVi?M_BCl|_U3R(%t2g?jX7vD0;k`fJIpend)8+{}#T*->?1f?4*XYpGLB9pYle#}) z%Q;-WoOI~Q&$B3vdQ;VU^xj*ZzyP1)t>#agZN~eb*c6_gTbvI(vy@WgWW~A7wVfh& zXW5t3fPm6L1wJ00HYCYVrb`GzdQ6Ug3k}SGr02 z;pV}3WegCRW4ZICjw!D8j?DV)Zn;4hW*3VvUWaGXL|G6r> z#ERFc=*j)ZJ(o{2s33>=B2-l@dJ9EZOo9ornDcxG#KAM#rv391$>UK4(Kj>25`Y z_;FxDk$mhw`o_MwWH)tA{Y|48wK3>gMwS)MfA+*<7zdz2xVWpHKS9tEbm&T{uO9~| zK8~q+4gCZ>_2hKJ`4%^#0{-FOvJGF`(w&vd zDELzXGd|0~=8U9vhhAnB?bRT{&9VG&6+onTK*9zp1UvY?FVL|&8FW)%&vIgK!SWz5 z4fMQrVkev&ZqWek@auQJziG*NfV7R+%aO|h)}#zzC7>EsNZ3?B*--*e)SG6BD|6}$ zTOZBG?(Udv5*{0wmu}H}_QTj5!AzS;^>u3mb7_4P`6QHsM4VfHawowaSWizJoU!u^ zx94lmO^<3o{^9i-A$Ko3<%m}`#WP78MuFqC56&HVAM$IDYaU!lWw|+pXO~e!O1ME) zgqh7o@&n5PwjH+j2g#?TxENW)(*N2i!7xpSuz)wT0nU5|9=$q9hWO5v{NvgKVqR8W zd6q~G@FpRYG1JS<&ECRc$9dTe2@nlEP2MFV$zR)f!%)rJKQ?iUnYxLYs>n2SuH&;G zXCHJFXU>Z*SZ%MZU%ZQLN6Wk7BpQ>kQ6w@JuXi2bvy;mGY9~yZw+0I#{chRqeNh09 zZ5J1(NEObo2QgJyU(OmBs|*rV9L;OdsOl-(;rZ&pXrbtQxzIz zz@?QaUEAXy{k-Ug$#_p>`p3c4y6nM05EC}0)bwzuB_+tz8&h&BV@i&DGm9z{g(GNg zLhSo{Ng7x&_(4-mf#~+jivoA+^)R+ZxbmSUreLGRQA#v!1h{VpO7C)_>o10lS#?4PTV@?E2X-B@j3 zx<3k)6>TE+Hhu4Z3KhVEm2~EnOmpsq;46MYKAcZyPNUb%cj^7*f$D^`&)L-sIiZ5) z$NlH$BipH3DplSls_ymtd@g@_xygr9;(>2MrNx;Mb?LpDznfuQx4QX2e5~ZtJt=NB z5v5Njv9g<)^)!+?l48v>K9?3P^mB_W7+_uOYyMZI5>((%!+p>tJYJn7{r=yF;2`=pLfJ>vuNAyAPdaa-4i+vGGtHfICY05na_BBp*ouQshrMZD8Ih|sA2JN&(3Ql| z$|oE~F)i~g4s74$EkKi)aLiKz6q#Ae`qRmcR_!^JRqotI!x5gdoE+-ePreM~-?+{< zT0vzzTbe5Kq*eRENRLW0MZ+uQRl8Et!Mk;Zr?-L<_3jS~8m77@yFhW#pS{?BCgXBO zK#q;`QEaNUNU{M$RD~VVo2H6g`Hh1)t%leV(PmB{*``-M51#h8uSA75Ytf%ih+?paKQ8Y|ZKAH~w=Z+D{;9Qp^e83olrE*@)h1z^4>>N( z>e}~LJn74f(qNO0w3zMiRd(lTt!{hC=Is*m`)e21llCl@g|oF={$5nzuNwKNEm*4( z&-~{x*z$dYoHLFHTC`Ws+KL;NJX;LmxBp36c$s??GEAd236Bl60B$KgzjZ__>;3AeqW#qNf`Uamw`4?Jjkrp+Vb7Nm zHc?^W*~gi=$TNwsagpMhs*QMoA6!9f5(9pt%zIC{0qcGo@VGn`&c3yj~O zX1dqvFrKK=n?jrnT6-#c`nzLZNO%|zvTCa)*)dB`=SX5Rl1SFdsmP^V@K_%RhLKls288y;ql2lCRd*%J8f%~5Ge2j@V+G0$%O zT$`0EzwACM%%hv*GIxKFuA)EnC7WkTYgT~rePP|wn)5cZ6YQZ5kejM2D$-orcG0Kq z5^jW=@ANf9toHkXM>Etl;@y?GatXv!&)BIPJ{fb{2X{he* zlw%^u|LpNDTf2A~{(sZ&&rk|w|18Zd2#SyR)@k$5RbTHr!0erM|AEj#eT;z~*IXx$ zw6ZV{?PQ{cqREs_UH9O0V$X6WhIjp(ndvj1@~47J!pstlA_y4 z7u~3xneJFGGu&9f)nvH1?ESAeO5>pwD+{_>C5+JiDM_1<7!RTbK_H~IO?bv4LJoh_ zY4V&L7&Nv?k987I`iAWZ*}q_YUj9{EzHUs#D%v59h6dr2`mXaIHcBfONy^a)7<(z5 z7Haz@GH9l`!9djfku|L6Z*Xjh-QcPty+7iXkj~YoQV#K7N&t+DbZ@GLKR{I=EG%1f9c+PtzGqlr1zT)AX{ZAW&bnB|LU8) zRL=C@)D|26#>E<%3mt&ZktMbFSDw)pwTr!sd%3$yc2RpHW4*$>VI%JFww?@LsGTi4 zc$P)Ge02d2z4n!G>-_53{U-{^yj5c5-@ISz_5auUjenJ5{6!S)nDvA2;=86o^~r0AbyZilCMTnC?AP>DWP99cW061pQ;tdh@fWuW$Nz2C0HVl9+Vt<~o7# z4wSQq8Eh61`$-f{1~CbQpto%u&{HJ82=$r1=?>QhKu*D}(?N~7u1U^q_13?*iL?G= zIwRDI?5jR)Zd0O4l!wd)>bI|{#lh56$uiEpP!X0Qz!l1w?qpOS&y=Vqnmag=5P&2} zHKBi0%Q2FV%0feZPR#6qr?pnU`)OM>VG9G;d_n`OpVDp`n184)EZTWKd84BC`SJ5l zn%7%wcJ=tlKvPFNiZeLf0zr<>_(HSic{hTZUj+~ns;TL8D31zTF zttDKGq}Ztbl2RhcIS1!4{{Rpk*+{3)H&LXEL8f7hv}G1$Mp95Z?vMC1?%FC^@Jz?P zFJot+&sGGxk#N@Co}+m7DnTcs?Y}`>;*OiSHte)Zj%Rvxt<&|wY)7Abwg-XYdZzXvpLL~^jPU}q0+SS{M(+Dn)LjeZ3r8WZ; z$6XB{lC_AU1@Xd!&S1^d!98Kt!@!|>9G0?&e*&mTyJDy*O}ilhxG6w_Q!sks;7IYx z#_PW@%dZ8mZso*i-032zGStueEW;j1R%j(^B?FIAmfV^>9^Wf6$^n2ivYSk@!GE^^ z+lBWc^e6XBCp#B3g3F97Vd`( z+-hm9Eu{bYEncN#VOe};8@xyJfjFinTzRv7+qN#0bTGbV39Y4Z?AY(N;f1?;r-M86 zS04EJH{q}|U-jL(^hY^S>)1+E83vOaumB{UE3J`qUw)vxVv`^nyBga=U;pOCl$bF~ z!Xa%d2sPvtACZ4>WVM0p(}FnnT;aO%)H~Yt>6CIcY5&YP_YpR>(leNuGfEvx$K>y{ zNx?H0&wTasyETl(frZ6>>ma)k}%6fwWs{)bPHlm%{ZN|_H!CJ z1(Zs)7BhpdL`at|N3xdD;ekh;aWD^WOf+)!2H z#oTvh0~Qyp185Y?Q)I`rlC<0Y!9`i{@?TV6N9jKGdm@ca48sk|J?hImhUQg?WgqQF ztq(YfNm|HLbS>(69+JJa?{<%{b$`&d)K{1e^7&EQNA~v|4b$S;#<{GoNXfKR54Fp8 zsBNZ$gf<9%xez)Z?`AC&6ck{Ndp;Y1x@#YvY%1z}L32s)*TBgqvnDhfG|~0LEDww! z@Vh;C=t|*zAURRstHDP45Pi=+QmH4DE zv=iafrM^`(UW=}OiZPm|{OG}eXz+ivI>Wg^4DGA~J2q^GuDZWTC!0;0=F%;n zGce5_zVqDgCw3D&MrMmMyDB0w4>hScsBPt^=!!V^$1-{8q}sHzl-+tK>(}s+FZTj{ zc)>&=m7}TC19^$|x`dL@W~+G*JD1ku!zNt~Uq(mTB6H`bYsr>zesWw1dh9(<;-waj z2((;kKDVZ1H!ZF2x#ce~8Z?Oczmkk8A@ohq z(o4~)MNwE4w-Ax|ZfQ~lMPDD>D$<_g*75Gs+lG@p~eB~N4PsyxD^I+KYs+hkscE?T04!IKGRPMo`6)vH16i*0tf4^a5|#;?1wA>(`hX^ECRW8g#k^Fz%Zg3JX@2k)>Tb= zQqeY%WBB6kQ0*+7xn7yC&b50mRIEu<+o(21#m)6lVqx%L?HFqk%6<@(DZ?V9m2VtF zN})-7gEN|3)%ty6oIKgJRB9|Rf4Gp>D(?kP0M@K^=hv#`rp&gXMg_tu(~_4U2l z$kpm}q(4uzF3!p-8MS8el&Lsc*g6;7yShKN)+71C!jFvIG_%-jlS~fPfSJL*SLeW5k z@f;`j9wP^^7~*M=CMAw zu8b!5|dS*8I?c>!AlOsdPTC;;uu8IP=f3HL-3-id$${m;-P8?o&iUxqX>q^=u z`Vi43>SRA5eo=I!<;g4w%sElR%nkI2kGal|xf5p&dZU!bnZxDCX`WgAEV75#DUX%Q z=C_qynR7xOr~P#9>ghRiO^(SandQ-OneH-)3=k@y4?#eagvSU1HF~k>pe}Zo-&HAG zm}+sAsa)!Z^_=_I(esag{No<1FoxxK>RLoMkoew`_N#0?w~4}cahWd>Igo#dtCRfK z&e}Ta2F+h6vbjnh&JY#ukTpO# zYtU0k<^}vEQ_Zh~3+4N@{3Rnp zdwqrnnii<*6O<$f_Nns*t2a$)f)2PuhSRl;BV`iTGMo&LhR=WGf0gX0P0iUO_q6hs z9lgy(mkScEZMsR4{7MC#aZo>VmrjlVoW$4`+TL7 znQJykh4NeHG^d-URDX_9i!zRPoE%C4j)I9fsED-uKS%$TsGk``T4BL@52F}scS3Qr zk(mkIfU7j_|D#}i5S$s5ylO5v4x}0JPEKYf)#X~aLQ5h(TcPmyMtchu&WFxdTsHlTeaB$(u z(aA~sq)GYFf)J58Yc9P5@UxyMs(7~K+5BMnUoEO(oKKz6!N7nj)y5J_`0bAfT@;Iw z2~6s{dm)nGIsx;}X?N_^txp*z;a)grMDMy`7p<0j^Ik^kNQ!$w%jfqpmcFlJ`0V-x zlIJ_4ry_lngMAy=cL$_0U0+PC5xe+7T~6z<_FUD$d8wOXwSp$IiAZ^@L|?VM-}9dm zrc2M@12C={(M?oJdzz@03e)Pv0f4Dg4P!W(3rG9=*?)fDFM&@k=RZy=*j%O7viP5@ zqbpWf)sKhS#Z}t%(oCo*?$kGHT?n>qpKKIqc41Sdr&__d@vhLHl+DY>0{;h>X}~~J zS{yVb3FxgeF_*2+{`aW^392rvp-E2{TC)o$x@%s+xVOu;fA$8(NyS+Km(|~&An6?n zy@v7~SVPlAY@dqkJu56-6O;5*H;YHtQ*DZ(-;?<7&85xmj>&HZF_0!Ugzq6y6@!YGSZX7l^K2+{Z*KA)4jyI+Egy8#*NO(-z<0M0t0~_bu{AQkmJ_T# z)b^+9o_@!3KEL))Jm)VOW|z^|C)4Rd9UMOQ)I)!?#^YC?uEbuUVfpZ3pD&a$ho`Qp zZ_-vot8~@ZiSBJKWE9=TfuRfAdb>UAe>|067c4n+yxJ!BAeV zlaCI8B}K>$5e_|!1cqJg%j()CK)OLF(1a%FQ+|^FW0B@^b!`)vC1up`9N631k-Dal+O-X~`(}fTgPdLq^BmRU38XDeNp|O9+IV;0Uu=@) zQ60CbS__;-G#Sk8?P+)H7`wy2%twl0I?fIHe6sYw&L2Pu6oT<=M0kk99%6d<+S{1;myJhNq_J6zq{Ex?fBsUgJ|~l~^C2P<26G<&@&5eC`o< z8l&e7)&!A8Cd9}zxfKy0h6@efR*=~s#@dZaC9RJ61KLaDSq;m^3^+x#$K!l z5xfxeO>A86`u6t=-QqujIj6qxw`7{B0sXTxwBsA~C;K^mY`k@M zddnTV3#JFh#0xWx$2MyT?sRy-Pbt3U=sfT1AH8*$qc4NO6TVvQLe{){_B$!jxM!LT z;bZ2^8L294O#*tCD4YvVM)TPE-9H&5s&BjS#P*1A#arM47FC8c3Z3V~^G6GzN%=Og z;PHCbTUJw)vmklabxB7W*WO_LW}xhUHA`IwRuLM;7qvDUiH1K-DxNC7X>wyY_e{aE zC2jC;IYj*-1t|D&0cCTUz1t4ETj@+vU2xOfGU@35%YsqQ&@XL!bS5bftgYI9Sjt$6 z!9D<3nz|?rQg#k2CpG?}y~j7hGTG1`UMzuajMbI)*FS#c-u=gFk4+<4+qFWZx$kBN z1u}6bpSju9Z05%qn|VILD5#}j2frLwM)_`j>xP!L){Ade1k;^g`}^Gv)`gEgseyG3 zyuBrP5u%kSG;XeR&@bm3`(PbTi0>N?ts)J8Ln&5_jHfmW_uw&+T;IJtDzgcIqd(@0TOH#B1+j;%xn?^Xs=Rd-k&_jeF5)yI&7zG@GTZ zzjJLhs6IILhVMFVyG6QMsuBJp5XnaL+49$ znZO%z=;dV*Q68kk$NgRA$D}aiSq-}lnb$ml;qn8Ii&<(>IiM#K2tvf1bBM(TY44lb z+VO~r)nBN;uR-3i$cYJ?wk)gd#X%7fE)C`Q<^IuN%*pr@H6jG`oS1caITG!F-3Jbw z#7p?G5f&6?RF-pB?jSP&$oy*5tuFDnMjsOR`e{vHM-?4{T9(#ZB+w#nq`!Igw zK~xl(f}5<9tz1x0(A3~Xng=Mua;V1NBE!^C5G1%Ku*b;AObn~Nk6R?|PYz!6XcBrClOoKjuV9*Bqr4y?xdRI(ZT;vh`#5QXu?-7`gEf zA1;&h{t+pv zjqWtUYXr>(&ef-^4LLhlos!Y?ILzSfixtM>B}K-Haj`j~lfMIOd%=z^?(WRnHP_W> z>%V;2XCSpt2QbW?UYn8xd=Ea9oP0r7Kg`bDTG%mk@_5vyAVb|0s?n(zO z{la<~+c$HR4+W!BG#WK8SRAu$1BV{JKO+|M+3EKwx!K9N>AaT1MZyjK?sE&2!SiSz z>ap&}EQ{Yc^YplE`y1s~(RM9N+brvex<(ThulU$sZ2pqnR0Hny&RDC6)B>F-SJ*5* zWvxxr*uTk&KQ{2E8G-R%dk0}PjT8lbE&)b)AihN z(eTSXlFI&$QgP z8LiO*aka?-!CP$kbPFCZmCHwRFCKfF`ufhM>O-^#8&BZh@}Z6Ly@}&4@iRq21uij^ zWn7vQH-UV%)@Mkx4`ApG?LQhZVb$;IGLGfJsySJ(Ks;jF973idC z85t!|txh^?w>hqqbG)+GTt&=YFs7rjY+po>UyS7a!o|aF1_1^W&WA?vc3G=-bPr^? zv`6Fwg;`aN3)kKlEl|rC;OE;rrN(c;bU#H`*s!T)he0t$H1^%oZiJ79H~>Uv`=T5N z65_}_Vla%}m}e%Tq)2uLOfFwkIhm%;g-cJp*nPyNyX?Fi`TBkE6-%ildDHr6; zFL?GR@h9Paumt`_BOtZTe9Pl4HzxJ zK6oiY_MX0q>}-pmpkO{`FyJ_-#(d_*&jxUIot^7Y_RKI_W)xtx;~-gyT`8N|OFR?#zk zxSiET$skDgvckfHm{5fTyFUtz-RbIOlau262a~LAAKu&6t|icQI=R(O%eqj+-16et zrePYjB)y}luV2de6Ne~Cy8Hbl5dW-^x?-*bXWZK`A!``2b`7`XYM{Dai&zFzrUa#x z!TsmE^yz)>hCbx4_Cw>dpAJyFj&nsl=m>;V8GBD{6Yqr+Z{DwwpknZYU>DlXkhAj; z5fJGW76WNI@s#hlAvp3I=S z)E$tT>Ao&C&S;90cAzdM)Z;qrEe&ZG5qpMe|!@6OAYJBSiHcJjzt3 zwn#85<{qr~%?#NWcsUX78N%}Nd3@`0_hf~jiJZ(Y&jJd{)ir}hrt;#+0lLN!RnHYuX@aDg^db1s5!@3_!WH^nwZu*8J>fL>YUHx+BgOF-SM}j zZ$2!3&1C;cgeL*4D z?0A>>WaaOf^%M7ds5ms0gL!mo(h~x@0r!6AE7sGxWoO^odRdD+v19c~4T|0&8GNqo zIx#UZ2}g_N?I}HTw|o^2!@DI^e8>LE&m21OpO`xxDtcH8f{Vrm_cx|pkRNQjxt?yF zvYxMfNoduig|dpWO^B@!qG?#-;Ct*-hRxI`3xsx|2sd6sge%HX2RiTN;6mQ`h z;UMN918!>#%K1b>?&A>DuA}llS39;^P*tp2V|!#m(%IesKG!0v^9DjASxqg&dvdXQ z`oCP?))L zXzi02*$K(kg&gj{-RFUG=QudsDfB-y%xxzBJ(=vN&Au=mE7|VhV(SJ|Wx0<*JY+n5*?Lt5t_!1Mg)V#Eb`Fae z*EL!hyxJdz`xLC7V*KUN)*Po9f2!G8xL+0JLieex^$xwmT%qV-+m6%2<8q>p%m%J| zCZ+wePQ{GgT6t1;HM32w38peeQ|*{nz5jcpOIXObz5kJ_a^7uERO;e2Wk*khJecmd zEX5nEfN5Sa{Dvii#&eCG22yEjHc{I=+biI{ooA0^+2tX-T=@Ir;IxScH8B2RUws+g;a2+Pd2%8cib&VT{m0J;WPfHpq<8enh}J`$dy#t|A4)xR#phsU z#Slq(5$-QV(94#|zTde-9lhwAl(6it(d#BIyzf8r`F~GFD@eNk&o6&V_q|sN|4z|kH`TpXoPkl{2bkZKb{_)F8RRK4hG^G1${$sk|Kq>@?td}n5pXG^w z13zTXU*FNO61L}($SEh;dyRVDDZAgrC&x3^ z)K==|{1Io=i}Ao;6K~Wyz7+>Tl2Uq>gz85AwCnjyYoJ8jb8@Q{J2y7fQ;MK<|`8TUx>(y5E8c6JuuVSdF9QPbq?tt-aw z*mOQj8YjpW+mT}oNzjXWy}?|&k!nt7edVsBw7VZV#uvzac|CMoe&4^QOKXBPB9Xj^ z^4(YX-KYGLR^gtJ7sN*b#3S3C3vT+j&U?9Nwrc0@62IT8rB-3(_3TA^ z2xG0zt_$`JffD)Y4rg}R{_(5TlcyTY>4ywP54Np+Unh;-S)d zTt>NyMS(NY-5qeZrZd-z2BKYSh-7fsez5#6jVlfTP3ZgwGfAXKzB-SL=q;2y0*{u6eizlthD?=3eg zpP{e$fL(v6A(w|wsb%H)G~Y3+6V__nn#UEqbd&Id#@+7%Lc||ke{p2KA|yzq$+XAp zke<{Pnj*5x4U5<*WBM7LR*Z+F4`Uo^5QCrYUo(*6y`5BfxxKY%psrimwy#l>o6EsC*{UVo4zDGRf-ik>A>btU~A(NB7&GrL{0~)gy!TCyt z_ry+GD~kB)zDsx+>Nr2s91F`&BJ;9cFauC;W1mN{Laf;&pjQ{CyvdXZ;w;ands z)tK(>fy=~=>CMFdt{|VXZ{J;OFIdE2v3RqOl4o9I-;szwi)rIrVu+x(VgomGx@rHq zw6lzr_4G)xuCexbrw5p0O3if6PEuT9C z?DMO5>FSo}6Z%rK5%nQH)Hi@?muBGBxrLGj@Rg}>=f`7K*F}4KL6MIg2AM7Vi^Go- zb>mV{qcTN`WEJS3pX(y0sj2ySx+?o6Ar|Z!|1vqPkKu$cSQvfy7=uJRG165mNrA!j z!AR9qjdfLF^zv0xCQkE)1RO9n#a!WYVWWmia_)nW3}d6NzDt3e3=ePuo6N3Ksh?{y z*UI_0dgcoqp9st1jV|rXjLBk8rm1tf%tDuSZ%P|Eetu3xMN3_M(^HU5`Z2FdH84!J zXVmT6D%0PLSjLamdCz{Rel^r-6Zy%zhuZZ1_;{3!NNq~p#0gvG=?s@yO7Su`R}VxH zb|b9`=z=4SRzk&y#A2jnbpG5q!}rgwgz%dL70eEBqWHPkZBlNGpe6EeK|$gLcMcHZNvMLAE}^7Byy1CmLwOjB+uUZ^RxS?M*CFq!hMkH~5KJIb7IvJ7-@v66 z9qBSFosf{gB*j)YSHNLproV$xVOU5@)MOq zmvwFF%h0mX{*<+Cn+!`Ha%rV?deMX}O4K%NuB(v~XOBI~C9Qn?H~sw9r#JM%@(vG9 zhc_&$6dDeFY-@I&f1+oq($>`^v_;?JcWG@ylEZMs~s^j?wOGDg?S%K5xVj=t*D27@M%v5~z7@ztyp;~WTpJ6r_ zG_)_bEd|L)y!uJz^+=`il(uu}j$PltqwSZEX#c3M*gJX8;N&bG9;wpgN5ZyL(TbtXIf=C_`kkYYy$Qd6hj@neh+^>t$@&*izEABtZ)d$EE;E@b|S6V;c#vhFwj(N_x!$X;z- zbigmEGFM8KCx2}AALKIljo;PGJ6Hz>1%d1#a+kScub9}1(X33juNjABL_x0`o9*b@ zm-MAo;f*Sd#r#-Eec zEwGWUjg=3|%?;HOpS{!cc15TuJgnZV2;EUbktGo_{2 z&h83}`hu@Gts{1|jH;r-lAM9O9sL0-#`*21PLR=r_tg@OO9qQj*}sDTB~hV@g^D`) z!SkZU?z-`iF`ojf1$#$IzP(M)1Uo7MT5VB|3D&{8!b6@vJnx$_rPTrKVZ`9%5Ob$* z=4iaq*F|G(Br*T8pn_S!PY;RTBxq9>>qLI<7h|N>n6mLy;k-1HYu_;TzQqc zZ}PdTM;Yk)T)lo~c3@tS^NNg4xO?|5$H`Ca&R(lm2;Z{L9uUb%+Q6OS(U5I&|4?Sc zpivKf-}QXYP{I-6nxc5;}^+Qr{1?^NVl0H@mI>w9jNIoIknjTiVc*IDPcT zVEf#lLS8-us(2Az$?meZbw{+nPa3GvZ4`-(~&Hj|d>w z_|{o02_Sk*D8n%zZJvsjwgJ7g3ZGx*cYMvG94dkQpx?A93Ggz4ZvZv{Ef0uabI#fE zy;o3L>Q0vMhgRebk6!8xx1X3FuOd@Eh;cYpAuY4LaQBhq% z^VX8bF>!GnkM$)bZ;(D#NlD4jK9uhy055l9&QtB>E%bXWdZ@=?K@ei=ZUhc%q!CJHYZ_@E%%Sex$jWDUD+=4Kyv*u(=cUHp zB+oCFjCfU)j;`OneVa{OTs*Dw0QI;*dy1O_uZ705yt{(s!RW6^6}P^5BdbTsyrgvq z!lTi6PX*?nl(4WKy!1%Gw2|PNgm&@WQ0uvR`%ee^U@B#{mc6v;URb*?8}oqp%w&pMdpBzxC26;5N7HxDu1?t z-ZOn~)qYE@|Jk7abLCKBoE@P(L1^Dy6{!z;dUJtuZj;}dOsh^wLYdhi8+5zEpcXpv za-S|bB9y7Vcg4xsnI1Az9NB$vavBuxZv_fPHA$TdLOIfR!!&tf^s4abR)q{Gpu#`} zRKX^tHPaYVUTTom-I%DFaK>&=+yM-s&#@mR^eKV@GN=e4h$Likct6=95f-5pu^0t} z(47?HiHjdyzpmloWJCalm>yL&IL%PtFdhqgi0V_*C7KY*7tN2)x;H(>6P#?fCKLt`qVG4>LPl zw9!)~RTrBtpHAmP;!EO+oeB}Ac6>)gr(3PHGR?z*PXRG}ItglO46Luqw(ebO^N<+^<0yI#5p>XR)Qvojh0v)`Oy?DF21x}h^wvqNZCQ=zA zV&~9Gk0;0{G3Qw%%Zk{S6Jetw;52U*Q7vN7h?WjO|1O@)K;u+@SREmH8QGL7etkXe z!@bc$O8e06SkRQ-LMCSe+dz}4Kw9U<9(2J~&|WsE47)4(F5CJ7K6I1C`56=o<+Zdz zu&Rh+jG(SAlQyq$ZLBxJ?wk=`mg0tnWuTwmeWHUV4RDe!!HC%WK*1{OEA5RVdnRtRO&tleo7SrbV$tfa6%A&f4R@OEFw<_b**8& z!omB9dVp1vVs)PI!&ytz1LO#Tr(xX2id!1wE_D}q?>c?Q}OvmT!`;vokS;!O@Uhc}y)w@vOeic2 zCFFhOK4-J=VRGWogMvpHhQAD_nTt5{E6`dcLzS?6hc7lPa?s=H;)V zU*2C6wtVk~yN4v{4vEIGc2uyz=(z$n1iD{p0bv1%Vq)NVyMuASy<8`bIDBSU_Lk%` z!*vmx5Rg}#c+LR-P{Mn_+S~{q1a2dF)DpEa5^)8S;JzAS!%l=_xoK=!)-oI%H*Wg) zyhAZnCwA~3OiYO|mFxzB2%a1@Rn^;gs%~BIoPf-apegW3+0pYb_>^|wPBq3v7zPCn;Zn_%{8_@)wYqvOw&`lAQkitkT9_55cp zoh(J-E5Mb|LCt{w+tc5B8JxNSAmwBNId(wxg-(eEoC@hUbg;E91K@@E25Enw8M-7v zIS3383I==ef!rrj1GM7>%v#beh>Tl3L3TT!yJV!L-{O;^1Gj{Dn1IeS zkXru!=d6{?HwX*lUr(F&>l%7;wz(JG2Y=8AYS39A{OH%MJ7dRI+c<28vpAHwXfK9F zR4*>ffnFRjl#FjA1U-lrI`_ZIo*4B0EFX5@{=Iu!(xNsdN(bz;cQXA5%$*uGTBI5c z5Fp|RxYgNn+CkIUII*?$;$mVShBV~1nd9nUNK{f(yoL7}i|vB=tqi1oe*bgdy&_A9 znms%`lpz4Ae{}jNmcKNzB-G)9No*b#78Vt12N)30KQzO>(q*R*kOhEc5~+9NqQ4Tug0>&OIkYZQ^ZQd38nr#E~W8}lnH zbd4zNeTGp1^(nd{fn3_^U@vIkXux8a#AMD;Z1lv!gd>ZLmJ^-n3LuA}LHV8gjJyUo z1}w2cv69uXu0MBMd+SFMm>7{?LWx5bqU+)~YyNnp2w8u)8Zws!K|g{2VHIFMzJ+7Y zzt`2`r&DWbp8baHeCSsi8oNu5j>1d=rhSb$wn;d6ks@>mv9&#hqYJ5#qATA8X&+$T z$eY8^OuO4$+V4J~&$%0lqbS@V9~dH=hfc~j0Es1qsiPG>r?YU|g)stRGwKgM2x)}i za~n9|GM|Ml?V~48fhC^jq7U8O-SNsX9(dXrq0{id$0W=q1hT;y^o6q_A&SED>H`{z z6!tV`gd6trgZh+<(PZURC_*q~2VPzK(mR2qXS=X)vlUW_w6kDJIeo80KjZ%{WBXnJ z{!>+__!p(y-+s%QTEOnmr`$R>=+5GJ9Jo#Ss>d!1jyO+19_Hmr0ZgKG=;mK1$`x%pgjrT%}Fnz`nm!X$aGtBzLM|({rvN+yx4N_ zOpv*l^9u|7mp+{m+U&ErccDYJwYIjFA7nG|c_a~{l06qEC&Cr^1c2iFqk&~BF-S|m z)9cTM!T}^+P)L=uw2-)63&=&EaiCKr;YA9h@l7Kj`9cte=bIg_{U4$9C2c z5ga09{vJ_0^~VI?#<99^() zuKiSOMn>q<8@J_TAf?y^w2m%D|2+1Ei zGHRZ@PghBa4kP-8DHG$5TZZA{PA5a4AU+3_tAdyu$^MBse*257xR3-9RxExx2H^&Q zA>(N%RkH(juo)5Zv+HcaW>>)h!TM#AWZFg3ectplV7<5% z;n}-$7C1k)+uKhUs@-7`chNyz(6P%;>Y~?$bLZl5pZ%jz@$D_y%AUJrvG9(tZ6aPF z1}f0qTwHRDjEqQS?0lSGym+B{@6eUay>jyM@38gZRB&oQm+)BzGEleG#_f68pu+CN zA|o(&9B%U+SA2aHd{P4f0#IKPg`)qx&si+#dDin^%t~iF{KCTaNNeRgW*{gC?A*u0 zlj?eVyC8`Z5n>pBe0h@$zD!L`B{473z3$nK2IujBPtzj0u{@5M<2F3`Nw;A&otz4*M?rK5gQyg}AIIEyD<@k4~+d?wCuy78w{AC<;U{ zzk`EAKll%>%?_yuHm0aYUDB}YAAcvQ6dqX<{MA1?SkF-!^xfKfhp*Y-p(Q~XL@TBB2dlzG z;t&jWHR86!;?5i4u_mKY5k4nk(9Th)&9ge^c=zwG1524CMHq*rgwq&2x?O^TnL6Yn zNb$y|Zm9vnS~VKf^e{qV5fL3GDHP$l1KX5bhcg=LqNHeXUY_S!KHB)WQ=i2i&&ohe zj3;ho61ot5piFBZzh+B7`I2DGZqP6%0=$VetKd&cbNOShH-Rsq0ljE_j;%?uUcT1W zty}%0as1(FK7kvj2%QNjaUg~0F^-@tVu8oWhi`5{;4+Cb72{Xsi5nV7Yg>eio7*Nj z(hc7pK|M|x!8jQNDhiaEP|9$j_R?c#>LZ?enRcnNWXbfW5dCkDKz!2=dhq}MTZktA he;Gaezu&rf@!!8Ny`gHEJx)F=X$kpbDMwCS{Xdwme1HG| literal 0 HcmV?d00001 diff --git a/mnist_raw_data_samples.png b/mnist_raw_data_samples.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff4889b2a2086e650216702d2c9a5e7e97a3383 GIT binary patch literal 14684 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 literal 0 HcmV?d00001 diff --git a/mnist_training_curve.png b/mnist_training_curve.png new file mode 100644 index 0000000000000000000000000000000000000000..a402e9180cac56376f3a9118d49c30dcfd7ba9af GIT binary patch literal 25493 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 QK0L#4)@)pzylQ*MZ)sNS-T(jq literal 0 HcmV?d00001 diff --git a/mnist_training_metrics.json b/mnist_training_metrics.json new file mode 100644 index 0000000..6f78110 --- /dev/null +++ b/mnist_training_metrics.json @@ -0,0 +1,15 @@ +{ + "final_accuracy": 97.63, + "loss_per_epoch": [ + 0.3116701721646507, + 0.13458229476274752, + 0.09866088936998665, + 0.07603465474590808, + 0.06262360995374626, + 0.051117253406061554, + 0.044330305361125276, + 0.03565888190077397, + 0.032375000346212914, + 0.026867984668543586 + ] +} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 2d866b5..5511756 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,10 @@ requires-python = ">=3.11,<3.15" dependencies = [ "numpy (>=2.3.3,<3.0.0)", "pytest (>=9.0.1,<10.0.0)", - "torch (>=2.9.1,<3.0.0)" + "torch (>=2.9.1,<3.0.0)", + "matplotlib (>=3.10.8,<4.0.0)", + "seaborn (>=0.13.2,<0.14.0)", + "scikit-learn (>=1.8.0,<2.0.0)" ] [build-system] diff --git a/src/common/MNIST.py b/src/common/MNIST.py index 2653821..9537d72 100644 --- a/src/common/MNIST.py +++ b/src/common/MNIST.py @@ -139,6 +139,12 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: if __name__ == "__main__": + import json + import matplotlib.pyplot as plt + import seaborn as sns + from sklearn.metrics import confusion_matrix + import numpy as np + # 1. Load the data using Rowan's class print("Loading Data...") mnist_dataloader = MnistDataloader( @@ -159,6 +165,18 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: y_train_arr = np.array(y_train) Y_train_one_hot = np.eye(num_classes)[y_train_arr] + # --- VISUALIZATION 1: Raw Data --- + print("Saving Raw Data Visualization...") + fig, axes = plt.subplots(2, 5, figsize=(10, 4)) + for i, ax in enumerate(axes.flatten()): + img = X_train[i].reshape(28, 28) + ax.imshow(img, cmap='gray') + ax.set_title(f"Label: {y_train_arr[i]}") + ax.axis('off') + plt.tight_layout() + plt.savefig("mnist_raw_data_samples.png") + plt.close() # Free up memory + # 3. Initialize Model & Hyperparameters model = MnistNetwork() epochs = 10 @@ -167,6 +185,10 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: num_samples = X_train.shape[0] print("Starting Training...") + + # --- SETUP FOR VISUALIZATION 3: Training Curve --- + history_loss = [] + # 4. The Training Loop for epoch in range(epochs): # Shuffle data each epoch @@ -202,33 +224,77 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: epoch_loss += float(loss.data.item()) batches += 1 - print(f"Epoch {epoch + 1}/{epochs} | Average Loss: {epoch_loss / batches:.4f}") - - # 5. Evaluate Accuracy on the Test Set - print("\nEvaluating Test Accuracy...") - - # Format the test data exactly like the training data - X_test = np.array(x_test).reshape(-1, 784) / 255.0 - y_test_arr = np.array(y_test) - - correct_predictions = 0 - total_test_samples = X_test.shape[0] - - # Run through the test set in batches (keeps memory usage low) - for i in range(0, total_test_samples, batch_size): - # Get mini-batch - X_batch = X_test[i : i + batch_size] - y_batch = y_test_arr[i : i + batch_size] - - # Forward pass (no need to calculate gradients here!) - x_val = Value(X_batch) - logits = model(x_val) - - # The prediction is the index of the highest logit - predictions = np.argmax(logits.data, axis=1) - - # Count how many predictions match the true label - correct_predictions += np.sum(predictions == y_batch) - - accuracy = (correct_predictions / total_test_samples) * 100 - print(f"Final Test Accuracy: {accuracy:.2f}%") + avg_loss = epoch_loss / batches + print(f"Epoch {epoch + 1}/{epochs} | Average Loss: {avg_loss:.4f}") + + # Track loss for plotting + history_loss.append(avg_loss) + + # --- VISUALIZATION 3: Save Training Curve --- + print("Saving Training Curve Visualization...") + plt.figure(figsize=(8, 5)) + plt.plot(range(1, epochs + 1), history_loss, marker='o', linestyle='-', color='b') + plt.title("Training Loss Over Epochs") + plt.xlabel("Epoch") + plt.ylabel("Cross Entropy Loss") + plt.grid(True) + plt.savefig("mnist_training_curve.png") + plt.close() + + # 5. Evaluate Accuracy on the Test Set + print("\nEvaluating Test Accuracy...") + + # Format the test data exactly like the training data + X_test = np.array(x_test).reshape(-1, 784) / 255.0 + y_test_arr = np.array(y_test) + + correct_predictions = 0 + total_test_samples = X_test.shape[0] + + # --- SETUP FOR VISUALIZATION 4: Predictions --- + all_predictions = [] + + # Run through the test set in batches (keeps memory usage low) + for i in range(0, total_test_samples, batch_size): + # Get mini-batch + X_batch = X_test[i : i + batch_size] + y_batch = y_test_arr[i : i + batch_size] + + # Forward pass (no need to calculate gradients here!) + x_val = Value(X_batch) + logits = model(x_val) + + # The prediction is the index of the highest logit + predictions = np.argmax(logits.data, axis=1) + + # Track predictions for the confusion matrix + all_predictions.extend(predictions) + + # Count how many predictions match the true label + correct_predictions += np.sum(predictions == y_batch) + + accuracy = (correct_predictions / total_test_samples) * 100 + print(f"Final Test Accuracy: {accuracy:.2f}%") + + # --- VISUALIZATION 4: Save Confusion Matrix --- + print("Saving Confusion Matrix...") + cm = confusion_matrix(y_test_arr, all_predictions) + plt.figure(figsize=(10, 8)) + sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + plt.title("Confusion Matrix on Test Set") + plt.xlabel("Predicted Label") + plt.ylabel("True Label") + plt.savefig("mnist_confusion_matrix.png") + plt.close() + + # --- SAVE METRICS TO FILE --- + print("Saving Metrics to JSON...") + metrics = { + "final_accuracy": accuracy, + "loss_per_epoch": history_loss + } + + with open("mnist_training_metrics.json", "w") as f: + json.dump(metrics, f, indent=4) + + print("\nDone! Check your folder for the new .png and .json files.") \ No newline at end of file From 8dfc12a1ef9c9af4ac2ede9d5b73ab95c957b6e8 Mon Sep 17 00:00:00 2001 From: Danny-Nosrati Date: Thu, 19 Mar 2026 19:38:53 -0700 Subject: [PATCH 2/3] Style fix --- src/common/MNIST.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/common/MNIST.py b/src/common/MNIST.py index 9537d72..c859d5f 100644 --- a/src/common/MNIST.py +++ b/src/common/MNIST.py @@ -140,10 +140,11 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: if __name__ == "__main__": import json + import matplotlib.pyplot as plt + import numpy as np import seaborn as sns from sklearn.metrics import confusion_matrix - import numpy as np # 1. Load the data using Rowan's class print("Loading Data...") @@ -170,12 +171,12 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: fig, axes = plt.subplots(2, 5, figsize=(10, 4)) for i, ax in enumerate(axes.flatten()): img = X_train[i].reshape(28, 28) - ax.imshow(img, cmap='gray') + ax.imshow(img, cmap="gray") ax.set_title(f"Label: {y_train_arr[i]}") - ax.axis('off') + ax.axis("off") plt.tight_layout() plt.savefig("mnist_raw_data_samples.png") - plt.close() # Free up memory + plt.close() # Free up memory # 3. Initialize Model & Hyperparameters model = MnistNetwork() @@ -185,7 +186,7 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: num_samples = X_train.shape[0] print("Starting Training...") - + # --- SETUP FOR VISUALIZATION 3: Training Curve --- history_loss = [] @@ -226,14 +227,14 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: avg_loss = epoch_loss / batches print(f"Epoch {epoch + 1}/{epochs} | Average Loss: {avg_loss:.4f}") - + # Track loss for plotting history_loss.append(avg_loss) # --- VISUALIZATION 3: Save Training Curve --- print("Saving Training Curve Visualization...") plt.figure(figsize=(8, 5)) - plt.plot(range(1, epochs + 1), history_loss, marker='o', linestyle='-', color='b') + plt.plot(range(1, epochs + 1), history_loss, marker="o", linestyle="-", color="b") plt.title("Training Loss Over Epochs") plt.xlabel("Epoch") plt.ylabel("Cross Entropy Loss") @@ -280,7 +281,7 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: print("Saving Confusion Matrix...") cm = confusion_matrix(y_test_arr, all_predictions) plt.figure(figsize=(10, 8)) - sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + sns.heatmap(cm, annot=True, fmt="d", cmap="Blues") plt.title("Confusion Matrix on Test Set") plt.xlabel("Predicted Label") plt.ylabel("True Label") @@ -289,12 +290,9 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: # --- SAVE METRICS TO FILE --- print("Saving Metrics to JSON...") - metrics = { - "final_accuracy": accuracy, - "loss_per_epoch": history_loss - } - + metrics = {"final_accuracy": accuracy, "loss_per_epoch": history_loss} + with open("mnist_training_metrics.json", "w") as f: json.dump(metrics, f, indent=4) - - print("\nDone! Check your folder for the new .png and .json files.") \ No newline at end of file + + print("\nDone! Check your folder for the new .png and .json files.") From 997eff99c68f5a8305def561cc658e74c22a1697 Mon Sep 17 00:00:00 2001 From: Danny-Nosrati Date: Thu, 19 Mar 2026 19:57:18 -0700 Subject: [PATCH 3/3] Cast accuracy to float for JSON serialization --- mnist_confusion_matrix.png | Bin 45199 -> 46424 bytes mnist_training_curve.png | Bin 25493 -> 25854 bytes mnist_training_metrics.json | 22 +++++++++++----------- src/common/MNIST.py | 3 +-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/mnist_confusion_matrix.png b/mnist_confusion_matrix.png index c0c8d6c5bfa0a788cab70907cd45503e6f7f51e7..9dc074d2de37805be5fbd3d756161497300fb925 100644 GIT binary patch literal 46424 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 diff --git a/mnist_training_curve.png b/mnist_training_curve.png index a402e9180cac56376f3a9118d49c30dcfd7ba9af..06cb8901a63abce71f17e05fd37a2d266dd025f7 100644 GIT binary patch literal 25854 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 literal 25493 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 QK0L#4)@)pzylQ*MZ)sNS-T(jq diff --git a/mnist_training_metrics.json b/mnist_training_metrics.json index 6f78110..3618b03 100644 --- a/mnist_training_metrics.json +++ b/mnist_training_metrics.json @@ -1,15 +1,15 @@ { - "final_accuracy": 97.63, + "final_accuracy": 97.47, "loss_per_epoch": [ - 0.3116701721646507, - 0.13458229476274752, - 0.09866088936998665, - 0.07603465474590808, - 0.06262360995374626, - 0.051117253406061554, - 0.044330305361125276, - 0.03565888190077397, - 0.032375000346212914, - 0.026867984668543586 + 0.32312851352776045, + 0.13807067030081802, + 0.10075671397961175, + 0.07980067737677803, + 0.06516360198050826, + 0.05271279222240723, + 0.04499444400366805, + 0.03725910941674053, + 0.03291000536191491, + 0.026074256760672338 ] } \ No newline at end of file diff --git a/src/common/MNIST.py b/src/common/MNIST.py index c859d5f..701bc40 100644 --- a/src/common/MNIST.py +++ b/src/common/MNIST.py @@ -142,7 +142,6 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: import json import matplotlib.pyplot as plt - import numpy as np import seaborn as sns from sklearn.metrics import confusion_matrix @@ -290,7 +289,7 @@ def cross_entropy_loss(logits: Value, targets: np.ndarray) -> Value: # --- SAVE METRICS TO FILE --- print("Saving Metrics to JSON...") - metrics = {"final_accuracy": accuracy, "loss_per_epoch": history_loss} + metrics = {"final_accuracy": float(accuracy), "loss_per_epoch": history_loss} with open("mnist_training_metrics.json", "w") as f: json.dump(metrics, f, indent=4)