From 0da0c093ad826333e793679e9fd1c18607032abc Mon Sep 17 00:00:00 2001 From: Shashank Date: Tue, 20 Aug 2019 21:31:47 +0530 Subject: [PATCH] Shashank Submission: Implementing Hand-digit recognition in Keras --- .../Hand-Written-digit-keras (Paper).pdf | Bin 0 -> 315334 bytes .../Project-Code/Code/.gitattributes | 2 + ... categorical_crossentropy-checkpoint.ipynb | 254 +++++++++++++++++ .../Adadelta and kullback-checkpoint.ipynb | 254 +++++++++++++++++ ..._categorical_crossentropy-checkpoint.ipynb | 251 +++++++++++++++++ ... categorical_crossentropy-checkpoint.ipynb | 254 +++++++++++++++++ .../Adagrad and kullback-checkpoint.ipynb | 254 +++++++++++++++++ ..._categorical_crossentropy-checkpoint.ipynb | 251 +++++++++++++++++ ... categorical_crossentropy-checkpoint.ipynb | 254 +++++++++++++++++ .../Adamax and kullback-checkpoint.ipynb | 254 +++++++++++++++++ ..._categorical_crossentropy-checkpoint.ipynb | 251 +++++++++++++++++ ... categorical_crossentropy-checkpoint.ipynb | 254 +++++++++++++++++ .../Nadam and kullback-checkpoint.ipynb | 254 +++++++++++++++++ ..._categorical_crossentropy-checkpoint.ipynb | 251 +++++++++++++++++ ... categorical_crossentropy-checkpoint.ipynb | 254 +++++++++++++++++ .../RMSprop and kullback-checkpoint.ipynb | 254 +++++++++++++++++ ..._categorical_crossentropy-checkpoint.ipynb | 251 +++++++++++++++++ ... categorical_crossentropy-checkpoint.ipynb | 261 ++++++++++++++++++ ...llback_leibler_divergence-checkpoint.ipynb | 254 +++++++++++++++++ ...igit recognition in keras-checkpoint.ipynb | 258 +++++++++++++++++ ... categorical_crossentropy-checkpoint.ipynb | 6 + .../sgd and kullback-checkpoint.ipynb | 6 + ..._categorical_crossentropy-checkpoint.ipynb | 251 +++++++++++++++++ ...dadelta and categorical_crossentropy.ipynb | 254 +++++++++++++++++ .../Code/Adadelta and kullback.ipynb | 254 +++++++++++++++++ ... and sparse_categorical_crossentropy.ipynb | 251 +++++++++++++++++ ...Adagrad and categorical_crossentropy.ipynb | 254 +++++++++++++++++ .../Code/Adagrad and kullback.ipynb | 254 +++++++++++++++++ ... and sparse_categorical_crossentropy.ipynb | 251 +++++++++++++++++ .../Adamax and categorical_crossentropy.ipynb | 254 +++++++++++++++++ .../Code/Adamax and kullback.ipynb | 254 +++++++++++++++++ ... and sparse_categorical_crossentropy.ipynb | 251 +++++++++++++++++ .../Nadam and categorical_crossentropy.ipynb | 254 +++++++++++++++++ .../Code/Nadam and kullback.ipynb | 254 +++++++++++++++++ ... and sparse_categorical_crossentropy.ipynb | 251 +++++++++++++++++ ...RMSprop and categorical_crossentropy.ipynb | 254 +++++++++++++++++ .../Code/RMSprop and kullback.ipynb | 254 +++++++++++++++++ ... and sparse_categorical_crossentropy.ipynb | 251 +++++++++++++++++ .../adam and categorical_crossentropy.ipynb | 261 ++++++++++++++++++ ...adam and kullback_leibler_divergence.ipynb | 254 +++++++++++++++++ .../hand digit recognition in keras.ipynb | 250 +++++++++++++++++ .../sgd and categorical_crossentropy.ipynb | 254 +++++++++++++++++ .../Project-Code/Code/sgd and kullback.ipynb | 254 +++++++++++++++++ ... and sparse_categorical_crossentropy.ipynb | 251 +++++++++++++++++ 44 files changed, 10152 insertions(+) create mode 100644 shashiraj0308@gmail.com/Hand-Written-digit-keras (Paper).pdf create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.gitattributes create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and kullback-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and sparse_categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and kullback-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and sparse_categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and kullback-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and sparse_categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and kullback-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and sparse_categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and kullback-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and sparse_categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and kullback_leibler_divergence-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/hand digit recognition in keras-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and kullback-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and sparse_categorical_crossentropy-checkpoint.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adadelta and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adadelta and kullback.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adadelta and sparse_categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adagrad and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adagrad and kullback.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adagrad and sparse_categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adamax and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adamax and kullback.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Adamax and sparse_categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Nadam and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Nadam and kullback.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/Nadam and sparse_categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/RMSprop and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/RMSprop and kullback.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/RMSprop and sparse_categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/adam and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/adam and kullback_leibler_divergence.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/hand digit recognition in keras.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/sgd and categorical_crossentropy.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/sgd and kullback.ipynb create mode 100644 shashiraj0308@gmail.com/Project-Code/Code/sgd and sparse_categorical_crossentropy.ipynb diff --git a/shashiraj0308@gmail.com/Hand-Written-digit-keras (Paper).pdf b/shashiraj0308@gmail.com/Hand-Written-digit-keras (Paper).pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b2f4df4e97c21b682b04a3f8d69312c39d27002 GIT binary patch literal 315334 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%0A|2LK(>0s3wFecI%jIQy1nlT$TXip0sfjkgX8 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⋘k-B|$Vh&hnviFuG(MJt&G+Fn4WgT{k3QmrR5 zsooQ+`LoFRp#2w+SzrOPp?r=whg<-bFqg~*YnVsofJIzL=7LqsC-cBE7LW_UIu?@o zU?Ih10kslnRVJ2^gPWImC z`y=NgMT#knNOKX9BBeA$5Qi>R9nj(!Ur70p(#E3M*PVKxrhv=7#U16F~g*Yy+|=K4ANwN?|XJ2t#$O?=ef`PG0%Q}?|#?2*IIjhyzlQ_ zI|uGT?A#B%T$YQOh@l6>y@;dPViscQ6XHI^(;QKTn0ip$kGPsE$|<%`{~`I1cmNSr zA!Z}W9)_h-R*Fv`+8z;e5OMRxgNV9EVXu-^VlJZZG4V-6-~urZQTVuc2$8r@R3I9k z5Dz0F7l}$l<&)wOMCM{KAJMr)Jc}Fjd%i) z`#G@)(Yr!Ci3naPsu9JX7oS2TuM&$9&FjRc<$AeZEJ0M)i>DCTFN&pz?k|d`5#e8k z{)+yJScXXdiueqo{i|X*BECs{7E!-h)FAR((W*o5fd04o_n;&0(Y8nLMXU4rn`m`O ze;f6$=!2+pO}~aZztevwK8NUkN376?^da#%uz(cLfC=297Hr^wCC|u%CEv&w&w?3r zQ3rM~#B*Q>uUH9|FvaJ=6c%a*jUZ}>dIiipWBO#s#gA|H-ViEBL@W=;5 z1Gr?IcmaGeUaSVEd{DdyUMUu9z%6&6{sd!!m;{a~LCp^tAA)_7F$wx)W3qS&oHIo< zf_FZOKBpQ}#mnHIkD<3|#x$`OJao7CBDiQedbr1ccY%{;;=QwsS&-l+^iU3dT8EJO z-ws20a7l2^7)UQJ7g)syo+`lQV*c`oxJZDlh{bZmL|nPdS$WJ^W0o%oCDG_6p4=Epl zWuh`se1N&Eh?!`da!t7=ZfEux&+PL-=AB~ZojaIoCNS6B$^25n{Bo!CNgw#AKo)?B zOlg8OENOu?Y-xiv0y2O|BM!PthGYn=5td=FMnp!y7sN^*k#QLZUnFD#d_mkamAR=% zrezwek&zj&2JzJ0@-}%J_=4E#<8quF2fiTADw5;nc<97jAD4H?JHQ>KvJ{e7X(n^f zz05wdn0@YJ#wlaQxu3bFoVn%!W|`T{GM`|UnZqpeAhQhR?oWa#h*{<_n>@rkQo%g( zF!M+y^T;F2BlDR@9%UY>Vjg*nd1QgCmepX2PsvY#DTq^^ke`;H22&8TJSm@&Pk||j zUp^(DmQRBzh-E&_EVG1J<|$^GrOYxZV4Uoh>E17*h&+M~` z+2?uvRsB^wB@TL4|CatOwEB+zU08^Zo@YLKR`1mR4))jdW03!-{~S+=l~yt}QxW~F-Oqk86}FEA6;GZTG*IjDg-=mqAW)yzRJG6&T&2YrD#=tbtBHOxV4jJOd; z%o7JS8Yv?Uz9=$^z!bNEk6t#$8e{R4_~?tq?Z)k}5G$<%E8PK|m}sqWr*S8A;-fDy zAFVeg8WUk5R(jdE%eV`5N{#;pofxXo_y`#4WoD>GW~i5#p}xor^<`$L4a`t48y`15 zE?zNafTvz&o_fi+7d-Vcc5P{9$pYUa3DW?lOL0{7`(%=rwx94DXM8Nrg$~Dft z4)=Os4X_T_2yBKOUx@m42bGS!jiKnf9eX>^hsN|?&=|Ah+z%WCjsVADI|ZD9Uc*qF zdsaW^=zY)!aDVF$)O&Y%q>a$80N38<*+{#g_qC6L{0D8Jwpd%Ht5y0splAGiQq(gwBby3kc!(@j03CvY#qeY{@6DAlLx zGxRcjjy9-Q=vDe6eF>u!^=9ZHZKb}P(WuuF^i}$5eJwbzNpEJfpe|vDzKgLJI&f>8 zdI#fH`2aybtZmVcX|4K6=!7o)ETh-Kd99Oi(ZOZ?D&vOMt=}-@NZH8Mx{X|Lp#hy> z8xh7xISHLG7AL6x2ou3g)4(z1=x;7iiSh!JtD!FiYK%HYy}ra)W2`ea8k-qgQQnSn zo3Wd~>kk<1#(u^@JR=-2jx$afXBg*?AyV(>BGJqjGI2}+r@CozP(0-(P0!b4j7YthmD!OV_LWG zU&Zqq#<~J&Y-Z#-FbZr& zq##Kc%{K*OfnsAfV9WM^JFZ!8Hd%S(t7IV;uM#1k9M3HpiJ0v_W%{F3c%#!YTC*E4Q%ow>fL!vZ_*kVEzkk;f_aHBvi|66kkM#f zCs;ynW~llShNf+?Os&-l=?4h!&5OQ-l_2O{RuSX8HJ;(Dg;k<;TP23HN{z|ZRAZ(! z1LZPc4$2iMS3zHd_(H5%OHf{pa_y~H^G>i7vq$*mvPSOU^wey9WeSBhp`5PW6%jF zp#$&DJ64z0$vB(E&G}<2R<9v%t($e8ajSfhaI^kp)F)g;KZG0F7F%kqcCLPaVd$D| zBgb^&9-jF)f<fE#bZAq*4CaLHND%#!Ws3Kc5Fb zZ?p%Dt+;Oo-m{1HTgGw572^!S+hAYwHhRb5oK{O1DUbMwe%>A;jPQ-$?H@y+GXi30 zIbo!&-sSfZ48tE_*!~!S`JK>{Jx}`6=!Y;)>m=MdFZm}JbN!QyHvbfY*5jW}@Xykh zGiK|xj9FR(W45-QF;8!1%-5GN7NTFmVr|gBOc(wYXal@Aukkqt7&(WH@bt(z%D*xn zr+YE%X%&iMcs4@6EHaSSNr$DCEl+SAdit8DhAeFVElc5!Kz6BdmLdAR#dDo%ie|`! z`_qt9-T1B$<5=1(g(D}hM4jP&@c`-ki;WN+B-LV;)Ti+9Q;*G(-^=|A&noVrA3eN{ zcan~8mEl(I`FHL#&joc9H@CgcbNL_Cmj8tr^>YVFv?iV3;_8Kbz!?wLN2&3+A%DsB zJKTPf!}khBhTZ32zkPTyuStyLJNPWn#zAlMU{rGc5azC2RR13O zmf<UUVa0y*sZYt;YfuulEBsOAxRm*`M` z!TYroauw-Hv3Q2;IZ3jRRCarg(2Rzza{WT8Kl~-GUr6;ySB5wDwi`x#u5>p?i8HrMU@6UN1E|cUw zThtHJTCr?XXF%S|vwoF(_=P%5Gj+G}y1CG5E3J}y>hJ*?v->*td>60P3-r`83Hnl! zuCn2mSbv>Y?;vC!zp==(lJ@8wn&V#gAo<2SSGb2pnjQC9r2YdvRX@pXcaU8zL;qiL z_dt4w&ypo4m+h-~^{D3`d1gXBG_;!SH(1uAexBz5Nv`vtXFB97!;+s;tbM|b?|rEZ zqo%UWy&tlhYxaA7N|IOmvRVaQ^8_Hvgh^|z!mgxgg_VWmpUOh=F=g8jy({fLO*=b0 z7M3?$wBxIWj&VOT*<(-AXx%&6L#DBZOk;g2>r;7`E7;pvsuS2x$cNLOO(fM%us2?0 zKOCZcSAW7af6e;i>@AzApP}*O55vc~&yD;v#Wlal`jf2x6W8aN4h7gNBJ33rj-6hz zu-pG4vesRR!;0lGk=FuPw>D)vfG5Wfals8H#1~ zDUOJjd7WQmUVW7E6;1bvTJV+D`)o17^=%(15NXp8A7c`u^= z8IJmAIO@O3@v@zxBP+kjIq@0Z_i?=MM>#7kWXtVr`5{}L;2l51Qe!EZMSEDj!9LKz zdtJx+-?IK3kLoawGs^Nq9A$U%TzCzKIifj7Umm70yuhoJ%ds}>{w+mbqGpxVHt!jBxzv5B#^X?O~>3kB?M5B;my_^MU z{eSxP;7xH4|8B65e>Zr7e>YgfzZ+2IQ1bJ{=MeBmffE?xY23Sk9`Y&NF94UEJ7I8? zeqGSNh7eK(GyqvuhHy^+MGnS0_Yw!Cz*GmM zxUY6l>e$yZ6uH5%H}QOEOz#DaF+0v?pas|gfM4Zapac3GhT`0_`hlDJ$g?aCJ2uJ= zCvork1MS~k9%&=wS)liQo{h9S|GxHj)lrI-iQ>QZmq_AI{T`9eaK@<~UdI34fJS9H zZ9hiQfJjrs7-Ng^sMHdMB2Qhdeo^T8C-Z+S{Mr@mHzH^}X*?;yMyK(2 zBI3Q^{iR6wTt1gbnh%(>MT&j}bTt4ti@Db0z6sa@eH-qrz)t5**fUDs2Xq350C1BF z+~fi`xxh`X9tZu-{elDVlxxrd>F{8;7*)Q6vg+KyS8nXQ8$95K_qf4PZsL7#l)E$w zYQy%a48=Xec~-{rp)tJ|G)5k$8?lMAig1I!+>6i_=Q=ldirx<>&ONKwIyyWYU$er! z_7Bv1cX_0ZaD(&QP4Dw;q+Rp-+D9WJ%0#7DB$kOfu^QgDS+t0qqFo#iN5v^|R`iRv z#8tTG7{yi+N{KQmC~qeRGO7mWgl{gOYW5&@_;-nkAV%PJStDf)3O`d z0oeuHS!ieEIoT%%p!LfO@{$~cb{MTL%d5~%;rW2P0&S1nCwt@}ZhIK5slTmqJ6i9C zwiC}!%T8!(-}8T`5~-Blo;kHX|EIc~Dl%jj{$>r(7W$WdpPhIR~w) zptZ{dvPLe2HVHj1miwU1z-+3Jh1}@1UGA3$mGkn5a#^_w3rg~cJkI0Ae1uePNGXe@ zfp%l0Po`xIt8rM_DUT`p z!u!U_2^iND*&wIOMx_pxR$haBn9U*T8J10Q3-nf$*#2KUC;SQ7z}@aaeRm6efw{)h zsT^N>bT%Atw~%D}3L33ztDqb^pwc;UaQGLr!Cv%$ZMT8Rnz0uv`xePg(W+8Wx%)LPK%1sXKK+PtPAW6ErU&VKoXBM4^l_O-w+$Zz; z%tG69d~O|}opsIQ8EtY_;|QOckJ9%RkD-j7y6dP_&P@92PR=fY)3L|qQOzaYm835u z*F4e{gZfm8vvtT1T}jUv&a{zHnVG(ZrTka=*BioRJn3^Gvrv|#?}i#lf2Wy`EO|u^ z%HPU=mDi9f?{k&8?st{D9-v%_O!*PdN0BLKsrRX6>iufD`T#QKgX&!Mlj=j1HPtHQ z%fHOuo&TNuJ^6d{znkBV%=x?g8~H=|!^obG==1eQ^(y@_Fcv6w?u3b>^vS?9U?xxw%mpfe1rDm6`%(urK%E29 z>qqG$SOcsBHUgW0t-y8%HIA*#0oistyQyQb5`9h+mPk5SNo{!=HxfN z25@bcZ@nk4jLs=Xq`8 z6`)-ZN)yYyBqfho;nk+EWkKK9WLe0P=cRPA-`6Bm$%#dGw)gN&%OWT z?f3q(?f8x9 z-;2|u$|L9&HcrfI#Rk!Yvqy{AA$EzqIOQBbb~=XgNzsM#bFVlrXzjCSuIIZq=QZioE- z@N9nS_?<+g}>a(|tBMa<2=J-)-yu;yPA4`Uy`B_6?U z?i7z=Kifr>_&(PE39SE5#gn2>{EK)-yooQE&x@;KSiGP}WxV(jn0BLR2iyKs{EhO4 za$fw#z0CbtFh-mEFT}9>p!)}k%YD-Qx{~L<;Qp0T;J)f{DSl6p=QbsyZcq;@x2cEK zA1L$H*VNaPD)qSf6Xh}WXF00!>72Zrpz>-?JSU;F<)m_6RCeaQn72-P^1ht6S?YOz zmbXm?^S+U{M@I9$n|DHfFz@xebMn5tH}bB^2lIY6#+Fa#=jG?gm-CH$uUwmN<_G1v z{NDUGO>E*D z*2MR(d0j{gOK9PH&%(E_g|n3vazJJHm4$CzYdlcm*zm1uO?ApMZbGrj(AOLX6#%|* ztwp#m8D$@h(e~xez4i~(U**_Wzw3E+98>u{*|E`B*5VnyeXXWZb(c7EYUX;`_fY#5 zU7&r!;1iG9$BWu&-;4IL~c4?h==Ca&*=fzR)zwFdK>%5!#xca`x zKBxZX$X>JDoNHE^3(RVBsaa#znf2xxbDg=-+-z<&x0`Lycf;NedyTo@JZK&%e9OFIUNeU*w>8GBv3%x1D`3T}wAp5jGk3E-!CYWXvZh$mty$J=Yo0aV zT4?rJi>hwOx1WRJH?>{5HGJ;T~(m)Ub*seq-*USuz^m)o_dBkWby z9(%RD*4|(@+0Ax~y~EyR@3lMZ1NLG2n0?ajg8i)Bi#q4+i}q#vs(r&R{keX_Zt~l9 zi$CH|`p5c<{S(bf|74Q1ZvJWhnf`KfJ1kgFf2DtcmG)QrmqOO~>#RNRlJ)*IH)Rb; znw@{0f1`i1b^2X$tADe9yT8r9+b;39`}g|~I{Fco$Ni`5g#V2H9Qqk8`$owD|66vi z{|d{je$77=a0kW&e1Sk97DxxiSpgbtU_xM0V2UlMRbYBxR$z8uUSR&n9J4bDEDS6T zEVD18=8C||KtrH0u-?Bkuqm*G>+lL>^}sgPTm9vMoq;`pedZ}gb~^eY$fJQ1=yS9@ z9q5Ma872Dz7wnR(k7ai=a49fo%??}-3j1(S4Ql4npcxDW6Is6v76r!#OM<0nJHtWq~olIl+oxRd7*oNpN|v*4Bcnf~$jT$tQywX!nCnfz!d}U`ucZ_G0^p z9^B>Mp7lCsj=X~uHNm~)pTUmcf#6|tqt$J$v-)qvPVg9cY49XQ*o6`9pnVLUrC9`f zgXd{R!HYDb;N@Gh3tqKLf;Zql2Sbu}7H@rdDBj;tZpg5vgzQkn-Wy7?K9=2PT< zd_5u}s^j>;{{8S?UT5OoNE5L=W&w_kGzV`4PMGyskEPi~TKv*J8`%-cz2$+# z_K{s#UZpY9Oe0m$_hMzHL^>#bvtx@K@Yh8SM~?AcFT`HY%Q8lG7kHJNJ|ib1U6Heq z-pKjL#mMEz)j%L}BPyf0Q6p+cBazF|WFP>2Ea~(#S{$7iogAGOof$2U&W%<^7euS0 zOU;eZnrL0L9yQl+t97WkF}gXrHM*U4Hrf{59c>RzjqZ;gj2?*|kDiL2iJpu0MF*m9 zfklg=SL~ALwdhdH9UBva-v-9S0^xD7SS%eI7n=~9#@Pu^|-LoaW$^R&3GuDh!@4j$4la+)~5JWYg;y##b?CJ;&b8^ z@hZqg@g?!)@!I&R`0DuD_=b2>ygA+y-x1#x-y83UABZ20AB&%icg4@fd*kQh7vq=X zSK~JlGLf4w5_TezNG8T6iW3vFIXW>pF)cAOQJ$C^ot!;IWb?Jd!#gP66P2NBi3N%3 z#L`5~X#b&z3tym!i!>+dtS$BiuxK(-ZQGbQ9@MxA!3>CTy#}xVs1BJ1`(a^QR zbm2Jg-kib-g_8=W6izRkRXDqFUg7-0g|v5ti)rr)m-#1iym?WKPb?WJmHq@^E%u$z#cr$*$ztWN-3(v^se)c{zDCc_VT$B~!VPi^;1g zBV|W=Q;|p$$y72mHdX9Dn3|ZHoSK%JnJQ1sg{(}?rTB^-Of5)NrPYH%>Qw4X>RjQRPZUHIy1i zyVGORKH9HDJ;`+7mY%3j$I|KaILHZ*lhRWn7t_^i3xr}v$sR(qv;dr)9LPXPr5&SA$=)5 zn7*D788xG2%uFbg$P{J9XG$`qnW>o>nX=5BOhu+DvnaD9vpiFqS(RDMIbs8yb24i) z8!}CqW@}%j#X3aa3&oZlD-1MJN=auJ4It}+Kb6vG?8>X3d&4>&M<_?Y*NtDQ_XK6Qcdd&a-Xy@(Llhyv6qDz&3lML$0gMEoXjo zIP;?=yo!j9Q8Ll-(aFuc(P`0{*`uR#K)=8=UnM1Dn64lO=9JM&U|;mbtbWbH(S<6W zL02$MzDncgEQv15S`l3lt;#NKQyN{?W*=9x2`e;M;)^wWX+bm^yl3CPjXjVnchooj$HGjf>?1*S!`%*L~PWJ6Jo{9y2r-GCd8)PI05VYqqJu5x5&S; zg5~SS+!@@z$WEeT)0vLV;?{3-C^k1%mVF>LKei~=t9cELiheZ<#FoUC=e3Qkimi!l zh;51OAbL-1e|GQOGqHm-JLknd%%7b%Gb-Sk<*E zu2SPu<1-pxtEw41K096-FOM&XFTSZNzBFEW!@~IL_}ci!_||xJ{*3tE_yM{KhMxGL z_>p*Rye@v`rroOls-DQ@#?PzKn`53L1d-fmyiHjWzmz^g;!3%cuaR??s(SH=k-I=$ zU#oFR^<|zx5*p7S2~BZSA51vS_9TLd>_l!NUqwhFo+wCkN_0*1Occ6zCve9gK_gOP zpt?Je7?K!HzQw%=b=99JNsLL1PfSisyKa!W=b-$i?kcEtW@2VyPU401D@ykc2JTm= z9+Y@7u`p4QSe96ks7kC)Y)))X>`v@U)NoWJ4hz|EmjAtKDDG9`pJn|d$(-kZBrb0R{TEk;|D))^dtFH8EbdirW*O~p@(%6gkDxPKX*TA9 z-wL=B?%Aq)vtx0$wk_dPtmpC$SDx?CdYL2JOWybGVJy~xjsf=v9sqm+sk?#S2d5Kg z0SiOQPSFSUgEnv%*QgRwtLJ|e^q2U553Qc>6>AmDF(!jk!5lq@Ip!?p=sB1F$os4z zvkx-+k!uY&8^KuvPAPM=Ql`xn%s0=t8i*t3AayhTZ<&KqPJ;dnbWd2-6M7Cq^9*P{ zjMOsb*d@?b2K`$=w}YM8ie@{FBG6jH9{k768csuJcjyd*Q-T^*B5xmXDxvcQwUp5L|L1_DMpC{z}c#3l-?bjv&vd#6%>kiu5a@`63UieC)752g&0nZ3{MxYjcSoNfN zp7_U&rA#AoCK=ng66xSxtyP=(kEKCA!0F-AO^}Ao4;3eL9TPK z^Cj3>519r;-G1nAgJ@i%;)lyML*N`%b?1M8wfTt5A?TG`(Nlh*#!u9u5bNf)k99^2bEZ*ZH>Rmgm!e0g2<(V|^%pQ! z94?(W{6t6#E=#she0Zq^_YTfyHd814SCJBseW?lLOZnvD{7b8A}X z5RF|h-d3PpW?}}P36B*3H-LW{IIcz&;EypT1W=ZPxN_9^k8;m(KQ-s`^LCmVIjfC- zCEL2{2?@4Y=TvHqm(>E^4*ZhhYhDtiyM)*j5&HsMWY4tEDz<1@H*C* z#3f4f2#FpcRgZ`>UoYfQPJe?_?dMU-8(gmWDd?wE-{HC#lk_*xr@ZJ>Y&m8b`%R89 zLyeQoS(18s3#L))U9h$rT45JrsTIc6CokVi_@`*W6Y$ti5%c}5dr?QuI|cDGn4hSV zgE1Zsf&GJF`NLeUwo>&bcxepuyoQ!-gVfjH!)fqFC3{1kh8m5=h_nl>FdCYLyXyE5 zb0yYnu>TowUIfR0pVy)t4a8(A`uOXNWho-01isqIzS2zA;FNJZd)IPLanL$;1xLGQ z5ceq?YiVmVbDUe4V~u8xqj4!7SYmf%&DJJ(dmVEujDh<9L@cex_>WP=nS@-skgI}o z*>|ywQ;1wx-I;%6j`atuy=Q>amd7G{CHnPa@Xv9K?GrKf=3|t|2fu{JSmOcA3nkzT z;2lhIJ4!FL=5S3}vx61BJ;iK`n&vX?*0e2Z%5y<3Ruot*>$%YOGPji3j`svakv8OqR!C&IP`x9`bQ%gzXSVk z!Q6yvK|2T+^BG^-?7o!Dvym|$CFp6qV zuvf(e=y?U470i)gaBc*rFP;(q5!z)gIAxGA-O+3z=JZ!Er(-;XW$E}bng6WnUnagG_|0Or#>!MO;|F^p7qfP-rm^A4_;zJ%9E=B9xR^!o&aqTZpfzyFG z@)S4+)hY<9smWNE&V*H))HStA#p|HmiFeYV8D>Ldfh_SJ1#~ zfX5-%ICaIryFT?J>I#L&bL(cTQO`kg3Q}{_8qB4aLNmrOtgG`CMp;7{8}C9x0q;d6 zdup(vPVt-Nbkc41npzzkIh4du{Ki#2wfu_dAB zCS14v5H@RAS8M1;7G``4@%D!DAwL7HUsBid>P`-Gj0e=Uzq&t$vbF<{fepKHC8A+X z{;;|_#=LXf`cJ|mjat$$#bC}zj1_qpV{3s&V2mBCt|KtUW+BorU&tqUMWhYnsFqKn z53ayyFc71`3bYQcP0Ujqb$UO0@w{B3aFm_Z&RTx8Mpg*Cuj&orX6 z8<%CYHG(V&&CoCF+&JO9Kjyr29mHd7Idil};5R%wBQL;vpW@!s1(g0Ad^iUFd=9aJ z>n7pH^QHqu31Nfx$~xb4crSLYR-kp&x@&j~yVh6huMJLpi{KHhM0->lqwza~`I`ez zYtytjX4Lwf;71$#5)2?1L@-R`5fKQmuj&m7}<@Q;HdjG<`N z63jO3Fn){$|GSjyM&`(kpo5IHc1oV#e4z<*wBW1BeE5&|qc0M?<6qjp6q?9sv@`f| zF);?g{+e6nYs`x((bCmfF!kr8a_uF}8IFGS8 z75radKK*ybG@cN)Y;bF9ZJy8lK}f^qAX?JBfaqY5gOlMj^is^v_UA4Rnsy z`MF$E`wh{z>AVK`BR~J457%e})<^LB9`s{6_rag*{FayP`eKe7{Y9+I{|9llLFXa; z7OcY=muY_`{I1@UOV?Ln{mJhFc}?dl&=>f9B>Gmpj5J)&+RUFZ*4F_a2mU_zFT;j~ ztW9oXc|8g{7wcmPZ`XfI8Ui|v%-RLUdN-X`G|+{=R$UO}~%O?`_v} zd2hSkmiM;nH}l?hy(8~!*Kgy!?RqC+3*kRSKr?{9p3eN1V?)RQtwIA~{dRx7zad}* zynIg5fp8#)^#R%jIs`fgx`XDlUV%Q44>tLBtfw8Icgus*( ze|lgRekbXz3!Ikh8$m1R2S2ZISt-9~*59pfs&8ffPR3BOZK=^8FReXHOIoRXtr8knx^!L{|2YaXe&h&F$Mtgn98Fr-qrg~rV?D{3s*TKHZ zPhWNZNk8Nt~cE5XuWdHOgU zTo7CwTpFx|&yw-Tv9UV1Hn=gkHC0Ehb9HcU@IdfT@JO&0yyW;md4qMqGr{x0ONhl} zOwu`|g&dk$vO~F{eALD5TcLQU0MIGaHPkay$nv3np@E?xq2ZyD&=`)_(D=|~jEz)I zXj*7yXin&b(2JpkoIe$-O||i=w0`6ALlsokvd{{YQ+1_`RQmeR=Fs-g?f{uUX1_+` zN9Qkz&E*+=J2R#-$CS)*$@LM(QD|SNCTVx*aOi00MCerLY^Xjp4kc|cGRC2_IV#i; zHW*U#UUJ@ae}}!{a5yKN2WTB`8}1P9%;kr>hkF6~go{{DxHvqt(cDCJ3y%no3Xcs> zNT1)rQ^M0R=O)3G56=qEg`TqT{P3dilGJ#W0paE0RSYS+DTcyp!W&@Imhg`7p74Ie zkUMvW4~9QX>Q45b@Uieo=sF!f$8C%DO)ukOL~tBLtcaiM%XN%oMOq|vMp{Lp>Hdne zi*$^1iS&r{j`WQThzyDhi;Rqnj*N>;j7*Kph|G?ZM#>`#B8wwSBbBK>%<+(H&-8Of zyC?h6wa!4)?!weObY*?5oz^X>0DR z+^qaY>t%P0N|o=9MX9wjowMRu1)R?PIIB}u*W~pG?T^G-sd!+cK|_aq&~VQlW=JH6&EeqP%g0(uD3 z#&M>N<4jxKn6|nxt+!-aZwVQ^vB1Ey-u67E?Rnr&0)GhQGBzfGa|G5Nf#$8yycKji(CuJJdsxyQnqP+Im%)Dm z{3lS#d(iV9WD<}`D9cgScu0;%>IkHcfQGlhe_Qzhw#|dJBVgMn(D?~+d6CPDvigDF z5B#~{&xHn*YoJ^M-Y}Fm?t#ob@X};>X)@|~8g)Dk&(DG9=fGxo-ht;W_`!l7%rcZ) z2Kp}0ccH9Yl$8tlF_0evnL8nKC-@J7{~+XFh5W0aJ)k|XCmZ%;gTE8}olN`CUOq&N zXAtu}gFqwFJcu+8BG7{fbe@F$PoiFkG+Ra5tMKqjl(JH3M(P_1!)DaiM18de_^JW? zkHP;K^y8o(hfW=K>Y!f%{R(6Z$QY;>;zUQB7+WB-1^i0zE5V0OL+RWEdJ|~8?bV3F zo@ZdsGobr}?hly{AoBs}j-Wfj=gr{rX0Ydd*z-Qhy#wXm0X?uygKgS7px*(Fw${+r z#u?~51G*4&A?O=G-vFJTL+9t<7lU66dNJt5po5@;uni-FrACH}pf94m&~`T3&b$>i z--^8VA@6#$in0i7qn-w6Ij=-&+e zo1qi2WFeMxj4e9G7X4GupF%(4(?EQ>cc_O7epiZg9_Du_Ho7nOw3sG3i)Y1iqKjBf zM>p{f9o@z6!~t=asG;L-`KH_>dK&wUcSSFL^91GO`^yVOUxEs;Oso)9V!hZbwu{|j zALTeKj*1iFlsGHuMT0b?SB7Pd%#*F@Xe&F&&a%7gCHu%CSuBUj5pt9qD<{Y)a=M%) z=gKlUUoMhMg#W4GI2lE_HN{C>v=!|{f#@J^6}O2_;tq~i0bd64ghx1FnhVGAHLLG6_Uy$p02o|jNQy2vjJA|E|QeJTFm;T|{p z-5RHNvc_2xt*O=wYc`c$ZY{7DTT871++HtGSF0}jE1MMO9aQankm)K+M@%CgYXPli+rLfjo(s1RN zMtamyK*vmb4r@ssq+J~^*e_aJ?S;gtU|mEnvsc*TtxH7D2Fxbg)v*;vEgyD)wVL1% z*`tvaGwdp=!FYSUz1b=!dluWqvM>#r;xo?~fvAXQ0`r|w+{!Mn9qb#|erGIsKIlwv zrVwVBPJYU^W;nB)x%8{dnQuGJBCFh4;w-nJWD;5cF?ohv)b9h2g$FcI-K-u^lYWyrztwmQfbxb zZv~!e&tA^~&mqqd(q2oWL7lUlqO7f5Wmi#3o#%`_&~x5%$)4=hybfvF;thJUy}4xD z3~#(6&auXM zU+})@UFfZ#v4^8=q8;=u^RDn#dDl~an8rPjesA_}_wM%YqjQb-a4OQuyhpt!yr-Pj z-lJBjoeRIC_ju1Hdy%)^+u$>NUh?Z4ZWF807xv}&@_eoB3P4+52VZAjcWbTPGX?0| zzFxjQz9L_-@9GGywhIB&Hog(QQGl_&2^>4VDZc55p(IUFnrok_nh%9vQPMy z_?G)tk?n_55l$L?YkV8HSNgX2)>!B5F@Q@d?tD9ZdwlzS2YnyXSXx3n$9K$kl1E$L zY2P`5i+(8Q=E~K$|4o2h2{ucgL{;0nlwS6h^ zgSO-E=*CEaz|1keZ|7cIGf1H1!f2w~5#msL1Y=5c0 z+`oXLq?X5AY7ZKn{EPid5wDjp(qp8gnd1PBrNjM|etzHI3%GNDnO>j3*cb~Mb1=V+ zns@Pl#%@Zp4>)%K4@KUoNL|d>S_JwKFrKB;Fzf5<`3-YsC(y%zdjkI%GN++u0dk!O ze;Vj@pl1VjMv2?7N;s(W@Ln)|t6DbzF9N3q+RlLUGwhSvid{k*uG}fnxr3EG*xHYqDzius?7Yly$D*e+%h-glVTrl>!X? zma26PW2ZOxQ?NrY2y3UPIE0@!17nw>b zeQV@-)+t-VPOO-<{py)B*j5Ogw}D@QyvvcQdYJ~zuOn6U>!Yx9u3<u{+JT>n)_XEdHZbRPeupJp!Lx1Z zDJw_mG2{T~3@dLGdTt5nckk*c0un~xS>1)K*D^Z?!s$tvI%;k|W`pNTk8Pe9HBA2R%%7Sg#) z-Q7ViXg+x;i}r~GFLPPo8y zJwbzlfI;AOe^Xi@?8-Hy$6mzlDu;fik>@z186&${(YgJgRo^``vX z!Ie+iXt=*yH!cI`dbgb#T)T|4JSWofxNUS*em-|kYtz;l=cFyY+;g9_*f`O+?54^~ z+1}PY7d4STquf9-!BBz`8Fr@WZqnA)X|^xf;WEb(OdyzYjrRS&dA^q4zvem9&tKYJUv(b)HO`qn zcK!5K=dbd^RrV+KPfu(6Sp;)kdhQiF8pU#1n#_FHPmBDG$KfRe%l)Y_BQ>6`B3P5r z4>u5OA=u&a>eJ$V55a!_mA;rfA0+sY;8^1}4xDu1G{HF~AGqj06{MLaXsK8X`rVkM za)Ma|EeKk<`IE8wWqmP?&t(Ops+{yPlIg*A1RXQl^h;v%D`PElOlfLdYOCTX*yW1d z!5##?3Hti49+xx6p|trTI6y&a-b==b`#U&@V3-Rd2}ZlV80W%7SI^Y6d~PfRXAsQx zH=5sqrG7Q%Cc%{tmb-cu5G+m`uQDLG)P3hg){<(AV`o+kV}xC(Iz=f zoUhgH*E)aQv98{KW$tKV?zz^v$#`u_K7C$p;>_zgw0Fk&E9>`FV{US-QSZOne@&cI zb^3~Pqp_%|^Ve;k%rW{}bLQ8a(_mj)f1^Ik{td~(4m>5a%ihobT`@L?FgA`ewz@IaTY`gBdmiXXj2&=vaI_V`khegaN07P| zxE*q}N9xOKjgK{UMl+&&?w&!w@Qeq(a-Kw4NYz(@egisDqSgTVW8lZ3 zO$UAj90R%F0b>j3O3+Gj6L1uIo&oL;&IiC9VRJL+c^`T2fDE*0?*OB|#u?y3;2R+M zIp|{G#lS&mQ*C__wLrbhTakJn=wBiAEpR>q-T{0)bixK>8_IOcX^bv9a!D51?1eJon@S|WY!A63u1l8_uhP?y_ zT=_$3aD<@Ng(GR{EL-QE&$#^a1eb)+Gy+F`Hw?eC-EW9xem~4fv#HL7TJ=3K)|>p6 zSR>o(ng*><^pbt$069nwlOyG5IZjTLQ|XxDeqF1a&I^dAjw|2Unn-;0r7ix-R`Ls5 zhwz21|Q#2bo`jegX7H;>tI#e#^BpmUHbGi*@Wb z83U(3@Bn_2UG@jQ0GZvu@0+8zj-cJ|ZmIWw@)x;@#ydZ){{b0|-In--QogayOUxDvd(c1Tk zuTI4MJN-LF+dxhrN8B7}5ojUW{Xf&&p89}A;CCU5panszG+sKS^P}#$-8JMpy8JE~ z={?eZw{r6{-P_d}%}BqZvpx16H9nT7(W}zvHP_%bb)??=%DD0STCe%0)>c>E(aQgs zU0UXT_e$X!;HALpg(jy8Qw$eT(f6P5cLYtCS^>TwPh&38owbLBrOnmmih^KXu%Ebv zS|&^_)B7K8>HjaF(R9;Z-a=vh7kNSG@-rHCQ&FI=@H+OKIs$p%76@rzA_|3 z;$LJ$Mnpf^Og0nu$>y@TD3aI7>qLKfy}VuwkT=L1#Qn0RY$*oH8|97S0eO?WNfgUA zvW<9<*1It=NG4=L43;;`o5c`X@0W^)XtlpU43!JzLh-O%Bo~QcwCZ0hzAYP0 zAm5a4iYMh;@+~n@zAfJtljJ+{9Whz{PX12(K)x&A6;tFvc~Cq>*C2<)RC!n)7EjBM z_v!3xHE%lI z*fTxU>}jX3`X3)06}%rIDn%O>Jze`6PaM*w=GURoQ-uefkE7vDaV@1-+(3$6l;VX3 z`1n>VAHfeOMQf(d0?!CrX9=W?G>b3+j3MzBWzt&Ju0`3KsfTpHX-JXE^x~T>w;J$9EI}&hTH`U;T8fr_eTmaH( ze>2AJOjs-GrW=y5UerxDGy!*s(hW<%A4i-{$s_58C)9i0bR!aKzHYj^66(Hgx{(RB zpB_nRnRKHPYPN2=(Ft{1H{F;<<~ufl9JVQ6ol@6>yA$x2DBZXO{3S|vPXhiDr5j&| zzwj!d&ag$){&e$!L;OYlGGE45@Za(BfIskuKw03Gz^j4R0&4<)46G$e?O6!Wk>$dk z$)gok`RMTq0sYZplr3bwATXMh%vLH~OLLs9AZ#70cC5M2Rl7aXN!v8L)9OKZu!&{i zS$^QN17s?Mg@yMr{$u_VyvaVppJD#My1;st9QZ8o8Eb{OB)*8hhPZWnBg^D(@(&*ck{+Y-JMWwn~G z;p_QEzJ+h&JNQl$zMk*l`}jeAh|+9?Yr;{%_oy)8ApD?k`7Dtt(nY3n5!y~uMM$>J z2kthc$PrycchOVy!E*~lKhWF4_lN2 z7K+74T_Q@wN>L`(Do#bY7$R2krD79Y@FFTqPVsJ~=1)`^J`H~nKEwHk>DA-bQ*P7h zEw{PgF`XZZl-Dj@USWO`l$S0iRX*vS@`*2(MwUl}k1)R`zc8J!Jdtv$M#^nsKm40S z4d@=m-8{a==1P;`q@14IA+q7F1_u>%x5W0@LA$k>2Po%@kaIotDa=>6eQ`-`WC*p9 z9fWCBfu5~zolYUYBzy&hTuApcD<5wvs#TUy_}hf@DSSL(8nrB1H^68OLG9~=Z>R9h z6n=n0Xf*(%x#zY2RQL$ZZmy+y{nkemOEaSx&GN1-qcpT`;LCmHsSsjcp)@pm-Fk$u zUYDSs?N2GG->9Xz_O&yJ&SIjYrJ#HEB;f#s(EbkU+bKf6q!QapnC9W?l^HyR@LWnc zfN;8z4qS0syTF!H_%jNN^C&&d*fq0{Cs2r5Z$UH9sZZ@dI=UBql8EWAR8N(xdNls5 z|2F?%|8W0U|K0v^{(Jo6{oe_E68O~6XpJYcSvFCba7WU%;}-u zM)6B#ziK*2`Yb{+XV`!EecN4``L`FcGb*@LZ z+KF^e>v&)tsgNavcSgp_X#LSP#dk~@DZI#|hYWgGiNoEQ2iw4b$$p_yjv=>E-0H63GiCS3*1O1B-g4gC&TjC+on zh_*>}Fi>xaWtsHec!l5hltF)#L19d~qvzF2yI~G0T9AW^I(5pM|C=VZJ=~6XqeyG8 zOpjG>%7*KNYgmMnmdPiZN%U0e8ezUhv{X*I-SlsfI-^@p0bpQ@QO~5E4w|2O1~ia` zYXG3A1?gwej@`{qzYTNn?xe0lz@Qe$p(ScgMT^#)iWaRo6)jwI;^{Yc&8cYdnp2Tr z{6AL8Zzdf7n~Q4v_}^S~RS6WCp8dWE&1C+3#ELu{R^&F;o>%gnEQjxcMR}Do(V57; zNp@uqvMaA4yRs+QmFgUUkaNHPcK;y%9sWE0L;NHBBmHCi_xg+d_xUFg58jfRZA$9C zW02^0aU9md9HWI(foElpWNgGfIdQzG zwv-jumULTdT8k)bh8EGZe8cs6U^CR~rc2xbGPkW$YT+@yX)+9sjHSmaLsRn)kA_1c zqv7%9;H%2A;slpvsO1?D?i}V(g%B zZ8#AegufevYr~1)p=GqtR12#4wa|DDT22d%<3WF;56|iITEjnO>d#poT5B=eg8MW1 zPeHB7LvJW3-UXVY{G*BP1fqPup{=-Y#9y{RO`wMLCEMZ#cBa~&i+~w79vtJ^#uWhW ziT6GyqvwkVpr%(iy`BGSqnZ%WyvUWsCSvb*dF=%akHpBx}_KY?MWE7oM#)zWpjhYX!O20HP@m1Ns;~2RJ+ux6|I}_)vz^ zOb#TVb^1GnvX3(eGL_j&S@veoCdoCA z!c{JJn>R&e1KvQfoz+up1BEA>a#QEr(yWHsy{4=-P-y^*gN9pm&ub4*$s~nm@yR6O z?NP!X6Q=ny_AsLbl`qZSsa;NVMp9lhQ$o)n)U&XycU3q)moUvZV*3gAH`>`irMiLX z+1tvt?_);PiIK6qX>(2lM%oGf`;C>*gX#b2jNRX4N?cJgbS4pheIk^O=Ig=H=RVoY zQO-X>`KNnIQE6piTztP{E}cYF`!|EsiRh-X@XCk#BQZ!9_`8YkL(=p=rd;b%%{S5% zG&9}$q^WEXX)0Stno1U4mr@jwXHujGIM(lOVePBGRccljkNmHi^cDZBj{Qkh`bw^z zreAxY$t}_Hk7jz6!XSFjndzYv00$^_{!_elw4$;PQrU;7>{C$o53tjy>~pB>FC|`c zL)D>bb{XlR^HK7n=dBN>6JVY=DL7JpnpH{9I4QW%`bsJ#Bc_tr;W z-ovPU%x-4sj)f~->LaL?%sGkp3Xj*v)+>d_q2{AjX*8)<=j9uElaJCC4C_Fh50p;( zoy>_)Y(5;8D>#9)I)H z+Otfu9Mr7+0WsXdLg4dJh9@7_Y8{`l>(=5flRX?)#x4EkaeVZW8IjTYT1sfszq$;n zbL*J;R`T_eQFtU&Go!waGTQWyL$5Pfj~v^w$G(PA3R-cYY`2ZbuLJe%iF(SfgRC~> zi%M&Kt!0(8E>6uDQ}*vBdh_`DN^8f+s@6Syou!qmBd$#FHU#N6)0dH1Ut@VyzoaZz zwf90NGc)VK2EPF{)xK>^Kbg&PSRT@<9S6Fa?_~9Jq07IexKTBHEK<(LeRPIcecT-V zKlzp@$D9c7{FLI{ra5pOncAOp0qBQk!kr4d3lHbQGmGz3;N3>s?~Hao9;p|?-x=@4 znWqf*f_4B=f7BM^z8j=yxa5ze=WaO-bn{5TPe~ah>yE1vYLEK2p?0sD@D;V_WR${= zkwL(BDoPJN(gUpkAvg$!Ubj``a_OP5(zgkydR@EiX6qW>y! zRv7oTe)4fFJp2lp8GEvGY}1_fO!J3K(A@SXPI8`4o_5#R{_e?njd>Cvq{u5ja$ze zofD$$vF4Z)()hf?GdrfU6EU-+DP@!y;q>^=&uBcK-dPsPras;?5Smh=Q9e(^T#2TX zX>`WJOm-q>JT#?L!+-K;vlBUQp(&-?!Nc>3n|;uDj$`K#sPX(n{Z(&DDSJ6Skuw3B zQqJE0`E%Kc{GZ=guGKp0j!ez_SN2BG>|{JFb}wW9MB2@`$ve(l4@JQ8+$REWeE+y} zIY-jToZ)jh)qNjpp0yCZsgYATOA%6rIDIbXV~9~_bC%#~bv|bmVyoe+z_S(MlR6PU zPo37uTZe(@0eFU0sz5!j(s`j?-X7yw@q7^t#Z#D{FfR%CAR3CUl1HWK13naA?RiJI zxx6d+^El_d;O1NXcz<5V2k~KibPO+`#mwqYv+|NwXPR}EdKDw>9j;e}^6OZ1U8Y|B zNjrb*)t_cp_2n$G+EVYTu2+ldRiS!!aO;uUj}hLBLe|n#dUYwSk~F)IZ(}U7-gE+` z=}qB!Md^)n{~6)?C`7L}r4_4sJ*ZwY%08g*pHn!k5Y?+H_4-j!OLzt0rzmzZ;b#eV zp>SG_YOB?m;oTU*>+_~iEB!Hliri--JA!9LQhXO!@;UrzK9~O_@L62C%t$(QlCaHZ z@hACg{!Ap5YH``<-+EJgt9o0UYH#(Q{?Ll4oxv>w!gC)69v83D2iasc71qE^x%W>_hKZ4=rfF5Ix!`mMq*V`PeCWD7dsR8y40TvYY8P-&mQe4O`EAb z-W6B|&cyrg*hawwHVJy1Mlb`t{an1iDR_v^ES-k?CAeQoumWKtXwD3aN_r$KS|(p^ zr~5&4KZ)-3$pLiE!4W!{K=1y4#HD*$7xg8T(vhW%MOFYtPp0}_WaMdR$9s$AFz;Da z-)k_vqPXs;p86Bhr<-uri~fB#xO0BJaZ2_P^@5ck%w=8a^p;)`&}X^i1Lwon%iQa@ z{_q(c9id+8NS;SKZlpFw*I!Ye0+>ot{`e~-<7n*@%_2``(W!^blv-w_pU?C3Le%pdE~Wdeksisr z>U#)1J&iTr8ndSezs$nt{tcqVyn6K3MXqu)lVp@pG0!?JXA}xwY33-OpMT zQaX8P$d_t9dGrJ{mn9wk@8N3Hn7GhGl`OYz+CwuEg?^rsDD<;Ubwcq5a^!;+34v^1 zJXn{9FFsDh*%!|z3jOc(31$0NBcwpOn(>LAuBk{A`pK|Fp$CpME~n2ICFI^t6#D7h zgrRlyh4MQ*CxN~b^8ZDbg!(Q|7+P1>ma7FPHbj-ohl$GI@Qn#;);|-5em6mATWaz3 zS%FQn{{l#tf<7S%%5TL1H*SAxkG0P_XdU8=JKW`|Je_Cqc0AjJ3zXc=za*L zp;PzFw<3B=HD8kGOOLgV!s*1mTJQHKy?@qhN>AT-*cwVhPaWAqvHDEDSJdfr`n#0= z3Z=go=o9SBd3*GY$DEV5iqh!sQnb&P{sty!Z!f*SnEn!GzCyiXxJ53a6UFN9Px?zz zk-}y_FWPHNe^vULv{&6?imBceQ;kOJMVlQ!tya}*v|DOVXt${03#oRidal|mqgJaf zRoC00rZ1#Az7Wq>5IryUwpX36#+trWwec&p5PfeK~lGy zE9YY>d2xj)6r5#UW_BW;7Oij7x&^hhl{SE7Hm#UQ85xCS2^`+aShK>>2SKF`J?(Ast z^7N1X(Z|p~YJDs=+FeY&R2kiGqOc11%Bbh60IoDTEjRsQ8A2<~rQ*ZXs$ytqJ(qcC zC=FLr9Z)GMm9}wTLsTj)PC5?8X*WMQzMKE4bPBey->-;jU2Dsnsm<8q^wi^&^6^M* zAbrE?f1LgeKTb3skMCP)Z?eYpt?i*LrN3Od&n1ZbjnVH4x|i4IR-1i{=b0SUTC#ka zN7jgW5A|{r0?mO(4X&r=Wkn>)qVIU#TKG}4^t8Pc+uzW?;$!b`)c9FWBc-ZeRgwCl zYGVyj=-y#%q%Xilbx`#(HLC7V{qazIlfSx`IMA z?((c&nu^srV%<)U%CD_YV-b4ZH_f~NvMf3M2{rbvcOPo1)7swE^+V4c(Dt9UT+Lj7 zGos}Vn(B@3Ef%#q>5Wg4ZK|!w7S>9+(Ti%=sysJAH#LC6C?(T+p%+|8SAld@Y=1(n zWO!(m5gkP(LW8tYsrm`fLVpjKVjZEsATng46_fnx7?qK>O+^cE`9TL z;CJzQHCnlgN|t6~XzN~E{dz>uy3sn*duGcw>Hg6c*MxF6Q5lzb>h^x!J|e9{m-{A@ zvO;SHx`}NcQCgMosn%8#r9qmgp!T7tDNW?!zN=~-C_Al*jIbtjiRhBjEyL7h?$O7< zsJ3+dHLW3?YWG1;+j`BT33{KhZ;h6(uJ3x6ax*_>3*mR7I@9xP^q%T+UsO-@SKnfV z)c4l^pRj5AQvbWQHVLA7T}zgg9(Tj~T&wlTs2ZqnEZ%OQ|o7QY-h+ zDl@%hxrc^srK+8lpq=VbP>+QB$wsN7x0i7Hnc(RK^?0Pm8a=M-(WGy*uR{1CO22_( z)rk!+suLSb&#LDTo?)nMAZm5q4){|?{dRD2U*7p>jC{$~9A7GvLyLzFV_Cx=EFQ4HiF%2VtuR?OUH{}@7A?z+S*MegGEXdAc7qZLn=5RH1cLN*BMzZhF zJU`7B!^o)S@Mp6;){or`t9>*p_QYE(g?)pa%PwNyWH+(_>^3%r-4}@$>@>(e3Tb%X z0e$d(IiTR%S!$-dc>B9=xt!xk*$0o4{hUeZloNpq$jqtmKs|g<*K6Knfeneqm6HX?a zLO5;s@OvhRHiSD6?o7A`;l6|i5*|!=Ea8QOO9-zRF>cH#@haid~(+Ou1ZbvwKb9C?j2`8NB9N8FA-i&cokS1YQIW&BjHNIy9pm0H~#*6 zBq!`693_s@AaDT#uga?64u^dKtG~w}t zCla1=ugc|N!ZQfZCOn_;q6rF@5H2OWl5iQ}wZ+57O_b$?HxaHNTuHd97~;uYgsTbf zCtO4Lu)+?%@1Efk93SCS!fgn*C!BNNeL0sp-3a#}+?#M;!UakIXCUDrghvyeKv>x$ zYQ@ht(0&?!XQ3ykAKSQmX!FTOac`mTVAQT*1*S*M=!~AJ3woHY=)1b1 z7wV4QBo948547H%=&^d$d0Loz?;S@EnARxwLi9&b*FrB*H#8c1QG?iR0IQX3=c0#d z{GCN}l^ZVbZj{?)wLIh`I~h*4)6L0uikz{|6lZ4A!%4G~7Wu~e zrut_2xj)t4)}QO|=`VoQUhJRdpW|QbU*TWpuki2mA4ulOsmX1VbCY|rBuh!@)3w4s z*VGW@M~h8PjrE5ndHi_rG_FqaipHlL@%UBze)#QSpPYTJ${tOIqPG~=iJoT_;WkO#plPxFQE8j^zm)cpXH)|?FkF20CjDcmf+lK z?Y5n1+~wLmZ-jB5({8(I#@(yk^LJ~v{YdRzFd)8+E?8sSEyR;IW~*^OkCnbdT5Rp; z&^gYZ6X%~B=ieFY&we-7e^IYE|AJWm#S1-t@OSb2xcHUF(Qha4ABanTD1qNo8{++) zbZfIQnxvVP{gASgW86N*eaN`F?wpNrxDPDsfw28Y!}g!d9%eJxY&M@Q!aL1!wi@r8 z8`u`SSH8>k;2rXFWazU}taK~O(3z~=OH4kO%+qd8C*y9=?xiOErE9gDYxv8ZW!zV_ zds(h=i;TNbyPew_cZP9S8F!a9TaAKsn@1-C8$DU(LSSd!UH5jipW5lY$m}Pp~ ze*3k1qv>sL+^*gJ$j(%G&rI_x+Ha z?VIge$g+GN`3|s)0~ZD^VwVPT0y(U6;KRU&>~i-{?t0e6EqBXV*H$U5&R|!zI%S`)0v*2C5eYqmAt zdd^y6mBJEUL+j4BT05*=)?Vu%o?L5fu(nv0*1I%Eu*Nz9D>(=|ITMz0Cz_qvi}&RN z_#i%lkLAUD3ZKSj@;R&xAIwMc@q7}W%BS-u_*}k_zrdH$jLUU=Bd>scy^~k-1N@NS z!Y5Khy2uh8L=K)j47=Nf<=qChcecnC-9%53FABs!F+_|O6U1cku$V4piFx8Vu|zC| zJ^m^z@=dIbSRfXQm&6KDCf11!VvDF0?}|NQzo-#MY{w4TX?7;;^^UOEyTfMhYZur> z_Aq;F(kdoURxc<0p4`%;)#NTq`UAPklgi+}jJsFJeL3k>a!Zq5BX?QS8giE>{gH9F zYvC(J>i;44<)n4wmL~m)++|7Y$z7iGzeru0R1V)Vr2aFxFDGpvw>0T>a+f7-BzJkz z8%Vt@X%l?Qk@`(?UryRgZfVkA$X%ASh1}&ye?{u$NfpHZ(xkVHd|Qote>3uJGxGf% zsh1{I8Y$m4(rq`=yOi|pHOo7Y%P~hYPo!lmdlr<@&&Y9K3B`-Yo+D#1+`qhkdn)nqUG|PrseXbYPo!;Yq@-_wOqb4lw7_v zEtl_1EtfA{YtMIXw>jEQJ2P4;oMy_ll*F_{(MQY*JVbo&PJ}wja*%f zTvw1>U5#8<8o9a|xvnzW>u%(`nzWZ^wxz@=-=wZGx&KJ zA$r52FTz+p9`^h+_5@NrhF*C-Tg;Ziep$;lvaPV{_OJtp*~#{@8VoGSR%VST_ zyVcw3?^a-(xYl=*J;!~^+&%4XrMm)z{mtAx?QX-}wcQFh1H$@ zOZ3GX*C4!cjc00y_mBDKjL9qIRnQ%W_S7tkzBJ#pfT?|Qidv6Oa%PECTE{q$ae1YSgb+@@j`eI3g`S9Exd%8P%ZDDcm~8EUHYxHFyCs+ua8 zNET!5DT#OR<($hb*@abE>tLg9v^HB6);4RqRb}n8c3ai3O%K32 zJp}ud!$M7ljhYH8H3N2PTUe^uuvK$mt#;#iyeIF?^LamBzzeN)ya;ycFj%T%VXGFy zTAc!Wbs8+znS2(X!{_k@{5iguFX1ooQoe$(g7vxv_G>vT*v+tEx50|7f*rdXmh3** zvNik=KLUH!flNV>D$+!T$P{fwd)Tp^V99oYEt>~xwm0nAez0f@MUfaRhKZ44tQaqf z#UwFBOcm2$-Ohx4I|ml-0@%2VVdcIgN@3Tof@Qk~wr#oCC^m}uEvm&n zaR7GiAy~Q`wr(=4-Bj4S8L)WU+U@OZyOW)3cd@(Kd3H~`x1DeIgY{bo`*$!b;F0!N zd%Rt2Pr|#(RC}5|-JWUB!W+vxdx8C&z1Uu2zhsx%E9_NvnZ3qdXP4U>?ag+Dz0KZk zSJ^x5-FCIT&pu$+*oW*Rl1oP>%b-k^X);4*%C@q-%$A*GF0({6&B?Ju2bwpe)~Q)S zg?9l=qq!z(Hl-zI0A>Qvn+m+mi@AV#H2=pE&jA(#@TMzX0xSiT0+!Q$NtRdzCf`45$EX18k>R6PDNs*bUeV*az58vy0Ta8!L1e?$rRiTghtx*8;u;xDIeV z;M;&30XG9~1>6p}6EGYw3UD{zUch~T2LRs%d>`-#;8DO20FMKH2>21;$ABjRPXSQx z6!0^^&jHT^ehK&$;AOyX0KWtL9ss%Jt2777lIsB*0Gj|?0FYg71^gYb z1Mn_j7hn$n@=M4r4+1_1Kz0W$)v*D1<8?4rI4J3|FX-h7?&0OtcP09**T z2yijr62PT^%K(=Ht^`~KKzTYSPY31c+yNL0xC?-C3P68>l>q3_MX%#JfMh@rfV|x_ z0P=N_uiF;T9spgr=v!RWCpQOx9?k6v=nm)s=mqEl=nLo%7yuXu7zDtW?v4PA28;!a zL;nUH1)-lHbQ6SLg3wD4ItfB2LFgn1eFUM4AoLLY1pvATz6gLmg3w10`UpZF!9N4u z0Q?2;769cQdL>S5Z% z4!{Y(a)=IyxF6~t>K_i@7T%_~YCHw-|2$_?x=Ro=V_wm_OMGm~XGjQbl157#+?D3l zj7uMOPRb!K{~5l=@tBdrWHFX`jmRrEo#wKu&#N?@j=U@On4|y6D1p+sQlCldr$&=} zANecI>!()+U_wA*K&r!d|Afb`@ZQrk%wyrRv_H9UveB5X6pxJJ03vTWZ#lmOp9QZ4 zzg@1oqEC59@|mkEA1|+B-P>-?V^^2!98yIkiv;!|f-P)#f2;?)KlgQevdb53&Ppyb zjx)|P?lW#P9?Xu+uFTHNPRuU#j`hy{M}{Yc2mWilzj{}C7kf8)=Sj}voJTu6;LG94 z-KwKg0>cdvA*{FMv-#rn;hWMjvQBEjw3W10v`4faWhhDz$z$HigHpo;@2|(hmFZ=M z(;bVkj05;djLx4eoRkHEoWAyH)8IzpeU8+o)r{5})@?Mj{g6HMmI_`yie%fMQSKDO zXV}oIkcWmj1uv3poM>0!8rLhkM;tBHW1RJx^pV7?-&fgR=|!xMCV(-099Xpb3SdsM z+2zw=;{G{hOuugD++CBzzh|$*cs~x)BuSbiMSRYq*o1}cvx};jWqH!#G{S3;Q$5@{ zojdJlq5h@Srdw#)O>KS2zH4n{%6Y9bcU`|ddTnaT#iy%x!?!(O?+L9Z{OCtxLVn?Tc=~hlojW7|^@Z`l{gSMZvM^n&v=FCIqp)c< zYqm?->*uSJ2k9lJ(d(=5LGyWU=cBLvr@|`Hx9^dS=c@>ct<|bOVth1>#MdyQR99)0 z9iqC6>b;Mv6|Kl>G_LN201w=l5jE`kOO5)4<9jymg)S^|W_T}Vbn<6-M~4|h^d#Fw z+P~b}p7UoumM8Uy7N~pYrO((}x2kMc)TXRgDQeBnsUE9dyl8KY z&S{uiH?4`aAc5^dUt!;%xlv)S;ZfnU3uB62*PlWW$G4#A%Cvs;yIzKF{Q_!ntE@h?c5dxj)fdzkc7%*^cH1y5|ELqHqtu`1 z@ITi5)mmkPy3DM9(#hp)cMMLo3A7UA&q~i`&2sJ7+{wk|#ueGoW+!h^Fx-dqKKNW>Bf2x4JfG+( zVCsN|+n2c~&g?5w8_<@Uq*i^6am|jg+jsmfaCbD^0dDO~R!x1-&dqe^_5T+O_u4 zu;l`Plj7O>G~@4VV(mETxfJR?6D&EQSoUqZb5X_FgdjJau! zb8?(kvO~{2UBYwc_L?J$hSQCeGc<2tQ0T4yrLHT7%;gyslsjGBmb)oOVs%yO*^2Cj9< zbn_dFyiFkVnm>M9+M4APQpaG`B-zC?MryP{jJpS{JDj+uvpUS2CVpgfwYu3%WOW8? z8-{R7(aDEShvfz3xrMP)gXw#7&MvbY)>l7k;V3!r#y$H``EIWLg8yUr>s6`Vk^C0+ zw&V~MvlF^c&^=6$x{kfvB~^A51s?RAGzB+%UP5Yc5XY8-t7}W_8 zj6{`TqSdX#z8;=koHdwLn@vftyP&(}0tdPC*SA7f@9C$vfAAIwp*6yx_e_ycs-U>D z?v3aT@Rw9-OD3V{r<*372l|73(@W>diEK&a-2GR@)QQVaeemAW0{vN4da1>)kSm>` zuKAS8O{rr7UJsEiN>WeKD0Cjbs-*f!Ep-}jmGwJ-XzOy|cPd2+nETKHQPRv|fG4fR zAw9zrSa9o;gjSS-!H2^4KI@%9()qDk4ljYn?bY*n6@7xylL=&Xd-totST}^F*=e<1 zdjBHkY4zwjHo)IrO6Tb4R0+qS)G>SNF*^Gu#x19x*OH3LL@*}jp|*}@IY)4S`Tmt} zGt#Z*D2?cbg=PL55Qf2dDvf_(62OU9bES;pr;7o$ ziqWwWZ^uwoGcg!ToXs{Ye9Ov|gN=X;pNudQBn38sRK84pf#Wt6XH^$xmk(QMz-J0u zd|O)>WLb|v3F}TAevrQ9zX|SPkyvneCiU|NtPC+|txtLrF@ny)+}`LAVQ(dfUT^xQ zUi`18LqE{Ptv~qQJHRhcNcmNitmL%Q}Ah;gP3i;-*DqNkv%zUDC%MUj2tM5}cDy?5y zJ~{!Rf^q$_`!s-c)W`g{xnL&0_C6(GJ@wHz7z2U_sqohqE;X7}14V-=Ayxhg{guFF zvO{zb5!emF4Qcb2#N*uGoD}m<4&O6-ta!%0IKnG&E?_Ag$R5RpZCcvJv8!0Ol;d4e z=8BP>_ENXVh*x#xmow$383ju4PLZ~ypA{3oTKv>QYY0)VDpNLe2{JHEuSDsXA#IR4 zMNIGb!D+vbYrn_Weuc6gVzEnhiT)@hKtD6>a;YzXJ~Jx3597rUzhm;iBNU{xedSA+ zKW%Zn;>)D;2l;`#?;Gya7aOZ*7(yuL$J42Y)&=1KYslH>_y z3;3Wt-uYfXhwiRL9~$C^bc?RTv(`U!4bCs~`9Xm9u8mdFC|+IoknPbbl}*)IBtkoo-vd#;cb-ce^?axiycdZoEYCcYs{6mV(?5D(w4or>or=&j8t@-7r1nHeW z71l$$okOAoJ!ID($d8FbIXu z?A$zxy^VMGCLZbf!s>U39;p8Avx)Sj22R~yLj)qpcEjJoHfs3?=Wo+K*NoRhTkH^K zhx%@i>}BK0`S@!qrQoWodKb1N{I+HtE%-HdIeM3+!nbiz5=^xtCLoupZt=NS{ta{XP9t6i~)!^2^J9Ep(^nisHsgj&9kKM9q?l>J~i_5BjK~=AP88G zoq;PfI=NLl>+x}a&;EWhl*P{efnmDA=|CWmX>J#9bW(Oy-rTE{LKUf5&f@4{uf>uv z%P*{1eL#n9n<3RPEsHsh`B~?|NnmGMXA8Kw*gxgSch1GyuLam|3|QOp&GQkAPo3x07ts578pne7g-ug_ z;<=mURmHOS(1j(meX%=cG5yD*Z>q`+o`o-w5bbJ9yVJ9KhsUSu+4hUfWPcB?Ctw6f z7X+zHrcx`k?s*1ZxmWz|Qt01aoGW?# znAnM#=*#UMhWY`BC!=9L_tuL50>y6EC84;!_WYy%kyK4JZ$`=wIl3PV zk!b?7t@|>S5=yeQ-m2Cs$#K|r?`Sm%CHSILC0ZgRqj^4@ky|m8)|bR!S07mC()v+0 z=aBpc@c&| zG>xmoj^TUB_q4VWyW!IT<2tUn56FwB5&=+F@NzU(6_ha?lbDKx_K|?t4>uBeIbz%^;C@NMO9pmD$6hGHSeIZ3l^fY%k+AENm|L4Gn zf2px&mwGXcu%DyJiKX-y)~YK7z?i%wvsTip+T<$6$83;%E~{jwz_lyy%*9);|Cxz4 zJsq;U>TI%N^ft=hV{)ExEyl;%HM{0}8*yqWrYVgb?Ab8K>P%K+tH{#r;Ru(u&1qk0 z1*bZeM$f4om7{1Hry~Azr4-dEt5IvC^+`3|`{r!eS+=f`SCwU5k-1=NZP*&2tIAjp zu54W#sp==J39B|($g>u9YapzSdj8Jn*F#aylAwhxW~c&9tAak1e01Q%kY-73f~NK1@Wi48P`fCHuBr#lBy=n$yl8V z7j2|zJ8gIBr=}-b`?y5GsvOnnWWj2E)iFHUI(vHb@y&94wTv3sDjm+TuBvlu^QKI7 zW=?7yhp168Q{)Qw)=w+j);g`wE7#UItyC+=*xjh(OIq0#FQ$4GLDu|D->oZTLF$}I z+dc3r=hn=vWGj8gB5pJ*-;WX8P*!-{g85Qyd-&880Q_18C3S#qd4pnA#R_}n_R8+@ zbM^b`aZ~gvsYNwYr3#BhIa9So8@ffs#q4805bet7+j?qdja63lzT%R?M2T18RFRjB z*ZBStlI6ncQdC6y_p!94pEep}nsZe)t>a5`$2JOMTuZu^L8f|E-*stL?sQ9*LTy`? z3{E84%9pf=q}%$rw24IBJ8;Y2`lA@VY@U=`H?@eHXi&g7zm#B5YB$@KxKVVraF@JM zO|lS|Bv_O?JDsHPOSRR;wBC}t^~v*MYz8A4E02vBHi$@r#9>>?0>#7 zZ0eqp*{3i~o*JE`HC4)-$*xc6HSPP_CwJHOSQwh$QSX4CV*mtHiaFN zPDlh$h#LQcWKaw=!Fx>jzhEOYV+uEhl92fp)6P725<2re8?q_am~Fxez(r&~a1tsL znGMgBX-pu&3veTX`49Uclkl17P47&h#-I~I0m!1b!3@wkuuTZ2tYgLr!vHyvv_J+Z z9i%2~Q`#}M1T(;dNLmO3ybf9uwCVdXq=Zxey{Kkz4YbbtCL~kNG3$gyfQ`sfU=5TG zaucp8;}}(f0w7z2E5sIV1*Pe|De@R@LM=c~v@O^cW(BSZ)s%nCJ>d)x`49Xe?t!Q8 zRuG%8OsU6669fT1B6q>3?^lqU&`rt4gc2ZtC(*l*XOwI9u^E8OKfsHi1ropGMR5MG z3mE&DAPxu@NfP}Fv=CxAUKD58U4$`=1S1iDsK@uaG-E0W#en|cXQXTTG1deVz^F)E z2r)b_nltn+?B5(+0BTXi;2db)_s&SW9Aj1q^8ng^un?IJ%z@%XcE;Uh7~@TF0UU@- zhvdNXqB}$FLPyN1zke(Ye*Ta}x5~W#_djD+y^0!X4(GEaoi2CCH(9*G%A!&e(ogDL zZ%;@qDfyI0RuBig71|te$$M$!1YCeoknj6zoCx8+kd{kG12Br}2DLz2y~lj_4+xlV zm?JFVl(tC#`~w%jPGmI@Hsmi_-diEh;g*m{^C!3iKK{d*=xRs{{L#BPs1g`ynt#BT z{tKRefR+A>PyZm55C6wu$qjHKvJ_MU zuY=x1Y6>$3mw*ar7qJgohwg-NhTlaS6HM>{h^a{stq4e0xMF0{Ey0pI6YR2$;Uv%l zv_$HH_1||QIiv0pj&UZO0G37TLe}4PLXoRaChbkRY9^(c?deeNk6Jga)(F{5X0Zm~ zjs<6$n2o8#=s4&(u+y))6{SnIv<@SPvo6U_ioPO3A|ES<*42z9QLdIkGH_%jiz&eq zHjtZ5EWZBFg(5T1SoFnaVl=}(*@?`tPy|0E8+f?l6vT{_q4mCH4t{#e@8QnZ>T02i zI`sMM4tAf8v4AgxiLs0?P$A~ZoFHSTvfML|=2yO_MG2AS*y;F?fX8+{86>jva>(aH z$YJ{TLj&A^#%V*xU#~oI{usR~!~w?kOx75M4pGO5x9w<@ro^(tJiDVNDx@PHr$&oD z#fV$SOAz3PyOKuFF{4o$63ce-q}V#qOl>O%4}WAPi*BMv+tVQaS;3Pc=R^~|t^6|d zF`g_si5jg`fmk+!Cxy;QeR^WfvuR-@@$F3%<@x3jYesx=*ilR-m82OZ$O06=x5n5} zamff={o%RrfvRUgoFcE5h9;ZEWozRBPf2HpUur6cJ}%m@Nb=N9P$9jf6Pr1X9cB2~ z-Ow{F`Gwfrs^t(vbOv5(Cj6Ta`pR62Gxd82G4HRL#J738PM~u~m|9L0wOE`5*M-`c zq_Q_nib=#PDzLdBvbF7#=GY@j7sh6j>#jceOjA>OK7ARmnWVUlj$Z81V4wT^38=qw zGQFIKQ=r{4|5||e0nTPCC$waPY}lTXfqDRd{I> z?ma&Q8Li7rZH`|Nm333-_9V0Kx{fFXX&JNm#Y8(;yzJk}OrK@*m{j!L$bf~BU&%s` zH}WWtBr>lAI0^ZH``+AIH+3^N&)&Mqd{xuG$YOJ6mVi?@y-)0vkXBzPC24|97n`7V z#?}6@+Rgnn%6?&BerWYgKXKjkbi0CcQd#V(Z44tTTBP-~SUT%y^Xx5W^-7$D(IF)m zLr|Q;sfE1bscN?Ti-pcTr4MBFB1b3Zg0|mNj-d6NyWft%+L4RaFl$>s)48%mU-#o# z@*TfcxqwWo+^9yRdr$^vbsIbOE96mr&elq3@ej95cByIA8ebjzh*xgy=6AQ36`ZJq zGZ#Y(_5(M~SNP?}W1KRQ*MNZB`AutYMIVQG_9K#Vi#Z?X+~zmMw70|j%`Cs-jQGX4 z8SbO??PmTwaP8@4fL~E*^h!|W;KpUC_A~PBMf?n#Wjuxh zPq&F8=GA5=zIZJSMWv>8to65NFC&7T!{)J1ZIbA<`Dc7WPG9F^PZhri9=SM|nx;}KkZ&B9q5 zS$C#pjkwJj8kI6#)ah0(WBu-M_Ql!1a97a?q3zJm-l2wui4GQG%t~8ISz@n4$Qgs^N(ZLc|_ znBlBF@^I^?X^jQdBW&_snt(RA zGt7`Z8~S)Pt`nAH^cQile2p=LZxlr??n!kaEdM?vioN@fLYsC^FYbgPDHM4gUfsnwg9wXXzx`MJ zY&H4^lN@~(d zEq<5MJhu5Z%t|<=Pfwee(Adp#Ht1|z7eh-~8{cwnStqF$;5FyZ6S;q}^$O~dHw;P5 zz55BjSG+rOut$Hb@YwgPu7Zs>tT0~UNz0r1EQ?XvVUhy1dwQZ805S}txOVj*TB zY9W3gav*jfidAq^h+KeN7+nxuC|4j?I8iWBNMAr-SY1$EXj5QQm|c)vs8^s@xK^-M z7&%Kan>#Bw+dJzw3z^L?l$nK@4Ve|6H9h=#h;hg~TRdx2I9f1TNL@f(SYA+GNIT0u z+dS(sdoznHhEtNhM6jw+vBJCoSw&eTUWEp0bUk%Yw%~BQBg{B|K?`mRf)ig8TN4$3 z5hMKo6)Qi1&Y&`@IBQ8GW`6`N@i1N=O3qm;tw66jAGOf(Ry`>=DI_u+xBAotgBFcp zG&?a%KU+O(GkY>iR1#;1NBRNhgEVjZ$dIr`*T;a87L8Tfj}OzCJNep_dPqp94kyn! zmB~9UUf>BGRyu~B1dqM?VliYdt!V4{!UT`nz{ATZ*LAVY{?}UX>;all+{w4En>})< zPhdw_*vTLhgf{WxeEQAUhg!Wr!QAW;8CIRA4`9vh^-=3~OKVZ_w5Ezl(t=Lxg^nL4 zvNHOa3j>BThBPEsQ8P;u6P-PBB)DUIjRv8jY%%Ne5 z9lVdV#pHYvuu?u+aS>555l9heg@Vq%o1=kd@sn2l+$e}PY8|4kBHAS$8$WT*R)l8# zWLGDC%RQ#hsdRZ(n%}m%cGcf)MsLcD>7OxedsK((H!7Ot``!t}IjsDk5C7a|gSBT+ zDynf&g=(D+x~f(0X>drz^beIwuTov7ju%Yd3GOlU5k+17?1pHyF+w`%QWpQEj*T~L z4c`fmHq3>q{L#_S?K3VD*_buiW|3z#gTzdzk`2q#!#M#3^OSA||0upsX=Giz_<^vs z=O(keO~h{6Tzd{j?`DyYpzsP0bBFCpE6(wm^a^k9PO11!KZ^7jch7xB&vO2=rrq;Z zq>JE0I^z9Xx=z<>P!04w7YIGZ=&ZkTy)=u0$d&tIa;vePf!>Tn*+)x%}~a(thj+GrSbvaOq{aMZBdcisc#TOR6Ar?a^^@40OMsa4;4+-CWCyn3GgW z$T1Uhnh@-a9f~rK`qVYB4rCd96nsDjz%$i;r5x(R)z*^}#aXIjRH?W&pNPwSm2b#= z=(O2Jon&TPlzT4qwE>=n4Sqe{zzin^`VHY*owFkG<1{kg*CX;~wol8?EAI!9vY-2H zFtqFqTVA;hgl`Z)tG~W}Z3nee*G{@wgJNo#ni7ZcTbQq>N7J)Y#~&9iY{PcdggJOT zz|Z?x%UX*J3m{>5er$qW!AVev9gg`DGH6Qswz^0>TTf~k2yr`u+At;xc(nRC=;Og{ z5t+ZkZmqiFO`Tn1kV?Vg_GRx^V|46vRh~Bg7M*SX7ONF9a1;X*~@6W zZm@i3MrSJZgO8hiPPyLN8`)D_KR6$O5bJzOx0AQy#V?Nv2u_=EYCdt%U z)$+OJN6f$RctrPqonNnb9l+`2&JK$?0=bQhdg%$q9UC2PozWJ9N5PEwP1SpWMP|`B z<6JdsgQU$(qnD){9%ece7q{I#ZnwQsvP;>(PJsymp-1yIrS|;^U#5UN{+|(1we>kV zsZO&R@vM}JDRH*=D(63Ys&IW`V^6|KMM`kO($;(O)d?^8= z#BU8t?p2)o1gM>Rwpkj4g6KDsn)*EG6nF!awO0u|vOZH?JqN1X0UeAl0t zG+M88?mD&Ba{dDJtNp3(z2vSIT{5)jlICz1(Y%Z&Y@tlUoTWQuxG2@GMaPN9h|3Mo`yEc7MJ+!F2*E%F6J+9D38YQ++LdS z<4!g7tTgdGT*(A9(Mn}g5)*O_xSZNE54mp(`N$IXeuw|VrgPqICK10~htmGjt~_y)kM{+c;{FXEQI4C)Bl%2UO8;;CO^c+9J<90lCA;U; zHkO@&p_$WGB}HhioG85ZG26_D3HbrcErK* zOkO;bPe&f%Z&Q7&RV8~z<#|Lq0v2|M?N8p5BfPQBTGKr(V2=&(SwI5EOEY@F6|v*i zXylpmy@Qth(w$-JjUmfH#UgmTBcIJ*#nx&^(+zD|U&s5hnS2zlEl0O=FwXu7x9*&! zMCtHerI}g5hvUjKZI>-R#Qj?;cmByQi>)3`HBG-}=C-Saa|QQKEoAwhPLL~VJ>Q!9 zs5JB}O}ZkDjhQqp0$qzFP`I05_WH)=-BX|u^^lzmaSMIX>Jh4hq`rZtN08vD>=Pk7 z^N72QzRl)!%X;oN#nKju*n2-uM^G*XfB${gO0{5p^J(#BE-sm6-c56p0$cuRK|1UpegN^uo!FWq70LmEq-A103+o^?hWr zI9}d!EBF#xkPrLu@^&?a{p|;OLc?Qob0^d0pv~aPYh_ikGy-DlLYY8Dm{#Rn@<>~hsnVCX?N7#i~sY~nq4oF;LE<)YfU=SLLQr!NgW)2 zfUmY&zFGh4GX$BA_6of${AJ6fT`ao(bwf^(MlZ%s?k4Gc`6h?+X4cu zt;t>+EUqhtD|sbBJ^8y%6Fohm+7L>OaK)NwYfa?ogo~X&nZ?tjv);=w0ka;GVb*zR z8IgYVT*r4Q@#DJ7&m=C*PX-45(Pi~E&>8?OMS`U|+qgg^9p&j|)-{-11YTW=$y z7Xec@;eO1<`3NK*v|D-f-@!lG#R|UGd34(LQNr@@u3Y0GBZzedSOg<@cEZCZu=lT; zJJX3Menh-6DkWZMlr%>fAH>6X`jTdG26tm+|H$;(;i(E6xy&_pr;1#c3A;93A5tv% z?xtRO0Lm6k1ytG9xGH>(SC0nY=%LTGM=#Q#3j<3r@PS1e1{T!6gT)LCe_7TDm?bmM zZ~Y=kK9M;1MeqJM$YzU~4C8+5yV+p^1=>r`Ws#Jdl#)gf|2L*jPu-fUBInt%gHz32 z6s};qDmmL3yW`|{qlUFqlT@vWr?5((<=kK=&Qg5PjCPc3Hcl=9u?+8Rin?$P7qSNL zcUE^@6-BPgo2Ow>G2E<+!LFA9LY4XT8>&wc*C)p%@oo z(WT%ol~}&M+~NJmyl~&RZZV^&j`8Kgc>0nLvb6t_1=K)Ij=TT7kMj#bEA$9?1xc@P z%eZbTE9pfwg&@yIb}=4AAf8V}P7im@99p4~#YHNLV28G|VwUJTw5e>=5%&FU!jW_D zh%qsOt>lJ0@Sq}Z7OJuArirZ-D<C&+em?)5rEBFaa3q*V6pwDu!-)s+zCtt+W58nv8#Oa zWV4e@^S+B($1>RfX*iZAdA4s>7|iA@JLy;Kv-ybBERe{y#9A7 zZW!-ECqU@fm*s8s1%W#=U*GY*kg*PHzk8@kKoTxW0Fpza5D^_~izw{SbF|fRunsui z7{zPTB=k4IG)5L_(W*$cknH`4th-urh0PH2%O`0-$~B%p&s}-Cepi6WV)9AE$Dz%PS3Xi> z&dp2C3D#r$#w#8}@X?`yGk^pqGKg~Z7e89RzSpWCLW%QsxFnT`AWwJqs29tUlZ z?gqp_YVq}DG%0~I=UPG3Q;6_re5S{csOe_KvCO}0qzR0v3*!15uU zvZGk|!h#m{LzQ!kHgUf$M0uQYlm03|jQQxuS(FMl>W;qD987KqA3FwOLv1E3C*oS^ ziBZfP*m>vuYkU(iyeDb+Ty^FJjB@>J+#-2|g6BOSv4(W~EjcQ67iP|chH>87E)UzF zN=19}3&R3!sT$wf)bW!d{-^aVE~`_TSuI4~r;mRqL{~Kt&s{H1c^TOkGw@2Ugh4sn zxk}8ntR-Nxwtj!y{GOlFGF<$leIfl0m(TY4*Eh$oUlFM5KcSc+BE9bnz7_3y9bfDh z@vYyXD1)01*o}D1-(LOnOErHYl&a9uX#hZ~{AxBW2|& zj57?zO6}e&g`2ij>LWBOd_03ZYNTRje?Nh7#qR_f z?c9LOXl|c5pYKF|X;l@qhc?kJ$=i2`4Kwm&F?s!d*3*u1GuzWkx~)g=9=8iIcTH{X zi34PC=_s&f>c`o;g|^<7_vu%K=PRDaww~Q`;7*xpw$59(3$N?a$*-Q=*Q!k70mDT< z_Y=u{QrxAVOw-mVJ>iMVfGA&&97U18N6|1waS>mPyJQCiEPK#d&wouE+qiA`NFos* z%|MO3tey64tu5yFCY}qK1^3+a$0t%;(-uYE&LcFQnu*By;4tyE0<%KZA8t%cIPCT3 zQ7%iMH8ngab zbVPyy3m?74trvRm?fJ7**@ePR%*&N>@b97QGo8;WJEayV-`+A*j{h*8<3T@)otaLO z_>wfgYwF-o(Z6Oj)uwNw#!fXZnI`!=Ff}q`DKyn8pzjs{tjxpBw{sa)k(P zfyW;oyGLfN?^^=CDmP28Jq1N-^uB13Ydq0$?_w_#Jg^ihuXIKK94B<>B=5_J=d zm=SA?kehyrKSp=oc2R_${oR+6C+7Pi1cj{eZ-s(YRF9Tu^!vAYrA#u2%ok-jy-eAX ztki@__*YP_mhsL-hYcIi^NDvOX&1G^)Ph#l(KEIl9Z>#S#=YXM?hpIQ+AW!WD%$%U zU!Yz39qPF@8{A$49TaKBn=rL9Dl|S*QS!wR$O(1yT;V1S-^U02NV2cMuG<0*-MC^|TFn)OTFSLu5=YuM;k$78c`u<^Z)7R}A zGDSlY&&ZcHlZAGB4YlUi=+Byc8)P^-aB+hb_iRA6=p!3iwr7Qt@XPDJ`F84<3D1<+ibu-VJR&4rTPb`4y;Eyv&g98nSuCHm&+^I87elUG>7 zqe=LfC}~M90aejekn$ou;;S}qv-qTzL&&}KAMr`XZzI(#2XU#pw9|W}V)*G|wYQq7U9Yp+KRue%EKPXS`WJ55TSmVB=&l003CI-UN2`|4Qs{5;q&$o1UHL ze`*{odH^mi?l&C=$D1z?@88;AKW?7CdH^p6$KP}QBeSx;SvlYQI61lgdluJQOPnk$ z|1=zLzJD!m$2ULjzkdI^{~iCOT;Y1vC_AImBo=8gDZPN$wRu0Tf;Qg*F^)g;@scH zwP3+@ua{;54JlUgA*x2;Cgs2rE6i-*5*5Fk<*2;;s zY8=FIO<{!tk;%^95(Uy)H_<^ylOOxGt%OXE+`XCA`xnT<{wKcwkJtI{{r~^JWvr|$ z-0bZCy@9L%4i;8+ZnppPCZ6UZe!*JK92K^5jVVbqcLgpTUVqFV!;fJF*xF9wpz%j4 zApZUh=lsF4&}weKz%Hpwajt~XZl1j*+pgKJDeK0$An`1Hf(V-PMcam5 zcFF2RFDu)Z##n=|L0-a-5Q|M#cBP$P0p>zeF(U8Z8DgWZ3zhqAuDdOJa0V(GAbscw zIL}GbJUOeQ4t$!Ed{_7NJZbn$|2U`~=04R&1hho&vNq!YF1!fwpY?aAA83txJR_++ z!NNNcDeodW&~0fb?q$rnWrnpBdiO=ItD~3iXmi$|F>o~mv>}&;=k6+ab2P~F>OHB{ z`DMCj`ljea2*y$LeW07o1voF(W4+OiwL;vEXR2?Lo@?T}5XfJd8|mE~$cC%VpucYd zh;}UfZs2!oo5j53r5OG}I0WA6%uK7ca{V$jx4_Voe}Lbi{zNZeZ_2<;yVV`9!rytm z>m{#`n_159T>%(Z=Y@}mg>CN8lk;oi(uCE%o;U z^`=}Fl<$S(<$>wLGYGy5xc2t>>YS`UtvPCoAXGT`5~%w}3~_VqIo)sWr|r~-w8fI4 zHUxV(L|kZiYvQs$lJCw`^y>(1c|zUmC$PZR0Q+Z^0^tf#$AN-svr(&6Y!7m zo8|g%q-PWWE9O9ivPT}$MdGk;=2+jHdSZ8-yjt}?VDgZD?_%@&uqKq`mAPQjjgX11 zNHl!Ks4a{&p^#w<*83hWj*(0<;n%rI7SxTiZw0s^Mbm4ncX90aklu+uYVn25q@QSU zo~@V1e)x)@%j(Op6OB&eSjmB=|U&Nt$jT`qJL9iW8#>SZnMe^_$I&E@&DuYza0{VIfO$vJAaP5HSBEQ!R^?J zf?~z)1ONJ3(5*+$mb@_PPeX{aI+Vnd*5Fy~-%%y|lyztoX0D;9C-{_c%zvo`TQq!I z*Bd_jb~Dzi!Nb_wj&zf_b6#t`AOLUHCB?FVYL>#8(?{_P1qrWvF5P4wQ~o=sAqZvx?C>dwH#|O<%L3WCl1$)bQ0@D;S=?t|fY1 zduQkz-Vgt~cnaWe+#?OT#Z@&P-`T{cy7sHN=swY(-it%Re`||`h?pns7#2 z=SKwuIpQj|#ZMZg*-KIybeU~LH$SNM8h47NQeoOYvf&@#53I^huB_W%sxmdh_G7orW9z3SnVq*BbrrcB#6|O>B8(~3K!996;Ksowx%7MR!l!b z9T&j4AuU$2AhwbwWxj@4DMzoqbE}xIM$l?77_H?8!$N0*m|Za+y1B(>*yHTCu6J1~ct402BxaMmkf%d57lv8z+z=N_ zXVbi}(!TpHxL1)hyaV}aXL!Ld1xi%lsh)ist}tkTb>n52>Omtb?1D}!G=x2?pf99w z!Pfl#Sh3*{h}21NQ;{xcn>DvBekmV~eewOmRm+{UC1`UuckI z2PVj+0)C6C0||63{-NJ5n4k|8e12Byq%A^3Ofy{&Q0S{FbfK|Gxc8wu2f3Z9U4H+84@= z=-6Sa+mZkH{!etpE3A=NFEWVxa^})(;bKs8fowoa~1iAD_=Q4%#C_I6b$ec zz7Y`k3@X2bSqKQ}R(VU)LU}{{48It@B~{V=hjbzTdvB)2)`5Be)N2%2PP+Jo`k4Ka z9{;l+tb2hF(tWXzB*@7V(2VXr7_X8am|q}-$gh$g4A1VfW#x(BhQ8Q)skY#E>5wUS ziSi78+^pV+S1~hKH#y%x<{#!AcwE1QSJ5A2WS$ocRE3Z{Qy*V!X;m-}P-IeX0R*DF z5lF@TFi55R5Zx{E0teOO2e2xb2h}R-mHlw?rcc9`zn~wh{Ei0mEpq?KoZPvj5{L%l z3WS5X7CruWEqHttJ`VT}weT8dRQv+vpX`P5g3vDk!CHI`0v5h7_at~>zo5XYyo!P9 z9T7l+o~$8SCs9O=I@nSIdQY-Gb~-%7=T^?@AKfAIfK^HFC1P!5*(v-$i-Z zpHL6?Dc?m>+#kkgr*w+4yaL=G5D)i63-hsZvb^7q=^yU<7v|v=WqrdvUM0UPPn{qgJJUhw-pd0F1?$M_HTf#1Y;$u|M|{myrvd4AbG!@oT`DbR#x&&d;%WskIPDUWw}4x&rYYmhm`E` z+ORO6Q6-eb}IYbQ-sHB!go<&_9yYfJy~hVb#Zog zhR3VT*=ff&w*L~c-#trnd$T>m+U_Pxym2aG?4%^R5|3TA)UVZu47v&ST2 zxp!qRpWk62hjK*CLuR89xRDmln>%T| z&e?ke@|)rt7N+()I8+D0(#QQRVW6w5)uc-SrblU%gaI>r{{_G!%r;`Y>Ew^aEuF=@ z59rMW*BQogQ>dH>UOTV@h{q0<@|zOVLK?CSE8gVoi>D_@Vnoeio86YwpdDjd^eUdv z{>!h314flK$OH??7Xy)gY?QENK8t40U$%JgkSSQc_27nOKb<~uizfxgNB(!m^lwqb z*@f(CF>Z*_qYxsPvU{#5eCNJ;T%&OBqbr z#Hjy<_WK}VPaHD~?3r2uAkK^-O&Zv1Gr;hi!y%Gt}4$Gq7_?7OeTMBhwu zi)W>R8G?*5NEyc^N#$Mm-ZXdo`3I8-T%zG>xWmlIp13K51adgQe<_#g=H7S)lLj>q zbU5mpMZ~wn3A19DHzI);vK>R6wM_KcMl@zA=rBXi`gEwXU``SNBkYAx#ai6kq$X48gK)3!U=ZG<9NO& zGoH90h)nuhWb$PZ5Tr=g{um)g57p_S>8@0%rU2LeN6zd>3wOU6>nc^T96%8ngPFK# zP#0#xkL=t@z9J<5BNEclC6e7~$ePcR`6OB-YpOIMij-MIM>G>bn)!n;Gii^6xNa%V zhDk~_dntOD%?Eu{5bERTfYFE&Z9|=vZ(VTskHFn5tjvPBk(>zHY%Jb#{;EGQlNvHk zBCarN)^HD0cG9Rq{S6XH+%}3nNW2rt2FaO~+Yoo^7O3;9@+3~+lkV=97z~A{aQrF^ z2Q9JwE%6Wq`XFrzw*Vxi2*jmU zPlQhCbjg^sLAi9K#EcC0iUd&O zL-eZ>haVLB3IW1#QEGEMO{0vEJG5NRT|al;6`?jk|Fx}hz?aV=2ao<2J6ZSCf9o-1 zj1nbG+#AnI+N7NHF^JQP$8X`MSH+X7QHwN~+3%gsr=qE>n2~>D{m;Zhu(pQoiysVa zBJGQh$-+M4xOB{ua$t)j^q)C$64y$ymdsx}!DZPexW%vP4IQCw3Ga)OZW-ABLJF?S z*r)i#PY*wwKn&?HkYLvG_w#^s2t*J0miQl>Gay+1#hHseE|cgsC)8$pT{&!^WFUqr z&pby!x^?s*hC55BKKZllT(EwnDqbB~8dcmWa&M(3lI~x|2ATTbYD7@dX$DMsNJ!|g zPiuR?KbHT#z&CT~)Q-d2vTo$E3T)E?o5|WSj^or3I@L;p*d3K`MlS}|5;mVE1s2C% zAUyFUEr=MFyqmLCAK&kXFrK?j*s@=fDvr& zqNB*v8^~`930uYw?NH$RD&}OSOuhw;6Weuh;ZeIbYcq58m{M{!T#oZ<`tW{Em+fLrQ{A1aTrp z3cS*QZYD*#_u%ni(=ly}=v`gAeGO96fB7W(?vuiZHX1_LYr=+Z6@u@+60gUwX6=K; zNxE{kY0RZov|GZ+F{1wm0=T%F^D#$UPfAPV76r~TQSWnR=osz4drXexEOK3ee-@g6 z$tY8PL=Fmv)Jv5P*o4g;s9+9d3EC2QyETAJ$)bMCO6Fs3KhNX&9(2b;y2Fp# z0GIGyy(ql!82U9oVaSo+;Js>R|~Ll7l=s z_DyhqJ`FZGbg1{QJ5b{`05y1G8~Y|)indc5NH2+y7Hx}UecC4NYIMxMJe?h|62oUW zHu$zMqk(Ag`%?UC*`KCTKmN;dL#gL(bTSEyU5)>aBV$eXjPA!fR4Nap!^4-f*JC83`*?uhx#}Co&`oYm55gdL- z|A9@BLh{F;juH(a&Qw#=3iZZR-lv^W9Xm29C{jYAatg7nxUdkypw~`Z+**8erhf_G zp9B2)=no)X1A(OY892*C zswwV533+6R3D*w!0EmyF5t;sWwUkQ8n1B1Auwa{xeqjFp;J4W^tpDVJ7-`YogQTDk zs$01z@HDj7*B4W(Xz$-Br!X%q4CFEDXecr@6c;O{Ny-3`?*vpNo_`sB1(C-L99%LRe-Ss2QgBT zVsW!f7UO+wlO01hz}^biRfcHZJ#cEzO&fq3)4MWxi;OJD4!AeO7E{Mi{~Wb8Yw03O zVMH%@`B{JD^stLPP`gv{U&~%v$oXHUgr8k`zin5a)9shf)k z(~{r4AvRz^2^TXL$4@5D*3r=7JPJPi7;Y2|rUI|c&DA!bN8cBHdom52KUKZbga)zm zJ#!TxjLg`AXtDG7SQuI>9~$CoW#H(ktHUf-k+!kY+E`)#9);Ua-OqZ)mXZnX3YZe; zk*oUpkoq|{il|L&S^l2}x4T>$l%x88zV{U0&dhbA;lE6e%;xF&AV+B3$J>7gk}Bjp zP{2N|u+lF${YxTJ!l39@$lN@iFqK?9(Lka#p^8SC=8y!1<@TfyGo`1zvAVduH6Ng) zk!4mcrWEC_@BYPbDZe`k)c7AiMXjy@cH=7FARRK;&KJ{3P#G1^JKaTeJ_^&1y6>V2q5`D9h{J#eV!t<%0TunWK!SoLGuq7rS|;5J|gta}o9BV-e-z z4$AJzB*m1vAMTMBXiG{`u$}~IBz!fu>a$A=8?1&Fnwq7J)*h;wn%vCG(`J^M zi%UzT6GepKH8;do*)W-+#n34r@uSUaXJhH_+suhU5fR^$Qv7=xz7)^~d&&CdPCFzf zV*ecz`5(jDzwu=DKaP!UEa{l=WpLNu@VFvU6>WLNxJ;#l%1Gjhc$U<7|DnI@CC#$c z)t04FQnojv4=iONujTD)ZqnYDd+lrg+B2A$(Sy&Z{%c9I55|%JlAC?UV+b`Y?+E~d z`_YCgHpBoelnXOl(vPSHmlI&AhqY0WUYK3}$>Lf?OM+$8agh{xaQ2LJZO({+-_xT3 zg(4SddN`hYjC={)$Zf=!)=$>uaqEocyJK7a)Y6sXvtK5-&2ew-$9Co84mPF!khhh> zP{Fn1^IY_@e?x!4sH^`8GR4ORKuXep&E+xIs61fS;Iu&eAv6l*5;}kQ=;r;&_nXI> z5;GDlB{7*~jEb_N+>(^UGS6mg;nf^=9?O*cZ|eLUXN&dLJ18_-R*T!{obe^jv96uI z>GEA{Wvdy9Q|zs85>m_={zWUEk5}czt~PlO_Ut_eVUPR}*@Z8g^Db-#oA*Tl7MoW0 zXT2m{o7?6Z%SQzrXOH2ndzm_uDYJ}istT{O#O8s<#-OUIvPvS^n1p1+ew`UHb!bEY zP|x(aeFwHnhB6|JNv{#}jYpPBf0?q}ETZ*g^8DbYxwL&_RaN{!0k_(WqZYrb#!&te z(t6>c&6*TXoiUVVHAk7Tgn8Onvy!+25wnWQ2#q|)$3bRkr(%=1O5` z!6#-4s%0Bxl_No_gzu;*{QTr`yG3z&A52P8$-z?N%to|YcAN0O94D1!mKho8ySn-n|g1ORn!@QW_^~eUZ}H(N%F-59XW` zFLCzFyevI2ULZbB91OMerlC=La{loXT=9pdSyc$?jMudc$_(SDS{jsxYk3l*xVjvJ zwj5L}yoakrV){be5+?P2Qaz2t`CQ%-U`ed-h~Q5b*o;Il|AdoMag?GWY}sj9+L^kA z7Ez%YS27^Tx}-vHSZa|v$@kZBTNLWGk~KzV_8qU-aidk~A*z-5ShLZ1?Q!9%JyYKy zh3)(MuB+YW-4qTJ(6KCvCNn~qt^rxh7qOftLC(*!qOMk8%|O9BgsYgn5>8HEId2^f zobnSpJ)g!Rc+KBIo?)C9%4%2VgjM-Q=lEZ{imVDa%VE#BSucLfA8IlziTyC2u!YOn zsoE)%&GA883vNkwK)sh~HW|D3B%k-j+J~#8+@~}Zhd>))SR=_Bd}P^@3T!^L$Hgu8 zkH4qceNH?J)adb`52hAB?a-!vU#NnO*mSpmlg%TWrX+TEz6YuA4b`0e5w6%jxGZd; zj_c?+uz9a7O?KG>SC+A~C$H)C_HGRI;!7sKHih&+f%5=cv)B0JE0n@pB|5AzKaWR( zcg_4VOlhfmTl`{fb}bd?tB23|TSXsjziI{DR5x=8Wts^1eO(Rr@{}x;z;Z-htfxM7 z;A*Z(@aV`kJfx#GoKt3*q?&yrUj^wD2OpdR%{gU1y%uf-?7$qj)mS$OPeR)M8g%m+ zD4C>9x%lf0m-onyWP+%THZyK+<`)^Py~nF+rj9O;TO1FMmcSQlB2~0Ir)vAOBpt_+ zknES;LBXMUQwJ{9Xoe~RugXSRCBWJXw|WcNM%jn4DO1H2hNFn_1Hf4JwZbcv1|xYQ zns6mE>$&$Wlh|Kzx^c~PYL5uK)oOQD4^~7@cGsoX!T3R~Ep08i2%)yt%bZEUV~ z;WL%1GFK2zj-tCVSH|pN;=qW>V(hHY^CH;OdUGZ&_H)!qcJ&ttc*ZznQ`n|oEw7gaB`kspOGb4!}#zvy~jP7>Lah^b1y@f|QJ8*k-99b5k z=E`@Qt0vTP_R9gK3j7ew_C2A@q%4K4+ZSOdWY=D)o z^!i(#46pq2(!pKSD#cT~!aGp99MH~ir9$buBE^BRTJiokr`q&8;gQ0Il@drTrlKYw zUWsnR)_x~gosTSCOl8$;hfM%mzJRZLSIFPk+#qq2LEN+1Z4N*RWpmUm?(eWW>EC^- z?Su&39t2=)aU_0`!ij&dg^cyYxTC>cqhtEOj(@PfQyz`pPzk*0RM=2)TnZ@L=N!@&NMa7?BZi(Q5q$eN&7lSNzD|>HEo^PD zs;4ZiXEnVnuCUc@mVANAs(6-;O>@QZ9hmD{(bm;Ntg8DOWxK4qcdT)aN=lFkQQ`d$ z-H^*%6tV?ZeT|{Xy0IQy#n!~b-anTOF&@wUZjh`?3bw{oZ8Fd#Wj-j{z*e6jx0r;o zrFL4go6^U_B7`RA<%z95&aZvqfcYmrUf+Nw5j3|uH3y#u%jzox0<(meGZu5CGHYEw zsyUw!TmjUk1;-HEWxR1*vyM2cicMn19_dqpNC0ioBSXppMDVx<9f>e1JxEY;zzZOUr2j#La)eGm0eTuq4MKq&NN`fGvvp?0N%nPHbgR%8Zc zVMT<=KPk)91In=Ghw?PEn~zqQ3qLvv!4x5vG-?+DuJ3-Gbr`|SdrhPpQ)O1Z$rfHN?_57C45(uN<7X&#(mLDM$lo^#po9z z?mfF_=6F)HVEo3JuMoIOR ze@)$@W#>c%AVtDL-zeOoOjTl|I(dJAk^Fpf$aHh))MlT)rEV^aE6ya8vPnu+GDTr8 z1zehibOv{rE-z#&D9)}qgSuTqAAne0NQnv=TU^eIxFx>m8h2y6Np_>DR0XONWt8ct zO1cY*Jx-PL#iI6wG~DM?-jnOWv*?K*1yqg~9<)rck5_!`E1KgA&lAn~NswB|(*iwQ z{)C6^Wg|-5l4jzKAKwvS@_}UN_HFue|7spXJ`>eGXDr&Hbl=D(ahJfAjiD`ah!JqX^P6k?BS`mh z^Rh$-@uAu-`wi$z>gfaM72CdMoICF~(DGbFiM*@emDtnsjn7jlA99%{+`Li!l=hYG z5pBVGe*t^5X^*Fvh!R23@2$G8TCPwNnAh;cz^nK&#ZVkW68v2#4pobU^dj@Q!#RjD zv9SbzLV6-4iA5!511Z1Z%n37Qbm=aO6ma^0S*I!-#j$gEzIvIE4uyM@wTZ+iSj=B^ z3v_eYl;{dW=Y)#daSd>1#q#!$;In*%_lWA4{xLrddPBIhB)UxcabRK9mYpr&7FaynX=RF&PRO%S-j(6RbkuiCYhxM{qsw2| zgy;1zUQZo@e0(_O%G;ZlrLz$z+%M`H%R{R3EVyt>T(ptIxCXN+PU`ZF%Y>zf8NQ`kLW^y9&}Y%KSR&oATv zERkTd|0i=U7roTw)|X-nFa7t`9*_n1pDVdjfzR`)mHrHk7+}Nnu+fkoJ)PBMuRZ8d z+zs1lT%sIPmUqiKf^B7%f5$-KNEZG&O?#W(WYVoH08ITA6l?#+e5I#Xw|!#DK3#Bp z6??|aaj)yn!#Y}&Oq^sB=_(?n(M(rAOjnzqtj_CbKSj3LyxCWuJ^KEwcR4g(9MkeV z`;>Ogn(GoxtC0EUYZ==qnpJTXL0Or>T%ZZ847;cbyTC0~L)2uJ|6EJC+UZnSPDIoh zv)vkV%l9aWXK}*#T+tqtm{i?4)+tdGnW%IsAqQs#-hthNvFnV}?;WUZ(r$gL%Kv>W zAKKFAUA^1Oecho*t&UL0cpWO#qaiwRnX9eZGSQ(M`3h>;WmK94wsa&AZ0fh9>5D0- ziSgvxB;73?B=x99eMZgG^7k>AGuOW;pAme*DuXuNe{_G5k5H~mc6?m~|w}rii!h?VYZmA;kHubVfwhgb@Y*}m>cl|>~iK9BnP95s{@;N?S zm75i2?XCyi&YJX*=(D!Xvg@j_#c76tpFX&r(xHeRnnjg?5!XoW-WAdT6o^vqeR5Uu9+a zmj*(4w)|-z#{nME%bmMk!9|IdkUOI>&}YJ!Duu7ui*BNOYxvl^79Y3!5uY}feJ-3ToUG>FXT|Fy~4wc5>+NWYGIOX^P~~HF_afrAL|dJ2{BN%2KLJGEB@qT?>Yt zJCs^4j+v|c2(U8O6sp)NxidW4vmef#wV-_H@HS&*7E0i^PZT)?UOcR{KH_RHpDX!p zbS3Ze_hev9d_S7|X-E9%>>vQJB_n*71b8-x8?XhtFxY+|YQc1fydMXgmqhQ52^?6U zF33AR?9i&cjL#4r6m!*quCo%?Wx++r`pJX5pog(w+nBr(1x|9XzJ7))0SS42YldpH zw}d}5_e=i3so(MrZs*Iw_lc$=T!%0$yrNShi#GOWA$!mTpzWpby*Or1)}k%%lpHX# z_L_93ZX@f$5bgZxjB#E_|4|Xt(il2&*@lEG!j&D-gZ2fIO-#0n=`ruonnWJ+ha!1e z89HmnA72X$NuTv$3&M0ZM39{$8>1#-Th{fdFNJy_`;a)F2*gkybpr?h)rWsH8?lvpOjnOk88X*@0pppn z{>S=|4zgvy!_fCTF~>Ft;${8pKq$%$y8UhseVWzDFY#DQU7*%a)1!ASNYzp4 zUCdU^wvM*rR^Gqk&mZsWeQNs6wYupz9kh=UowPm;XD;DFs-y=33@`;BOtCKW2KlxW zMaH#YOTDBk0&j=3C&Z#WP-MIAZaAM{U-*zeJi?EHnctck&sld+C7$;8pOLeNj&Hp? zONoyP5(g#JK`TrOR=k@1=Qb~lAHle$iyRywgt^Es58xb4N6&7&w9qBYqiWSxsJh9G z#SIHhCM8o|UmahuUbmz9sYzUntvoNvR>*G6ZQ4z z?vl7E7ClHBk zO}{E=x*QU{r7t3Ki<&!s#`THH*-eRJW!N`k16L!Z(lc(HvtUhMY@i~aG?gT$F&W`^sW5+_n@64KPa(Hs|-N`=E+3!BY$Qehw(f7gR&FKl}?eFR98T6%V4c5^2 zuT^x@a0(yXQ?ie9%W>la(CNernIpRIS{5!BwvzIhJ&0;N<>|gZcJKiL$Ag7F!5(o> zg99}wtp>^l7~-UNHCkylbc5WVL63V|?2%f2YhwGRVhwihChsu2AbMwNk{=)SUj7>X zxbSxI_wFOxMSi3(xpmz`Xb!3qt-9^%2@!(2g|~0B14R}f@`^6T)Y8 zlxQw8D-^6%`meo6NW+|A(-GVc6gDKASpOEt*q-#l= zh`0Ts*cPNz9&pvc)8V#;t%`EU86)lc1+7I!d0TRTn+&I5! zFN(W5(sG8O!ndr%hJLntCe=oICcKgL+<%?C;rHnL@6VU7_Gse8fi1^Kq`f>$hBU4y zobY$PLS4RYX@(cvesTvYqAz2R7mk!TG(};bY4SVLp@bY|S#!psGGs#*xdU&M7s==Y zjLCd-7g~4yzZ7>GV&)9)?vf*P8f7BB%L%;qSa&0w^*I z?$wSPTzA#3gB))d7{yUT8D*bdu{tfu<&c>un~>qv1msZh3nLH^p0RAeh`)>iX6Ua> zOnG+k4;c0dFdEvSie3apU6`j(vUIv2vis1yfVCq@B^U}PXJEXftqXIY#L_DpemmqK zD1l%>%uduA5BPxbX%}U7^Qhgta5e||;&s~Trim_;JgGBZMt9iu^A=aNKZVj1Ql?gAl znMaY{Xs^^u^#MGkCl&O*fWlvzi%4m|V#@7DH40$m>&;2vuu)K$ClrJh@^he*kyB7% zrDY@%*^7`rcn;xcA*Oy+KtoZ!oZnGV{iWFVqAejVGI)RH6g^SUH_mq8s!>p11dAY) znJJHIEFc^!j}gk6=ICLy3o(1o!1c{ltNIHS$$-hbEjaFP_Rhf(jVS|;LeXFLyyh3* zYoph`0NZFr zmpn#I^-6a&2XP%6cL|E);V5MpQ(^a)-(`*lzJryEZ4NJC1ZkQErb%MH5?0unL{>mp z3lyEdKh|kHX)aLvtx=0RWG(&QW<=`3Wjg43*~EqFi0sD}$3!eI&f!BR^@Ux$1<8+k zMO5L}%mCt&1dJ4^7)B%}=*h$p)D*MXQ!DA7HLK0Qp*o%R$3nJatxa_#{SZ zhlsussDsI?V14n&RN}2t0OOm-*z|z3M`e=8L`v?Khlh3ENvaSFAf?Z5T`Sk zRoJbPU_H7w5)Wj~#P;IzQ;E(ui`7X@95`Kmr4{ByBfVlJMf*-^grHV*N#&tvYKw*~ zf>kW$st!nNcIS$bbTlT0!M=LW?bxUe(&(`DC{u~Q`mxxHxoev*zE{iOygV%jIR>a$)6rz;4Pr{)2{ zc~4A(5`Du$@j<*wtjz7|Y zOCQzWo6Cyi7up{T_K?$oDE`rVX=b)&oy-}w*6?!G(S3&goZWFfLP5ARa!>_r^J*tF zvbBI>Kb{l2wJfRoyJQo)NQ%kSRK6-B;3meI`6yag6ctAWCU$3~QjaQR4vVQ#_2V;C zfc$AgAWeXtRD?v1h(?sio?xkfv2C3*I^;&SmAKKs?};7y2JSX9v(s7y=*w__?cSly zE!GC};dF2t@1~bi=Vcy6%_WVs9?7eAO7aW*OZPJSjiS2}i9j1D+F+-k2%Jb@8p6025N zl93}Pg~jngbI6*HM=zURUof&i(!^eh!_Ransd2d(3z(=t!)F#)JSt5jM5+3s!kGn| zHIp;uThfvb^zlEAffw+>WT|gc6qMN25Sqvjw7aT#zayBcqN@YR#Wb`N-|*-1 zS;(U>%Pm}UN8(d6tz_?#ql`$P9Fe!Y{P#PXZ1@ifVs&jONiba4FDHxr`{WC-o&}XJ*m_7uC%b#FKkg zADCKHH%>cIFEy&KRdU_KlWy3$Ykj%({q6hvc#Lg&X^PX8ZTn(-DK4Hm#09Dv&$MbT z>nNttv6UzL9TCfA%Vhg34qImEfpebGq3A7KeeE9jL$i7_NwW)k`YqLzdyt-*AN`$L( zTPqT##Wfnr?N{!4p0R zh%#Lf9rW)%dYuQ%m`h5S8j|%6^&-{vWGsXivmSt z6H^axG&DG))_Knr=%z%br_PVApujRsaaTTC`s_Wsal$8Q=0%Hgf4%YeDZ6bKoIh5Y zalc+zt{+W*edMj6^-l`kDJ2pE(nRL)A}%BDV*_Znuox1}QJzSx$SW3>&O}bnz1}fs zOibaYlOr=CrjegeeXA03(W#m)KNnwOjj<=$lfS$^JwKm*`c8gLJemKYS4qGbT=%T6 zpZH~b?4d(D&_}N76^1l1num@|kW zsOL@-DK`1>ifJp6ELL4=E0Gok>0TB`x0_{qj`I@*XJ?GxilQQ^<71@W+zSFxJ5U9f z>%FK3{2EHHlye5GpX8=v5riq_Zld+lDxeoQjqWZAHlQyON*mCx9}(G99sC+{Ti$>B z=PP2WF4a6#FRoiADQ-9wso7S5IsRTfl(Y)2lX;xEMyoI1|M}^&Vf{p1p5y*BMG$Ix zq0v%9%0#0|q!jj=Mf2d?KVMHd@2tA5#oOZ@d#BAQ5LnQN=Tu0M83C?7D#FZPCC_SK z59tV#N*u?)CqorBf^{#l11qA#j4p1eXk1Y!o=6-WvQILb3)F%TJ!}vD^4DX71Pc_o z2~&OnqObLJyV^9-DHIv>)pT_!I!{@=Mb z(HB>YwId6eFx`VI`D;2#$(a}OB|sD2QF{h81B8_bT<>qLK1)_3&RvEXZ~Br~uI+Td zTR!J5FY-RsBUo7ySgR0+0@27yJ1cyGL@fnh`|e%xzEewgWc3h9Q|gm!m2D_ZJ6-QB zB=waqL|ZA26)%Lgd9TU%)@+0LFsIR|Xe!ieCzu&wm((uq-I98+Z|zIl7dgZSqMck- zKZf{GChg;2PHU8bJg{Cm3J*D;A;$yb zmu;mLGQPq%?V&ZjpS?~2 zQMrHM!4Ef#&4@;~mz+kyxPXHsH(@rRThpnXT#er?kAL12o;5-%r7)Wq=s|YedXxdg^C$7YpK~-a+`{aic1)05$VBz zHF)!qRu^HmKrD<;0wz-}9+(5C`9R-y(kOng?pQck27oApYA|Ca02j<@f@@+2gl9Iv z6VZ_F(~%@3{t@S0As&=%K-OfEh?J9(c$eofYHht_yY_aoA8O`e>tXhtl*};Ybw^9@ zR^RxFcfK#puba2+aJIH{CW>^;H`n1Gg%D_Tt#WX`1879=tKmX*J-s)>ntBDix z^8hKZI!OKVSN^>!v#(Al#t>kNd@xJW2Tra);^S8+B;WaESAzQ>6KEHe1s>x~h~>xj zmytL8`T+D3-E%zCUz)`o9uv2~n-dalSZ6epgY(0qe)@0Wt4o?aC z4m25ITRYU5b7wR(++rgR6@BGdW$|7y%HQWczJkj5Gp!2)nr_h3AVU+n1i1)uKX99S zG{@zT?G#dYdFEAuv^ zb!>|-c2{pKZs&GlzJ30cEqWC3M2@*0+1jLjHv4-55zlU1I!9XxcICy;fezKco!MC} zQFYSXm1hanf}mI5ck(Adh1vGfCz9GMBbx6tgW<{q8@B4V+F9%^@4Vk#CO4BWm%!tn zKypUB^2x{Wmb}WpCT`68O44%RCX=JqCLGB7cLjqnVbK*B-J9sw7u`gV?-IvMq$(ET zKW5``DcXLonbc#LkjF`;YRxIlsn2Qlr98{Zfs0}$31SveHI6@8yG&hC^MvHU2c#qJ zX~_XqU2g>YlZ(pZDdo#4q~+xWIOUL}Efa%w2IL4}QdD6$A~~iLY)dq64JX{nstTmb zIp{DUtKESio60#NkJtRb`Ji^h5oh2dwM7!w=iyu-glg_Az4s{`d<;BVQSL{4rzlK{ zzXZ0=@fbiL$5Fx*4z|iyfKB)9yv!R)!Sz09Oa9O{-rv6RDK}oD#C8bmblB>Qi6fRysbhyZnE*VU%WVE>ex0@*X+4@O?nuFhBC;BTH9>A z@?V@EPNX5c=*VQYz`MldGTP(2*KjgCQs0%{UX}6z>XA^ZP_OFRvJ13Ny7ZVfnUrSD zQfXkxh@OE+gR?Cb+?fLgi1jgK0>dT3o5&DqN{5kKLjRQfiEP8yPB;SMUwiu)=)#4L z19exFdkUd8sS=yiAaaW-&}+rfL6niukWtUo;MwqErBpjF*>AKdjx*2E;Iljb0L$+D z0o+_>@C$kJY&YHb2i7s+Mnq> zIfOEcHm&dD*OcDgrNZ%udOx6hQ-90&TNaY=KZByKCH+m(2YxhP$z>XbK#`9-_Ty6) zvr^xFlXwig)YMIP-EZ)$={est#q)?qQLj*uHft@)b5QxTRRFdEHNkE@vK1xFz}sy6 zdV@EpSfViyU6#%K_=L^k((UrmsCGb{LE#NuZ>81Bc6TgsP-M!LrO^Cl{x?YFmM6ri_rKY4FA{=8Tl(BWDP+dI$?JPSbs@JjK9c zLf394Zdm$0@FjO59p!*z?Am@Ylh9D+Y?;=)U`)&AzPSZQckDfNI3X7!YX(dXF5U>6 zI4_vr{l`ltsfE(P3YG%A3{0?Hkgi;kqMRI)UGeorqxEa@1+f^W`uyzcAvgRy89bT9 z_i6JB;9x+{#VRp|(#(eFUP|NNUQ&-#2Um0#VX*Ms?A2)SXo&fWkHvr zusj~9=2+3;j4Bdc_cDN7mBezA$o}AG>5#>%Q{fmhC4{oVnSFJ{k*j?He6+4=I?ovH zA#I9ek^IYGQ9ISq-~LdTG)`$=$`Zmu$k>V*k`8v&vBvt{;yN6|)fMk%huE4KvNzHf zw;ac_M)K^-+pE?!gh72QfxPet%y?|lIgxaFx5~{g1SPGL66?jUx|f282%f*H(I3%x zWl$WsDa<49?;?%@YKxNyEYAJ3NKm4&7%asuFk~_0@F`3TY^AWopxi)`_(Z9~SCW&) zhU>XDD=W;upr4s%4o=tUSEch5^OI6z^4oQ_I5>cR)oAsHDsEh#O{L_| zZ4=QH?H6Eb7aAKmD|x80HnrYK>K}-aPr5?(I(aH_`qq+cA~OpYJrUCIKhJ_7lcRO1 zM&J1UaJLj^7{7UQOHMR9j0EUW8SFe5*CIBcM1tAs=$xNU-lCZilTdo zm)(_c1_%sCj4k{&y~w#*!|{B$A**Ya)fp(N$qR~YPMVGaHLUT%)x7CtbGv(EV&8>_ z*KN0c2RYx2OP^i-7>+qqRbfl*l3kWI%VIWgvT+~2%-%I@BQvb(Vl#4cxb9lb(G~&uBIUDStM<5+*G*a3t{_V#_ zBFPx%74T}ce%WcJctUz6*j3SrKa9Mg0Vesgtw1;ERQTD2=TsUoQ^LB`Re}^_f;eNF zRsHA%srpELZQz)6W2JK&wKH^gzQJblCJMqq(ZzZ>^a83z&5mlJGSx{lVJ-SBW!K4* z#sf{WH;u)%>N`)7+o}Z3qQ=UF>y$X^jL!!TzM~B3>U;9>3-9z_Us|$M&WCQVgF^wJ z0%>%tw|Vefxi2Cs^v^>&(0j99cGE1t^{-0C5~ng$ylVu3>fgk{gJHsh{o@)KbZ-wN zB=shLjW$!twqr=oTLc|GT>Lh+j)@}eV|OSx+^}A6pnMs4HB-sx5VX5Y<5F~^`A`K6CCh-b80u8bKZ%+3UB6T67C}3Yl3`Z-z9tkc_}-mbAHK; z#r-Y~qYmXLQQmvs^*b;nAgbd@QN625awni1*|nP>ant^w z_3KF+R1c;@rzQ6!NK6_LL{>)ALW#n3QQ0xi*`BV)#;OkJ!NQL90pmGf)>1CL*2M>I zgW{#nlx3lNIY2Lb%h`^pHb6ZHG}mles~v9HlxmY4>1bxd_8;4;|W z8L1Td(0{>w?K`Wj+>FB&1Ah=v?6(0!1$J@IAu-~G+jR!)U8m|_D(f8CN!Nn@EzRCOHp1125%@_S2Wh+xDK zT@8~mE-Sm?4O{*W7ASc*xj^dfXzzLQRu(rScD6a=S;mWcp;(rocpkx}(Sn920Z;&7 za;9^pH>a;v+{C`USgx-zO_BCLMKLqqzk6xYFV)CnLEW17DXcde*jrProR_y zn?tXGR}-%n-_aOT0%(p_f%aLXkXQC6{Ar(_Z=IF6xU?872`)|D4P62yv@Zlp6U*EC z+lShBwX-2T)Y?VS0uxHe>0rTRfwUZu7Zf)ob|hXaGSPOUy{r8ycon_eyxg*!S+1|K z+z`4!>X%n1Zb;pnzQuBzbep`jIMn{D!s~_i6Ms(xdstqPI5j3Hl3$G%6BKRAQRS?X zpktY-xgwp9rORc`pGgM-ewa^Vlx;)#GB%m^GFdLb%h3MLnI-&m|An*3YIxE8OO}O! zRo25WywH?Yrsi7k3&O0j+dz33ih{dL$4s;d-?TbhCCUV%CV-N=R}3v@@p$0EoSop_8`1EYIzjDT~nPCn6tv@%I}3)BlwfeNnNqYyW

QET889I!C_#%QnLwntm`sbw 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 V?JbZ$cl&K`!;wqJ_.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:36:08.733417 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 7s 122us/step - loss: 0.3209 - acc: 0.9105\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 81us/step - loss: 0.1700 - acc: 0.9506\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 80us/step - loss: 0.1272 - acc: 0.9628\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 32us/step\n", + "Loss : 0.12973509001508354\n", + "Accuracy : 0.9627\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and kullback-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and kullback-checkpoint.ipynb new file mode 100644 index 000000000..87ee8fd1b --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and kullback-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:39:54.376752 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:39:54.411724 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adadelta',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:39:56.796614 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:39:56.816612 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:39:56.861471 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:39:56.964164 2396 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:39:57.036011 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 87us/step - loss: 0.3221 - acc: 0.9095\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 80us/step - loss: 0.1664 - acc: 0.9510\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 72us/step - loss: 0.1239 - acc: 0.9645\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 28us/step\n", + "Loss : 0.12528126298710704\n", + "Accuracy : 0.9626\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and sparse_categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and sparse_categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..2e1b76944 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adadelta and sparse_categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:41:34.981910 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:41:35.007836 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adadelta',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:41:37.319833 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:41:37.336752 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:41:37.373651 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:41:37.532268 20376 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:41:37.589115 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 78us/step - loss: 0.3151 - acc: 0.9110\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 75us/step - loss: 0.1607 - acc: 0.9534\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 77us/step - loss: 0.1204 - acc: 0.9650\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 31us/step\n", + "Loss : 0.11560967290923\n", + "Accuracy : 0.9651\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..7c8c5be55 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:27:51.593372 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:27:52.009342 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adagrad',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:27:52.819982 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:27:53.105577 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:27:53.344715 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:27:53.559557 20612 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:27:53.650754 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 79us/step - loss: 0.2997 - acc: 0.9148\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.2018 - acc: 0.9432\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1742 - acc: 0.9508\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.1719752870887518\n", + "Accuracy : 0.9518\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and kullback-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and kullback-checkpoint.ipynb new file mode 100644 index 000000000..56db4b38e --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and kullback-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:30:21.684118 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:30:21.923519 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adagrad',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:30:23.951068 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:30:24.420133 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:30:24.474022 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:30:24.907800 27556 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:30:24.957668 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 82us/step - loss: 0.3142 - acc: 0.9116\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 67us/step - loss: 0.2159 - acc: 0.9390\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 66us/step - loss: 0.1866 - acc: 0.9469\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 29us/step\n", + "Loss : 0.18269367492198943\n", + "Accuracy : 0.9475\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and sparse_categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and sparse_categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..10ce81bc7 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adagrad and sparse_categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:32:23.368407 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:32:23.402316 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adagrad',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:32:24.909364 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:32:24.926835 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:32:24.965763 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:32:25.090432 22704 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:32:25.151057 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 75us/step - loss: 0.3131 - acc: 0.9119\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.2115 - acc: 0.9405\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.1806 - acc: 0.9492\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 23us/step\n", + "Loss : 0.17886015945374967\n", + "Accuracy : 0.9491\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..9d47b6956 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:46:47.304043 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:46:47.333965 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adamax',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:46:48.648477 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:46:48.666429 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:46:48.707359 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:46:48.873913 17864 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:46:48.927188 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 74us/step - loss: 0.3617 - acc: 0.9028\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.2003 - acc: 0.9432\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 70us/step - loss: 0.1526 - acc: 0.9564\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 29us/step\n", + "Loss : 0.14775633548945188\n", + "Accuracy : 0.9555\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3dd3xc5Zno8d+j3ttIlmXVkXs3brhjU4IxxBicUJ3QjCGEXHazyS5Zcnez2b0Lu5tsEm7IDcZ2QgklgRAgS0ggYCzZlhvY2NjGRd1yUbFs9freP86RPGq2ZGlmpNHz/Xz00cw575l55tXRM+c87ztnxBiDUkop3+Xn7QCUUkq5lyZ6pZTycZrolVLKx2miV0opH6eJXimlfJwmeqWU8nGa6JVSysdpolfDmojki8i13o5DKXfSRK+UUj5OE71S3RCRB0XkmIhUiMjbIjLKXi4i8hMROSMi50TkMxGZYq9bISIHRaRKRE6IyHe8+yqUsmiiV6oTEbkaeBK4DUgCCoBX7dVfApYA44AY4Hag3F63EXjIGBMJTAE+9GDYSvUowNsBKDUI3Q1sMsZ8AiAi3wPOikgG0AREAhOAncaYQy7bNQGTRGSfMeYscNajUSvVAz2iV6qrUVhH8QAYY6qxjtqTjTEfAj8HngFOi8h6EYmym64GVgAFIvKxiMz3cNxKdUsTvVJdlQDpbXdEJBxwACcAjDFPG2NmAZOxSjjftZfvMsbcDIwA/gD81sNxK9UtTfRKQaCIhLT9YCXo+0RkhogEA/8O7DDG5IvIHBG5UkQCgRqgHmgRkSARuVtEoo0xTcB5oMVrr0gpF5rolYJ3gTqXn8XA/wbeAE4Co4E77LZRwHNY9fcCrJLOj+x1XwPyReQ88DCwxkPxK3VRol88opRSvk2P6JVSysdpoldKKR+niV4ppXycJnqllPJxg+6TsfHx8SYjI8PbYSil1JCyZ8+eMmNMQnfrBl2iz8jIYPfu3d4OQymlhhQRKehpnZZulFLKx/lUom9o1g8iKqVUZz6T6M/XN7HwqY/4xzf3k1ta7e1wlFJq0Bh0NfrL1djcynWTEnl9TzGv7CzkuomJPHRVJrPS47wdmlLKA5qamiguLqa+vt7bobhVSEgIKSkpBAYG9nqbQXcJhNmzZ5v+DMaWVjXwwvZ8XswpoLK2iZlpMaxbMprrJiXi7ycDF6hSalDJy8sjMjISh8OBiG/+rxtjKC8vp6qqCqfT2WGdiOwxxszubjufKd20SYgM5u++NJ5tj1/Nv6ycTGl1Aw+/tIdr//tjXsopoL5J6/hK+aL6+nqfTvIAIoLD4ejzWYvPJfo2YUEB3LMgg83fWcYzd80kKiSA7//hAAuf+pCffXCUippGb4eolBpgvpzk21zOa/SZGn1P/P2EG6clsWLqSHbkVfDcllx+8sER/t/Hx/jqrFTWLnaS7gj3dphKKeU2PntE35mIMC/TwcZ75/D+3y5h5fRRvLariKU/2sw3XtrDp4X69Z5KqctXWVnJL37xiz5vt2LFCiorK90Q0QXDJtG7GpsYyX9+ZTrZ/7CMb1w1mq3HyrjlF9u47Zfb+eDgaVpbB9cAtVJq8Osp0be0XHxc8N133yUmJsZdYQHDoHRzMSOiQvj75RN4ZNkYfruriI3Zeax9YTejE8J5cHEmq65IJiTQ39thKqWGgMcff5zjx48zY8YMAgMDiYiIICkpib1793Lw4EFWrVpFUVER9fX1PPbYY6xbtw64cNmX6upqbrjhBhYtWsS2bdtITk7mrbfeIjQ0tN+x+dz0yv5obmnlf/afZP2WXD4vOU98RDD3Lkhnzbx0YsKCvBKTUqp3Dh06xMSJEwH4l3c+52DJ+QF9/EmjovjnL0/ucX1+fj433XQTBw4cYPPmzdx4440cOHCgfRpkRUUFcXFx1NXVMWfOHD7++GMcDkeHRD9mzBh2797NjBkzuO2221i5ciVr1nT9RkrX19rmYtMrh/URfWcB/n7cPCOZldNHsf14OeuzcvnRX47wzEfHuX1OKg8scpIaF+btMJVSQ8DcuXM7zHV/+umnefPNNwEoKiri6NGjOByODts4nU5mzJgBwKxZs8jPzx+QWDTRd0NEWDAmngVj4vniVBXrt+Tymx0FvLA9nxVTk3hoyWimpkR7O0ylVA8uduTtKeHhF2bzbd68mQ8++IDt27cTFhbG0qVLu50LHxwc3H7b39+furq6AYlFE/0ljB8ZyY9vm853rx/Pr7bl8XJOIX/87CTzMuN4aMlorhqXgJ9+4lapYS8yMpKqqqpu1507d47Y2FjCwsI4fPgwOTk5Ho1NE30vjYwO4Xs3TOTRZWN4dWcRm7bmcd+vdzF2RAQPLsnk5hmjCA7QgVulhiuHw8HChQuZMmUKoaGhJCYmtq9bvnw5v/zlL5k2bRrjx49n3rx5Ho1NB2MvU1NLK3/8rIRnP87l8KkqRkQGc99CJ3ddmUZ0aO8vNqSUGhjdDVD6Kh2M9ZBAfz9uuSKFVTOSyTpaxnNZufzHe4f5+YdHuWNuGvcvcpIc0/9pUUop1V+a6PtJRFgyLoEl4xL4vOQcG7LyeH5bPr/els9N05J4cHEmU5J14FYp5T3D8pOx7jJ5VDQ/uX0GW/5+GfctyOCDg6e56f9mc/eGHD4+UspgK5Mp5WuGw//Y5bxGTfRuMComlO/fNIlt37uGx2+YwLEz1dyzaSc3/CyL339STGNzq7dDVMrnhISEUF5e7tPJvu169CEhIX3aTgdjPaCxuZW395Xw3JZcvjhdxcioEO5flMGdc9OIDNGBW6UGwnD/hqmLDcZqovcgYwybj5Ty3JZcth0vJzI4gDuvTOO+hRkkRevArVLq8mmiH4T2F59jfVYu7+4/iQArZ4ziwcWZTEyK8nZoSqkhSBP9IFZUUcumrXm8tquI2sYWloxL4KElmSwY7dtfiaaUGlia6IeAytpGfrOjkF9vy6e0qoHJo6JYtySTFVOTCPTXMXOl1MW57cvBRWS5iHwhIsdE5PFu1j8sIvtFZK+IZIvIpP48ny+LCQvim8vGkP0Py/iP1VOpb2rhsVf3svS/NrMhK5fqhmZvh6iUGqIu+4heRPyBI8B1QDGwC7jTGHPQpU2UMea8fXsl8IgxZvnFHne4HtF31tpq+OiLMzy7JZedeRVEhQRw97x07l2QQWJU36ZWKaV8n7sugTAXOGaMybWf5FXgZqA90bcleVs4MLjqRIOYn59wzcRErpmYyN6iSp7bksuzHx9nQ1Yuq2Yks25JJmMTI70dplJqCOhPok8GilzuFwNXdm4kIt8Evg0EAVd390Aisg5YB5CWltaPkHzTjNQYnrl7JgXlNWzKzuO13UX8bk8xy8YnsG7JaOZlxunArVKqR/0p3XwVuN4Ys9a+/zVgrjHmWz20v8tuf8/FHldLN5d2tqaRF3MKeH5bPuU1jUxLiWbdkkyWTx5JgA7cKjUsuWswthhIdbmfApRcpP2rwKp+PJ+yxYYH8b+uGcvWx6/m32+ZSnV9M4++/CnLfryZX2/No7ZRB26VUhf0J9HvAsaKiFNEgoA7gLddG4jIWJe7NwJH+/F8qpOQQH/uujKND759Fc9+bRaJkSH84J2DzH/yQ3705y8orWrwdohKqUHgsmv0xphmEXkU+DPgD2wyxnwuIj8Edhtj3gYeFZFrgSbgLHDRso26PH5+wvWTR3L95JHsKTjL+i3HeWbzMdZn5XLrFcmsXZzJmBER3g5TKeUl+oEpH5VXVsOGrFxe31NMQ3Mr105M5KGrMpmdHqsDt0r5IP1k7DBWVt3Ai9sLeGF7Pmdrm5iRGsNDSzL50uSR+OuXmivlMzTRK+oaW3h9TxEbsvMoKK8l3RHG2kVOvjIrldAg/VJzpYY6TfSqXUur4S+fn+LZLbnsLaokLjyIr81L5+vz03FEBHs7PKXUZdJEr7owxrC74CzPfpzLB4dOExzgx1dmpbB2cSbO+HBvh6eU6iN3XQJBDWEiwpyMOOZkxHHsTDUbs3P53Z5iXt5ZyJcmJbJuyWhmpcd6O0yl1ADQI3rVrrSqgee35fNiTgHn6pqYlR7LuiWZXDcxET8duFVqUNPSjeqTmoZmfrfbGrgtPltHZnw4axdncuvMZEICdeBWqcFIE726LM0trbz3+SnWb8nls+JzOMKDuGdBBl+bl05seJC3w1NKudBEr/rFGENObgXrtxznoy9KCQn047bZqaxdlEmaI8zb4Sml0MFY1U8iwvzRDuaPdnDkdBXPbcnllZ2FvJRTwA1TknhwSSYzUmO8HaZSqgd6RK8uy+nz9fx6Wz4v5RRQVd/MXGccDy3JZNn4ETpwq5QXaOlGuU11QzOv7SpiU3YeJyrrGDMiggcXO7l5hg7cKuVJmuiV2zW1tPLu/pM8+3EuB0+eJz4imPsWZrDmynSiwwK9HZ5SPk8TvfIYYwzbjpfz7JZcthwpJSzIn9vnpHL/QiepcTpwq5S7aKJXXnHo5Hmey8rl7b0lGGDF1CQeWpLJlORob4emlM/RRK+86uS5On61NZ+XdxRS3dDM/EwH667KZOm4BL02vlIDRBO9GhTO1zfx6s5CNmXnc+p8PeMTI1lrD9wGBeiXmivVH5ro1aDS2NzKHz8rYf2WXA6fqiIxKpj7Fjq5c24a0aE6cKvU5dBErwYlYwxbjpbx3JZcso+VEREcwB1zUrl/kZNRMaHeDk+pIUUTvRr0Dpw4x3NZufzxs5MIcNO0JNYtGc2kUVHeDk2pIUETvRoyTlTWsSk7j1d3FlLT2MLisfE8uDiTxWPjdeBWqYvQRK+GnHN1Tby8o5Bfbc3jTFUDE5OiWLfEyU3TRhHorwO3SnWmiV4NWQ3NLby1t4TntuRy9Ew1SdEh3L/QyR1zU4kM0YFbpdpooldDXmur4eMjpTy75Tg5uRVEBgdw17w07lvgZGR0iLfDU8rrNNErn/JZcSXrt+Ty7v6T+PsJK6cn8+ASJxNG6sCtGr400SufVFRRy8bsPF7bVURdUwtXjUvgoSWZzB/t0IFbNexoolc+rbK2kZdyCvj1tgLKqhuYkhzFg4szuXFqEgE6cKuGCU30aliob2rhD5+eYH1WLrmlNSTHhPLAIie3z0klPFi/TE35Nk30alhpbTV8ePgM67fksjO/gqiQANbMS+feBRmMiNKBW+WbNNGrYevTwrM8l5XLewdOEeDnx6orRrFuSSZjRkR6OzSlBpQmejXsFZTXsCErj9/tKaK+qZVrJozgwSWZXOmM04Fb5RM00Stlq6hp5MXtBbywPZ/ymkamp0Tz4JJMlk8eqQO3akjTRK9UJ/VNLbzxSTEbsvLIK6shNS6UtYsy+ersFMKCdOBWDT2a6JXqQUur4f2Dp1m/5TifFFYSExbI1+al8/X5GSREBns7PKV6zW2JXkSWAz8D/IENxpinOq3/NrAWaAZKgfuNMQUXe0xN9Mpb9hRU8OzHubx/6DSB/n6snpnC2sVORidEeDs0pS7JLYleRPyBI8B1QDGwC7jTGHPQpc0yYIcxplZEvgEsNcbcfrHH1USvvC23tJoN2Xm8vqeYppZWrp2YyLolmcxOj9WBWzVoXSzR96cYORc4ZozJtZ/kVeBmoD3RG2M+cmmfA6zpx/Mp5RGZCRH8+y1T+fZ143hhWz4v5BTw/sHTXJEWw5cmjSTdEUZaXBhpjjCi9AqaagjoT6JPBopc7hcDV16k/QPAn7pbISLrgHUAaWlp/QhJqYETHxHMt780noeXjub1PcX8ams+//He4Q5tYsICSY8LIzUu7MIbQFw4aY4wRkaF4O+nZwDK+/qT6Lvbg7utA4nIGmA2cFV3640x64H1YJVu+hGTUgMuLCiAr8/P4OvzM6iqb6Kooo7CihoKK2opKK+lsKKW/SfO8d6BUzS3Xth9g/z9SIkNJa39DcD6SXeEkxoXqrN7lMf0Z08rBlJd7qcAJZ0bici1wBPAVcaYhn48n1JeFxkSyKRRgd1+l21zSysnz9VTWFHb/iZQVFFLQUUNewrOUlXf3KF9QmSwlfg7nxE4wkiICNbxADVg+pPodwFjRcQJnADuAO5ybSAiVwDPAsuNMWf68VxKDXoB/n6k2kl7YTfrK2sbO5wFFNq/d+RV8ObeE7jOiwgN9CfNfqy0Tm8CKbGhBAf4e+x1qaHvshO9MaZZRB4F/ow1vXKTMeZzEfkhsNsY8zbwX0AE8Dv76KTQGLNyAOJWasiJCQsiJiyIaSkxXdY1NLdw4mxd+9lAYXktBRXWGcHWY2XUNbW0txWBpKiQTmcB4e1nBzFhgXo2oDrQD0wpNcgZYyirbuwyLtB2RnCmqmNFNDI44MK4gP07Pc56IxgVE6KXevBR7ppeqZTyABEhITKYhMhgZqXHdVlf19hC0dmOZwEF5TUcOV3FXw+fobG5tb2tv5+QHBNKusMeF7BLQ21nB/qF675JE71SQ1xokD/jEiMZl9j10sutrYbTVfVdzgIKKmp578ApKmoaO7SPDQvsUAZyPSsYGRWCn04XHZI00Svlw/z8hKToUJKiQ5mX6eiyvqq+qcsbQFFFLfuKKnl3/0laOk8XjQt1eQMIbx8oTo0NIzRIB4gHK030Sg1jkSGBTB4VzeRR0V3WNbe0UlLpMl20osYuC9WyO/8sVQ0dp4uOsKeLun5uoK1EpNNFvUsTvVKqWwH+flbSdoR1WWeMobK2qcNZQEG5NVicc7ycNz/tfrpo++CwyxhBsk4XdTtN9EqpPhMRYsODiA0PYnpq99NFi9umi5Zf+ABZYXkt2Ue7ThcdFR1KalyoNTuo0xlBdKhOF+0vTfRKqQEXHODP6ISIbi/xbIyhtLqhwxtAkV0e+vCLM5R2ni4aEtDxOkIubwJJ0TpdtDc00SulPEpEGBEZwojIEGZndJ0uWtvYbF9PyCoHFdnlocOnqvjg4BkaWy5MFw3wE5JjQztdS6htumg4EcGa4kATvVJqkAkLCmD8yEjGj+w6XbSl1XD6fH2H6wgVVtRRWF7Du/tPcra2qUP7uPCgrm8A9lhBYuTwmS6qiV4pNWT4+wmjYkIZFRPK/NFdp4uer29qLwm5loU+LTrL/3SeLhrgR2psKOmO8G7PCEICfWeAWBO9UspnRIUEMiU5minJXaeLNrW0UlLZ8XpCbW8GO/MqqO5muuiFs4Bw0hyh7WME8RFBQ2qAWBO9UmpYCPT3I90RTrojvMs6Ywxn26aLll/4vEBhRS3bu5kuGhbk3+O4QHJMKEEBg2uAWBO9UmrYExHiwoOICw9iRjfTReubrOmiFz4vYH35TH55DVuOllLfdGGA2E8gKTq00xvAhYvLRYd5/npCmuiVUuoSQgL9GTMigjEjepguWtVAQUXXC8t9cOgMZdUdp4tGhQS0jwt0/ApK900X1USvlFL9ICKMiAphRFQIc7qZLlrT0Nx+dVHXQeJDJ8/zl4OnaGq5UBOakhzFH7+1eMBj1ESvlFJuFB4cwISRUUwY2fXrJ1taDafO17ePC7irtq+JXimlvKTt+wGSY0JhtPueZ3ANDSullBpwmuiVUsrHDbrvjBWRUqCgHw8RD5QNUDgDSePqG42rbzSuvvHFuNKNMQndrRh0ib6/RGR3T1+Q600aV99oXH2jcfXNcItLSzdKKeXjNNErpZSP88VEv97bAfRA4+objatvNK6+GVZx+VyNXimlVEe+eESvhikR2SwiZ0Uk2NuxKDWYaKJXPkFEMoDFgAFWevB59dPlatAbMoleRJaLyBcickxEHu9mfbCIvGav32H/47et+569/AsRud7DcX1bRA6KyGci8lcRSXdZ1yIie+2ftz0c170iUury/Gtd1t0jIkftn3s8HNdPXGI6IiKVLusu1l9fB3KAXwP3uGwTKiI/FpECETknItkiEmqvWyQi20SkUkSqReS8iBywzwxc++Nee7un7biNiDwlIkeBo3Z/nRWRJhGpE5E9IrLYZXt/EflHETkuIlX2+lQReUZEftzp9b8jIn/jcn+TiJwRkQM99Ofd9r71mf1aprusyxeR/XZ/7b7U36YvehHXUru/2/5e/+Sy7qL7gJvj+q5LTAfsfSrOXufO/koVkY9E5JCIfC4ij3XTRlz2sc9EZKbLuv79TxpjBv0P4A8cBzKBIGAfMKlTm0eAX9q37wBes29PstsHA077cfw9GNcyIMy+/Y22uOz71V7sr3uBn3ezbRyQa/+OtW/HeiquTu2/BWzqTX8Bx+x9YBbQBCTay58BNgPJ9vMvsPeFNKAKuBMIBG6y95sDdvu1nfrqc+BPgGCdNZyz+2iU3UcP2a8rF/g+cAoIsbf/LrAfGG9vPx1wAHOBEsDPbhcP1LbFbi9bAswEDvTwuhe0/X2AG4AdLuvygXg37WOXimsp8Mf+7gMDHVentl8GPvRQfyUBM+3bkcCRbv4nV7jsY/Pa/pYD8T85VI7o5wLHjDG5xphG4FXg5k5tbgaet2+/DlwjImIvf9UY02CMycNKCHM9FZcx5iNjTK19NwdIGaDn7ldcF3E98L4xpsIYcxZ4H1jupbjuBF651IOKyCIgHfitMWYPViK5S0T8gPuBx4wxJ4wxLcaYbcaYBuBu4ANjzCvGmCZjzB+x/j49iQNeMPZ/HnAe6w3jKqz+etYYk4vVX8ftdePttmuB7xtjvjCWfcaYcmPMTqw3jGvsdncAm40xp9ue1BizBajoKSj79Zy173pq/7pkXBfRn31zoOPq1f41EIwxJ40xn9i3q4BDWAcfrm7G3seMMTlAjIgkMQD/k0Ml0ScDRS73i+naSe1tjDHNWP9Ajl5u6864XD2A9Y7dJkREdotIjoisGqCY+hLXavsU8XURSe3jtu6MC7FKXE7gQ5fFPfXXPcBfjDFtHx1/2V4WD4RgJd7OUntY3pPgTrEX2bEnA0Ui8ncicsh+3k1AtP38l3qu54E19u01wIt9iKmzzvuXAf5il4rW9eNxL9d8EdknIn8Skcn2MnfuX70mImFYyfINl8Ue6S+xyspXADs6reqpb/rdZ0NlIKm7b+HtPC+0pza92fZy9fqxRWQNMBvrCLBNmjGmREQygQ9FZL8xpi/Jpz9xvQO8YoxpEJGHsRLO1b3c1p1xtbkDeN0Y0+KyrEt/YZU+bgP8ReSU3S4YiME6Xa7HugDsvk6PX0TPZ3Y1QJjL/ZE9tGvbv9KxjsauAW6xt/8+F15vkR1Dd3Xjl4ADdm19IvCHHp7rokRkGVaiX+SyeKHdXyOA90XksH3E6wmfYF17pVpEVmC9rrG4d//qiy8DW40xrkf/bu8vEYnAenP5G2PM+c6ru9lkQHLYUDmiL8Y6KmqTgvUP3m0bsWZCRGOdwvVmW3fGhYhcCzwBrLTLBgAYY0rs37lYdeErPBWXXTpoi+U5rNp2r7Z1Z1wu7qDTaXUP/bUKaMEai5lh/0wEsrAGaDcB/y0io+xB0fliTb/8DXCtiNwmIgEi4rAfA2AvcKuIhInIGKwE2tAp9pF27G1HV81Aqd1mHuD6LRMbgH8VkbH2gNs0+/kwxhQDu7CO5N8wxtRdrAO7IyLT7Oe42RhT3k1/nQHeZOBKlpdkjDlvjKm2b78LBIpIPO7dv/riYvuXW/pLRAKxkvxvjDG/76ZJT33T/z5zx8DDQP9gnXnkYp3Ktw3gTO7U5pt0HIz9rX17Mh0HY3MZuMHY3sR1BdZp+9hOy2OBYPt2PHCUARqU6mVcSS63bwFyzIWBnzw7vlj7dpyn4rLbjccaGJNL9RfwHvDjbh7jNqwB0Ujgp8AJrHLeFiDUbrMY6/T5PNZR999hHXXHA3/BGqzdCvyAroOx+zr114v24zQD/2zHf63dxh/rCD/PfsxdQIpLrGvsx1zWQ79l0POgZxrWuNOCTsvDgUiX29uA5QP8f3mxuEa2/f2wEmah3Xe92gfcFZe9vu0gMNxT/WW/9heAn16kzY10HIzdOVD/kwPWue7+wRqRPoKVNJ+wl/0Q6ygZrFrs7+ydfieQ6bLtE/Z2XwA3eDiuD4DTWEeJe4G37eULsGZi7LN/P+DhuJ7ESl77gI+ACS7b3m/34zHgPk/GZd//AfBUp+3c3V+vACexZuwUYx3FPww8bK8XrBk8x+3nnz1Q/YU1U6QQe/ZNH+PaAJx12b9228sz7b7aZ/+dn/Bwfz3qsn/l4PJG1N0+4Km47Db3Yk3QcN3O3f21COvN/DOXv9UKT+1jegkEpbzIPp1/FesM4Yfejkf5pqFSo1fK54jIRKASa9D4p14OR/kwPaJXSikfp0f0Sinl4wbdPPr4+HiTkZHh7TCUUmpI2bNnT5np4TtjB12iz8jIYPfuAb2ekFJK+TwRKehpnZZulFLKxw26I3qllBpOjDFU1DSSX15DU4thXqZjwJ9DE71SSnnAudom8spryC+rIc/+yS+3flfVNwMwNTmad7616BKP1HdDItE3NTVRXFxMfX29t0Nxu5CQEFJSUggMDPR2KEqpPqpuaG5P5PllNR0S+9napvZ2IpAcE4ozPpxVM5LJiA8nMz6czIRwt8Q1JBJ9cXExkZGRZGRkYF1i3jcZYygvL6e4uBin0+ntcJRS3ahvaiG/PYHXkldWTX5ZLXnlNZRWNXRoOzIqhIz4MJZPScIZH0aGIxxnfDipcWGEBPp7LOYhkejr6+t9PskDiAgOh4PS0lJvh6LUsNbY3EphRW2XI/P8shpKznWsLMRHBOOMD2PpuIT2I/OM+HDSHWGEBQ2OFDs4ougFX0/ybYbL61TK25pbWik+W9chiefadfMTZ+todbloQExYIBmOcK7MdOC0E7nTEU5GfBiRIYO/zDpkEr1SSvVVa6uh5FydVVopqyavrLa97FJYUUuzSzaPCA7AGR/OjNRYbrHr5k77JyYsyIuvov800fdSZWUlL7/8Mo888kiftluxYgUvv/wyMTExbopMqeHNGMPp8w3ts1jaj8zLaiioqKWxubW9bWigP+mOMMaPjGT5lJHtyTzDEU58RJDPnlFrou+lyspKfvGLX3RJ9C0tLfj79zyo8u6777o7NKV8njGG8prGDkncmppYS0F5DbWNF75xMsjfj3RHGBnx4SybMIIMu8SSGR9BYlSwzybzixlyif5f3vmcgyWdv2qxfyaNiukws98AABVvSURBVOKfvzz5om0ef/xxjh8/zowZMwgMDCQiIoKkpCT27t3LwYMHWbVqFUVFRdTX1/PYY4+xbp313cJtl3Sorq7mhhtuYNGiRWzbto3k5GTeeustQkNDB/S1KDWUVdY2uswvr+0wVbGqobm9XYCfkBoXRoYjjHmZce0DoBmOcEbFhOLvN/yS+cUMuUTvLU899RQHDhxg7969bN68mRtvvJEDBw60T4PctGkTcXFx1NXVMWfOHFavXo3D0fETbkePHuWVV17hueee47bbbuONN95gzZo13ng5SnlN21zz9iNzl1ktPc01v2VmcvvUxIz4cFJiQwn01yu49NaQS/SXOvL2lLlz53aY6/7000/z5ptvAlBUVMTRo0e7JHqn08mMGTMAmDVrFvn5+R6LVylPqmt0mWve4dOgtZRVd5xrnhQdQoYjvH2uuTM+Amd8GKlxYQQHeG6uuS8bcol+sAgPv/AJts2bN/PBBx+wfft2wsLCWLp0abef4g0ODm6/7e/vT11dnUdiVcodGppbKKqobf/QUFupJb+8hpM9zDW/ekKCy9REq9QSGqTJ3N000fdSZGQkVVVV3a47d+4csbGxhIWFcfjwYXJycjwcnVLu0WTPNW+vlZdfuE5LSWXHueaxYYFkxIczP9PRYWpiumNozDX3ZZroe8nhcLBw4UKmTJlCaGgoiYmJ7euWL1/OL3/5S6ZNm8b48eOZN2+eFyNVqm9aWg0llXUdkrh1ZF5LUae55pHBAWTEhzMzLZZbZ6Z0+Fj/UJ9r7ssG3XfGzp4923T+4pFDhw4xceJEL0XkecPt9Sr3a5trnmtfl8U1qReW19LY0nGuuXVEHmZPTbzwsX5HuO/ONR/qRGSPMWZ2d+v0iF4pH2GMoay6scuReV5ZDQXltdQ1ucw1D/AjPS4MZ3w410wY0V4vd8aHD9u55r5ME71SQ0xlbWOnqYkXrqBY3WmueVqc9cGhBaPjrSN0u26eFK1zzYeTIZPojTHD4ihjsJXSlHdU1Te1X/o2r/TCIGh+eQ2VLnPN/QSSY0PJcIQzc2ZshwtupcSGEqBzzRVDJNGHhIRQXl6Ow+Hw6WTfdj36kJAQb4eiPKC2sblDvTzfZVZLWXVjh7ZJ0SE448NZMTWpfWqidV3zUJ1rri5pSCT6lJQUiouLh8V12tu+YUr5hobmFgrLa7tMTcwvq+XU+Y5zzRMig3E6wrnarpm3X9c8Tueaq/4ZEok+MDBQv3FJDVpNLa0UVdR2uD5LfnkNuaU1lJyrw3Qz13zBGEeHI/OM+HAigofEv6MagnTPUqqXyqobOFhyvj2Jt33Ev+hsHS2uc81DrOuaz0qPZXV8SvuRudMRTnSYfnBIeZ4meqUu4cCJc2zMzuOdfSXtHx5qm2s+aVQUN05L6nDBLZ1rrgYbTfRKdaO11fDXw2fYkJXLjrwKwoP8+fr8DK6blEhmQjgjInWuuRo6NNEr5aK2sZk39hSzaWs+eWU1jIoO4YkVE7l9bipRer0WNUT1KtGLyHLgZ4A/sMEY81Sn9enAJiABqADWGGOKXdZHAYeAN40xjw5Q7EoNmNPn63l+Wz6/2VHIubompqfG8H/vvIIbpozUuehqyLtkohcRf+AZ4DqgGNglIm8bYw66NPsR8IIx5nkRuRp4Eviay/p/BT4euLCVGhgHTpxjU3Ye73xWQkur4frJI1m72MnMtFgtzSif0Zsj+rnAMWNMLoCIvArcDLgm+knA39q3PwL+0LZCRGYBicB7QLcX3FHKk1pbDR8ePsPG7Dy255YTHuTPmnnp3LfASZojzNvhKTXgepPok4Eil/vFwJWd2uwDVmOVd24BIkXEAZwFfox1dH9NT08gIuuAdQBpaWm9jV2pPqlrbOH1T4r5VXYeuWU1JEWH8I8rJnD7nDSiQ7X+rnxXbxJ9d+evnS/I8h3g5yJyL7AFOAE0A48A7xpjii52GmyMWQ+sB+syxb2ISaleO32+nhe2W/X3ytompqVE87Rdf9fvHVXDQW8SfTGQ6nI/BShxbWCMKQFuBRCRCGC1MeaciMwHFovII0AEECQi1caYxwckeqUu4vOSjvPfvzQpkbWLM5mdrvV3Nbz0JtHvAsaKiBPrSP0O4C7XBiISD1QYY1qB72HNwMEYc7dLm3uB2ZrklTu1tho2HznDhqw8th0vJyzIn7uvTOe+hRmkO8Iv/QBK+aBLJnpjTLOIPAr8GWt65SZjzOci8kNgtzHmbWAp8KSIGKzSzTfdGLNSXdQ1tvD7T4vZmJ1HbqlVf//eDRO4Y06aXnZADXtD4qsElerJmap6XtxewEs5BZytbWJqcjRrFztZMTVJ6+9qWNGvElQ+59DJ82zMzuPtvSU0tbZy3USr/j4nQ+vvSnWmiV4NGa2tho+PlLIhO5etx8oJDfTnzrmp3LfQSUa81t+V6okmejXo1Te18PtPTrAxO5fjpTUkRgXzD8sncNdcrb8r1Rua6NWgdaaqnpe2F/DSjkIqahqZkhzFT2+fwYqpSQQFaP1dqd7SRK8GncOnzrMxK4+37Pr7tRMTWbvIyVxnnNbflboMmujVoNDaavj4aCmbsvPIOlpGaKA/d9j1d6fW35XqF030yqvqm1p489MTbMzO49iZahKjgvn75eO5a24aMWFB3g5PKZ+giV55RWlVAy/mWPPfK2oamTwqip/cPp0bp47S+rtSA0wTvfKoL05VsTE7lz98WkJjSyvXThzBA4symZep9Xel3EUTvXI7YwxbjpaxISuXrKNlhAT6cducFO5f6CQzIcLb4Snl8zTRK7epb2rhrb0n2JCVx9Ez1YyIDOa711v199hwrb8r5Sma6NWAK6tu4KWcAl7cXkB5TSOTkqL479umc9M0rb8r5Q2a6NWAOXK6io1Zeby59wSNza1cM2EEDyx2Mj/TofV3pbxIE73qF2MMWUfL2JCdx5YjpYQE+vHVWSncv8jJaK2/KzUoaKJXl6W+qYW395awITuXI6erSYgM5jtfGsddV6YTp/V3pQYVTfSqT8qrG3gpp5AXc/Ipq25kwshIfvzV6dw0PYngAH9vh6eU6oYmetUrR09XsWlrHm98YtXfr54wgrWLnMwfrfV3pQY7TfSqR8YYso+VsSErj4+PlBIc4MdXZlnz38eM0Pq7UkOFJnrVRUNzC2/tLWFTdh6HT1URHxHM3103jrvnaf1dqaFIE71qV17dwG92FPLC9gLKqhuYMDKS//rKNFbOGKX1d6WGME30imNnqtiYnc/vPymmobmVpeMTWLsok4VjtP6ulC/QRD9MGWPYdrycDVm5fPRFKUEBfqyemcz9C52MTYz0dnhKqQGkiX6YaWhu4Z19J9mQlWvX34P49nXjuPvKNBwRwd4OTynlBproh4mKmkZ+k1PACzkFlFY1MD4xkv/8yjRWTh9FSKDW35XyZb1K9CKyHPgZ4A9sMMY81Wl9OrAJSAAqgDXGmGIRmQH8PyAKaAH+jzHmtQGMX13CsTPV1vz3PVb9/apxCay9zcmiMfFaf1dqmLhkohcRf+AZ4DqgGNglIm8bYw66NPsR8IIx5nkRuRp4EvgaUAt83RhzVERGAXtE5M/GmMoBfyWqnTGG7cfL2ZCdx4eHzxAU4MetVyRz/yIn47T+rtSw05sj+rnAMWNMLoCIvArcDLgm+knA39q3PwL+AGCMOdLWwBhTIiJnsI76NdG7QWNzK+/sK2FDdh6HTp4nPiKIv712HHfPSyNe6+9KDVu9SfTJQJHL/WLgyk5t9gGrsco7twCRIuIwxpS3NRCRuUAQcLxfEasuztY08vLOQp7fls+ZqgbGJUbwn6ut+e9af1dK9SbRd1fINZ3ufwf4uYjcC2wBTgDN7Q8gkgS8CNxjjGnt8gQi64B1AGlpab0KXMHx0mo2ZefxxifF1De1smRcAj/6qpPFY7X+rpS6oDeJvhhIdbmfApS4NjDGlAC3AohIBLDaGHPOvh8F/A/wfWNMTndPYIxZD6wHmD17duc3EeXCGMP23HI2ZuXxV7v+fssMq/4+fqTW35VSXfUm0e8CxoqIE+tI/Q7gLtcGIhIPVNhH69/DmoGDiAQBb2IN1P5uIAMfbhqbW/njZyVsyMrj4MnzOMKDeOyasayZl05CpNbflVI9u2SiN8Y0i8ijwJ+xplduMsZ8LiI/BHYbY94GlgJPiojBKt180978NmAJ4LDLOgD3GmP2DuzL8F2VtY38ZseF+vuYERE8detUVl2RrPV3pVSviDGDq1Iye/Zss3v3bm+H4XW5pdX8ams+r+8ppq6phcVj43lgkZOrxiVo/V0p1YWI7DHGzO5unX4ydhAxxrAjr4INWXn89fBpAv38WHXFKO5f5GTCyChvh6eUGqI00Q8Cjc2t/M/+EjZm53HgxHniwoP41tVj+ZrW35VSA0ATvRdV1l6Y/376fAOjE8J58tap3KL1d6XUANJE7wV5ZTX8amsev9tt1d8XjYnnqdXTuGpsAn5+Wn9XSg0sTfQeYoxhZ14FG7Lz+OCQVX9fOWMUDyxyMjFJ6+9KKffRRO9mTS2tvLv/JBuy8th/4hyxYYF8a9kY1sxPZ0RkiLfDU0oNA5ro3eRcbROv7Crk11vzOXW+nsyEcP79Fqv+Hhqk9XellOdooh9g+W319z3F1Da2sHCMgydvncpV47T+rpTyDk30A8AYw678s2zIyuX9Q6cJ8BNWTk/mgUVOJo3S+rtSyrs00fdDW/19Y3YenxWfIyYskG8uHcPX56czIkrr70qpwUET/WU4V9fEqzsL+fW2fE6eqyczPpx/WzWF1TNTtP6ulBp0NNH3QWF5LZu25vHb3UXUNrawYLSDf1s1hWXjR2j9XSk1aGmivwRjDLsLzrIxK48/HzxFgJ/w5enW/PfJo6K9HZ5SSl2SJvoeNLW08qcDp9iYlcu+4nNEhwbyyNLRfH1+Bolaf1dKDSGa6Ds5V9fEa/b895Jz9Tjjw/nXVVNYPTOZsCDtLqXU0KOZy1ZUYdffdxVR09jCvMw4fnjzFK6eoPV3pdTQNqwTvTGGTwrPsiErjz9/fgo/EVZOt67/PiVZ6+9KKd8wLBN9c0sr731+ig1ZeewtqiQ6NJCHr7Lq7yOjtf6ulPItwyrRn69v4re7ivjV1nxOVNaR4QjjX2+ezOpZKVp/V0r5rGGR3YoqavnV1nx+u7uI6oZmrnTG8YOVk7l6wgj8tf6ulPJxPp3o9xScZWN2Lu8dsOrvN01L4oFFmUxN0fq7Umr48LlE39zSyp8/P82G7Fw+LawkKiSAdUtGc8+CdJKiQ70dnlJKeZzPJPqahmZe2VnYXn9Pd4TxLysn85VZKYQH+8zLVEqpPvOZDFjT2Mx/vvcFM9Ji+KcvT+LaiYlaf1dKKXwo0Y+IDOHD71xFSmyYt0NRSqlBxc/bAQwkTfJKKdWVTyV6pZRSXWmiV0opHyfGGG/H0IGIlAIF/XiIeKBsgMIZSBpX32hcfaNx9Y0vxpVujEnobsWgS/T9JSK7jTGzvR1HZxpX32hcfaNx9c1wi0tLN0op5eM00SullI/zxUS/3tsB9EDj6huNq280rr4ZVnH5XI1eKaVUR754RK+UUsqFJnqllPJxQybRi8hyEflCRI6JyOPdrA8Wkdfs9TtEJMNl3ffs5V+IyPUejuvbInJQRD4Tkb+KSLrLuhYR2Wv/vO3huO4VkVKX51/rsu4eETlq/9zj4bh+4hLTERGpdFnnzv7aJCJnRORAD+tFRJ624/5MRGa6rHNnf10qrrvteD4TkW0iMt1lXb6I7Lf7a7eH41oqIudc/l7/5LLuovuAm+P6rktMB+x9Ks5e587+ShWRj0TkkIh8LiKPddPGffuYMWbQ/wD+wHEgEwgC9gGTOrV5BPilffsO4DX79iS7fTDgtB/H34NxLQPC7NvfaIvLvl/txf66F/h5N9vGAbn271j7dqyn4urU/lvAJnf3l/3YS4CZwIEe1q8A/gQIMA/Y4e7+6mVcC9qeD7ihLS77fj4Q76X+Wgr8sb/7wEDH1antl4EPPdRfScBM+3YkcKSb/0m37WND5Yh+LnDMGJNrjGkEXgVu7tTmZuB5+/brwDUiIvbyV40xDcaYPOCY/XgeicsY85Expta+mwOkDNBz9yuui7geeN8YU2GMOQu8Dyz3Ulx3Aq8M0HNflDFmC1BxkSY3Ay8YSw4QIyJJuLe/LhmXMWab/bzguf2rN/3Vk/7smwMdlyf3r5PGmE/s21XAISC5UzO37WNDJdEnA0Uu94vp2kntbYwxzcA5wNHLbd0Zl6sHsN6x24SIyG4RyRGRVQMUU1/iWm2fIr4uIql93NadcWGXuJzAhy6L3dVfvdFT7O7sr77qvH8Z4C8iskdE1nkhnvkisk9E/iQik+1lg6K/RCQMK1m+4bLYI/0lVln5CmBHp1Vu28eGyvXou/sGkc7zQntq05ttL1evH1tE1gCzgatcFqcZY0pEJBP4UET2G2OOeyiud4BXjDENIvIw1tnQ1b3c1p1xtbkDeN0Y0+KyzF391Rve2L96TUSWYSX6RS6LF9r9NQJ4X0QO20e8nvAJ1rVXqkVkBfAHYCyDpL+wyjZbjTGuR/9u7y8RicB6c/kbY8z5zqu72WRA9rGhckRfDKS63E8BSnpqIyIBQDTWKVxvtnVnXIjItcATwEpjTEPbcmNMif07F9iM9S7vkbiMMeUusTwHzOrttu6My8UddDqtdmN/9UZPsbuzv3pFRKYBG4CbjTHlbctd+usM8CYDV7K8JGPMeWNMtX37XSBQROIZBP1lu9j+5Zb+EpFArCT/G2PM77tp4r59zB0DD24YyAjAGoBwcmEAZ3KnNt+k42Dsb+3bk+k4GJvLwA3G9iauK7AGn8Z2Wh4LBNu344GjDNCgVC/jSnK5fQuQYy4M/OTZ8cXat+M8FZfdbjzWwJh4or9cniODngcXb6TjQNlOd/dXL+NKwxp3WtBpeTgQ6XJ7G7Dcg3GNbPv7YSXMQrvverUPuCsue33bQWC4p/rLfu0vAD+9SBu37WMD1rnu/sEakT6ClTSfsJf9EOsoGSAE+J290+8EMl22fcLe7gvgBg/H9QFwGthr/7xtL18A7Ld39P3AAx6O60ngc/v5PwImuGx7v92Px4D7PBmXff8HwFOdtnN3f70CnASasI6gHgAeBh621wvwjB33fmC2h/rrUnFtAM667F+77eWZdl/ts//OT3g4rkdd9q8cXN6IutsHPBWX3eZerAkartu5u78WYZVbPnP5W63w1D6ml0BQSikfN1Rq9EoppS6TJnqllPJxmuiVUsrHaaJXSikfp4leKaV8nCZ6pZTycZrolVLKx/1/FGT29ifkRKYAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and kullback-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and kullback-checkpoint.ipynb new file mode 100644 index 000000000..423b4f212 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and kullback-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:48:34.347083 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:48:34.377002 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adamax',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:48:37.327433 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:48:37.345421 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:48:37.389267 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:48:37.557904 13144 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:48:37.584832 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.3637 - acc: 0.9008\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.1971 - acc: 0.9440\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.1484 - acc: 0.9576\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 28us/step\n", + "Loss : 0.1410951664865017\n", + "Accuracy : 0.9577\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXxV5Z348c83+0ISkhu2JGRDZJVFFkEWcUesW5latVo3oJsz7cx05qdjf9OOM/3pzLS/af21nQ4g1WpdWltbbG3dkSAgi4oioEB29iQQsq/f3x/nJNxscENy701uvu/XK6+ce89z7v3eJyffe57nOec5oqoYY4wJXWHBDsAYY4x/WaI3xpgQZ4neGGNCnCV6Y4wJcZbojTEmxFmiN8aYEGeJ3hhjQpwlejOkiUihiFwV7DiM8SdL9MYYE+Is0RvTDRFZKSIHRKRCRNaLSJr7vIjIf4nIcRGpFJGPRGSqu26ZiOwRkSoROSQi3w7upzDGYYnemE5E5ArgUeBWYAxQBDzvrr4GWAxcCAwHvgiUu+ueAL6iqgnAVOCtAIZtTI8igh2AMQPQl4B1qvo+gIg8BJwUkWygCUgAJgLbVHWv13ZNwGQR2aWqJ4GTAY3amB7YEb0xXaXhHMUDoKrVOEft6ar6FvAT4KfAMRFZLSKJbtHlwDKgSETeEZH5AY7bmG5Zojemq8NAVtsDEYkHPMAhAFV9XFVnAVNwunD+wX1+u6reBIwEfg/8OsBxG9MtS/TGQKSIxLT94CToe0VkhohEA/8HeE9VC0VkjohcIiKRQA1QD7SISJSIfElEklS1CTgNtATtExnjxRK9MfAKUOf1swj438BvgSPAOOA2t2wisAan/70Ip0vnB+66u4BCETkNfBW4M0DxG3NWYjceMcaY0GZH9MYYE+Is0RtjTIizRG+MMSHOEr0xxoS4AXdlbGpqqmZnZwc7DGOMGVR27txZpqojuls34BJ9dnY2O3bsCHYYxhgzqIhIUU/rrOvGGGNCXEgl+oZmuxDRGGM6C5lEf7q+iQWPvc0/vfQxBWU1wQ7HGGMGjAHXR3++GptbuXryKF7cWcpz24q5ZvIoVi0ex6ys5GCHZowJgKamJkpLS6mvrw92KH4VExNDRkYGkZGRPm8z4KZAmD17tvZlMPZEVQNPbS7k6a1FVNY1MTsrmVWLc7lq0ijCwqQfIzXGDCQFBQUkJCTg8XgQCc3/dVWlvLycqqoqcnJyOqwTkZ2qOru77UKm66bNiIRovn3tBDY/eAXfu2EyR0/Xs+rpnVz1X+/w3LZi6pusH9+YUFRfXx/SSR5ARPB4PL1utYRcom8THx3BPQty2PDtJfy/22cSHxXBQ7/7mIX//hY/eWs/p2obgx2iMaafhXKSb3M+nzFk+uh7EhEexg3T0/jctDFsyS9n9cZ8fvDaZ/xsw0FunT2W+xfmMDYlLthhGmOM34TsEX1nIsKl41J58t65vPqtxVw3dQy/eq+IJT/YwF8/9wEfl1YGO0RjzCB26tQpfvazn/V6u2XLlnHq1Ck/RHTGkEn03iaMTuCHt04n7x+vYMXCHDbsO84NP9nE7au38vanxxloA9TGmIGvp0Tf0nL2ccFXXnmF4cOH+yssYIgm+jajk2J4aNkk3n3oCv5p2UQKymq49xfbWfqjPF7cWUpjc2uwQzTGDBIPPvggBw8eZMaMGcyZM4fLL7+cO+64g4suugiAm2++mVmzZjFlyhRWr17dvl12djZlZWUUFhYyadIkVq5cyZQpU7jmmmuoq6vrl9hC7vTKvmhsbuXlXYdZk5fPvqNVjE6M4d4F2dx+SSaJMb6fs2qMCby9e/cyadIkAP7l5U/Yc/h0v77+5LREvnvDlB7XFxYW8rnPfY7du3ezYcMGrr/+enbv3t1+GmRFRQUpKSnU1dUxZ84c3nnnHTweT/v8XtXV1VxwwQXs2LGDGTNmcOutt3LjjTdy551d70jp/VnbDKnTK/siKiKM5bMy+PM3F/HkvXPIHRHPo3/ex6WPvsX/eWUvRyr759vVGBP65s6d2+Fc98cff5zp06czb948SkpK2L9/f5dtcnJymDFjBgCzZs2isLCwX2IJ+bNuzoeIsGTCSJZMGMnuQ5Ws3pjPE5sKWLepgBtnpLFqcS4TRycGO0xjTA/OduQdKPHx8e3LGzZs4I033mDLli3ExcWxZMmSbs+Fj46Obl8ODw/vt64bO6I/h6npSTx++0w2fHsJd83P4i+7j7L0R3ncvW4bmw+U2cCtMQaAhIQEqqqqul1XWVlJcnIycXFx7Nu3j61btwY0Njui99HYlDi+e8MUvnnleJ7ZWsSTm4u4Y+17TE1PZNXicSybOpqIcPveNGao8ng8LFiwgKlTpxIbG8uoUaPa1y1dupSf//znTJs2jQkTJjBv3ryAxmaDseepvqmF339wiNV5+eSfqCEjOZb7F+Zw6+yxxEfb96cxgdbdAGWossHYAImJDOe2uZm88beXsebLsxmTFMO/vLyHSx97i/98dR/Hq0J7Bj1jzOBhh559FBYmXD15FFdPHsX7xSdZ/U4+P9twkDV5BXx+ZjorF+cybsSwYIdpjBnCLNH3o4szk/n5XbMoKKthbV4+L+4s5fntJVw1aRRfuSyX2VnJQ2LSJWOCRVVD/n/sfLrbrevGD3JS4/n+LRfx7oNX8DdXjmdnUQVf+PkWPv/fm/nL7iO0tA6scRFjQkFMTAzl5eUhfSZc23z0MTExvdrOBmMDoK6xhd/sLGFtXgHFFbXkpMZz/8Ic/mpWBjGR4cEOz5iQMNTvMHW2wVhL9AHU0qr8ZfdRVm88yK7SSjzxUXx5fjZ3zc8iJT4q2OEZYwYxS/QDjKryXkEFqzfm89a+48REhnHr7LGsWJhLpsfmxjfG9N7ZEr0NxgaBiDAv18O8XA/7j1WxJi+f57eV8MzWIq6bOoZVi3OZPta/05YaY4YOO6IfII6frucXmwt5ZmsRVfXNzM1J4auX5bLkwpF2U3NjzDn57YIpEVkqIp+KyAERebCb9V8VkY9F5EMR2SQik/vyfqFsZGIM/2vpRLY8dCXfuX4SpRW13PfkDq790UZ+vaOEhma7qbkx5vyc9xG9iIQDnwFXA6XAduB2Vd3jVSZRVU+7yzcCX1fVpWd73aF6RN9ZU0srf/roCP+zMZ+9R04zMiGaexZk86VLskiKtbnxjTEd+euIfi5wQFXzVbUReB64ybtAW5J3xQMDq59oAIsMD+Pmmem88jcLefr+uUwYncB//OVTLn30Tf71j3s4dMrmxjfG+KYvg7HpQInX41Lgks6FROQbwN8BUcAV3b2QiKwCVgFkZmb2IaTQIyIsGj+CReNH8MnhStZszOfJzYU8tbmQz00bw6rF45icZnPjG2N61peumy8A16rqCvfxXcBcVf3rHsrf4Za/+2yva10353boVB3rNhXw/LZiahpbWDQ+lVWLc1l4QWrIX/5tjOmev7puSoGxXo8zgMNnKf88cHMf3s+40ofH8r8/N5nND13JPy6dwL6jVdz1xDauf3wTv//gEE0tdlNzY8wZfUn024HxIpIjIlHAbcB67wIiMt7r4fVA15skmvOWFBvJ15dcwKb/dTn/sXwajS2tfOuFD1nynxtYm5dPdUNzsEM0xgwAfTqPXkSWAT8CwoF1qvp9EXkE2KGq60Xkx8BVQBNwEnhAVT8522ta1835a21V3v70OKs35vNeQQWJMRF8aV4W916azcjE3k2CZIwZXGwKhCHow5JTrN54kL/sPkpEWBg3z3Ruan7ByIRgh2aM8QNL9ENYUXkNa/MK+M3OEuqbWrly4khWLs7lkpwUG7g1JoRYojdU1DTy9JYintpSSEVNI9Mzkli1eBxLp44m3KZYMGbQs0Rv2tU3tfDizlLW5uVTWF5LZkocKxbl8IVZY4mNsrnxjRmsLNGbLlpaldf3HOV/NubzQfEpkuMiuWt+NnfPz8IzLDrY4RljeskSvemRqrKj6CT/804+b+w9RnREGH81K4OVi3LJTo0PdnjGGB/ZfPSmRyLCnOwU5mSncOB4NWvz8vnNjlKe3VbMtZNHs+qyXC7OTA52mMaYPrAjetPF8ap6ntpcyDNbi6msa2JOdjKrFo/jyok2N74xA5V13ZjzUtPQzAvbS3hiUwGHTtUxbkQ8KxflcvPMdLupuTEDjCV60yfNLa386eMjrN6YzyeHT5M6LJp7F2Rz5yVZJMXZ3PjGDASW6E2/UFU2Hyxn9cZ83vnsBHFR4XxxzljuX5hDRrLd1NyYYLJEb/rdvqOnWb0xn/UfHkaB6y9ybmo+NT0p2KEZMyRZojd+c6Syjl+8W8iz7xVT3dDMggs8rFyUy2UXjrApFowJIEv0xu9O1zfx3HvFrHu3gGOnG5g4OoGVi3K5YXoaURF9uge9McYHluhNwDQ2t7J+12HWbMzn02NVjE6M4b6F2dw+N5OEGBu4NcZfLNGbgFNVNnx2gtXv5LMlv5yE6AjuuCSTexfkMDrJ5sY3pr9ZojdB9VHpKVZvzOeVj48QHibcOD2dVYtzmTDa5sY3pr9YojcDQklFLU9sKuCF7SXUNbWwZMIIVi3OZX6uxwZujekjS/RmQDlZ08gzW5258cuqG7koPYlVi3O5bupoIsJt4NaY82GJ3gxI9U0tvPTBIdZszCe/rIaM5FhWLMzh1jljiYuy+faM6Q1L9GZAa21VXt97jNUb89lZdJLhcZHcNS+LL8/PZkSCzY1vjC8s0ZtBY2dRBas35vPanmNEhoex/OIMVizKYdyIYcEOzZgBzRK9GXTyT1SzdlMBL+4spamllasmjeIri3OZnZ0S7NCMGZAs0ZtBq6y6gV9uLuSXW4s4VdvExZnDWbV4HNdMHmVz4xvjxRK9GfRqG5v5zY5S1m7Kp6SijpzUeFYsymH5xRk2N74xWKI3IaS5pZW/fHKU1Rvz+ai0Ek98FHdfms1d87JIjo8KdnjGBI0lehNyVJWt+RWs3niQtz89QWxkOLfOzmDFolzGptjc+GbosZuDm5AjIswf52H+OA+fHati9cZ8nt1WzNNbi7juojF8ZXEu0zKGBztMYwYEO6I3IeNoZT2/2FzAs1uLqWpoZl5uCl9ZPI4lE2xufBP6rOvGDClV9U08v62Ede8WcKSyngtHDWPlolxumpFuc+ObkGWJ3gxJTS2tvLzrMKs35rPvaBWjEqO5d0EOd1ySSaLNjW9CjCV6M6SpKnn7y1i9MZ9NB8oYFh3B7XPHcu+CHNKGxwY7PGP6hSV6Y1y7D1WyJi+fP350BAFunJ7GysW5TBqTGOzQjOkTS/TGdFJ6spZ1mwp5fnsxtY0tLBqfylcWj2PBBTY3vhmc/JboRWQp8GMgHFirqo91Wv93wAqgGTgB3KeqRWd7TUv0JpAqa5t45r0intxcyImqBqakJbJqcS7XXzTG5sY3g4pfEr2IhAOfAVcDpcB24HZV3eNV5nLgPVWtFZGvAUtU9Ytne11L9CYYGppb+P0Hh1i9MZ+DJ2pIHx7LfQtzuG3OWOKj7XITM/CdLdH35ZBlLnBAVfNVtRF4HrjJu4Cqvq2qte7DrUBGH97PGL+Jjgjni3Myef1vL2Ptl2eTPjyWf/3jHuY/+ib/8Zd9HK+qD3aIxpy3vhyqpAMlXo9LgUvOUv5+4M/drRCRVcAqgMzMzD6EZEzfhIUJV00exVWTR/FB8UlWb8znv985yNq8Am6Zmc41U0aR5YkjIznOJlMzg0ZfEn13I1bd9gOJyJ3AbOCy7tar6mpgNThdN32IyZh+MzMzmf++cxaFZTWs3ZTPb3aU8sKOM8c2oxKjyUyJIzMl3vntiSUzJY6xKXGMGBZtg7pmwOhLoi8Fxno9zgAOdy4kIlcBDwOXqWpDH97PmKDITo3n326+iH9cOpGDx6sprqiluLzW+V1Ry5aDZfzug3q8h7tiI8Pbk77zZRBLpsf5UshIjrXWgAmoviT67cB4EckBDgG3AXd4FxCRmcD/AEtV9Xgf3suYoEuMiWRmZjIzM5O7rKtvauHQqTqKK2opcb8IitzlzQfLqG1s6VB+dGJM+xdBlieuw5dC6rAoaw2YfnXeiV5Vm0XkAeBVnNMr16nqJyLyCLBDVdcD/wkMA37j7rjFqnpjP8RtzIASExnOuBHDur23rapSXtPYpSVQ7H4J/Pb9jgO9ba2BTE9bayCu/XH6cGsNmN6zC6aMCbL6phZKT9Y5LQH3p6i8tv1xXdOZ1oCI0xoY6/UFkOU50xrwxFtrYKiy+eiNGcBiIsO5YOQwLhjZfWugrNptDVTUUFx+pnto0/4yjp7u2BqIiwrv0gpo+xLISI4lOsJaA0ORJXpjBjARYURCNCMSopmV1f3YQOnJWq9uIeeLoLC8ho37T1Df1Or1WjCmU2vAu3soxVoDIcsSvTGDmNMaSOCCkQld1qkqJ6ob2ruAitzxgZKKWjbuP8Gx0x1PgouPCm//Eug8QJxurYFBzRK9MSFKRBiZEMPIhBhmZaV0WV/f1NJhXKCtVVBQVsM7n52gobljayAtKZaxKbHtLQDnjCHnGoLkuEhrDQxgluiNGaJiIsMZPyqB8aN6aA1UNXRpCRRX1LLh0xMcr+rYGhgWHeEe/ceS5Ynv0D2UPjzW7uwVZJbojTFdiAgjE2MYmRjD7OyurYG6xhZKTnY8XbSkopaDJ2rY8GnH1kCYwJik2G4HiLNS4hhurQG/s0RvjOm12KhwLhyVwIXdtAZaW52xgeJOF44VV9Ty1qfHOdGpNZDQ3hroeu1AmrUG+oUlemNMvwoLE0YlxjAqMYY53bQGahubKXHPDmprCRSV17D/eBVvfXqcxm5aA50Hh9sGjJNirTXgC0v0xpiAiouKYMLoBCaM7r41cNwdG3BaBDXty2/sPU5ZdafWQExEhxaA95QSacNjibSbxwCW6I0xA0hYmDA6KYbRSTHMzenaGqhpaO4wNtDWJfTpsSre3HucxpaOrYG04bFdrh5u+xkeFxXIjxZUluiNMYNGfHQEE0cnMnF015u5t7Yqx6rqu8wnVFxRy+t7jlFW3dihfGJMRPuYwJnBYed00THDY0KqNWCJ3hgTEsLChDFJsYxJiuWSXE+X9TUNzR3GBdpOHd13pIo39nRsDYSHCWnDYzreb8DrJykuMpAfrc8s0RtjhoT46AgmjUlk0piurYGWVuXY6foOF461Lb/2yVHKa7q2BtouFus8QDwmKWbA3VjeEr0xZshzjuBjSRsey7xuWgPVDc1dxgWKK2rZc+Q0r+05SlOLdnit9OGxXQaH2x4nxQa+NWCJ3hhjzmFYdAST0xKZnNZ9a+DoaWdsoKSilqKKmvbJ5V795CgVnVoDSbGR3Q4OZ6b4rzVgid4YY/qg7Qg+fXgs88d1bQ1U1Td1aQkUV9TxyaFKXt19lObWM62BKWmJ/OlvFvV7jJbojTHGjxJiIpmSlsSUtKQu61palSOVZ+4x4K+rgC3RG2NMkISHCRnJcWQkx8E4/73PwBoaNsYY0+8s0RtjTIgbcDcHF5ETQFEfXiIVKOuncPqTxdU7FlfvWFy9E4pxZanqiO5WDLhE31cisqOnO6EHk8XVOxZX71hcvTPU4rKuG2OMCXGW6I0xJsSFYqJfHewAemBx9Y7F1TsWV+8MqbhCro/eGGNMR6F4RG+GKBHZICInRSQ62LEYM5BYojchQUSygUWAAjcG8H3t6nIz4A2aRC8iS0XkUxE5ICIPdrM+WkRecNe/5/7jt617yH3+UxG5NsBx/Z2I7BGRj0TkTRHJ8lrXIiIfuj/rAxzXPSJywuv9V3itu1tE9rs/dwc4rv/yiukzETnlte5s9fVlYCvwJHC31zaxIvJDESkSkUoR2SQise66hSKyWUROiUi1iJwWkd1uy8C7Pu5xt3vcjVtF5DER2Q/sd+vrpIg0iUidiOwUkUVe24eLyD+JyEERqXLXjxWRn4rIDzt9/pdF5Ftej9eJyHER2d1DfX7J3bc+cj/LdK91hSLysVtfO871t+kNH+Ja4tZ329/rn73WnXUf8HNc/+AV0253n0px1/mzvsaKyNsisldEPhGRb3ZTRrz2sY9E5GKvdX37n1TVAf8DhAMHgVwgCtgFTO5U5uvAz93l24AX3OXJbvloIMd9nfAAxnU5EOcuf60tLvdxdRDr6x7gJ91smwLku7+T3eXkQMXVqfxfA+t8qS/ggLsPzAKagFHu8z8FNgDp7vtf6u4LmUAVcDsQCXzO3W92u+VXdKqrT4A/A4LTaqh06yjNraOvuJ8rH/gOcBSIcbf/B+BjYIK7/XTAA8wFDgNhbrlUoLYtdve5xcDFwO4ePvelbX8f4DrgPa91hUCqn/axc8W1BPhjX/eB/o6rU9kbgLcCVF9jgIvd5QTgs27+J5d57WPz2v6W/fE/OViO6OcCB1Q1X1UbgeeBmzqVuQl4yl1+EbhSRMR9/nlVbVDVApyEMDdQcanq26pa6z7cCmT003v3Ka6zuBZ4XVUrVPUk8DqwNEhx3Q48d64XFZGFQBbwa1XdiZNI7hCRMOA+4JuqekhVW1R1s6o2AF8C3lDV51S1SVX/iPP36UkK8Et1//OA0zhfGJfh1Nf/qGo+Tn0ddNdNcMuuAL6jqp+qY5eqlqvqNpwvjCvdcrcBG1T1WNubqupGoKKnoNzPc9J9GKj965xxnUVf9s3+jsun/as/qOoRVX3fXa4C9uIcfHi7CXcfU9WtwHARGUM//E8OlkSfDpR4PS6layW1l1HVZpx/II+P2/ozLm/343xjt4kRkR0islVEbu6nmHoT13K3ifiiiIzt5bb+jAtxurhygLe8nu6pvu4GXlPVtkvHn3WfSwVicBJvZ2N7eL4n0Z1iL3FjTwdKROTvRWSv+77rgCT3/c/1Xk8Bd7rLdwJP9yKmzjrvXwq85nYVrerD656v+SKyS0T+LCJT3Of8uX/5TETicJLlb72eDkh9idOtPBN4r9Oqnuqmz3U2WAaSpJvnOp8X2lMZX7Y9Xz6/tojcCczGOQJsk6mqh0UkF3hLRD5W1d4kn77E9TLwnKo2iMhXcRLOFT5u68+42twGvKiqLV7PdakvnK6PW4FwETnqlosGhuM0l+txJoDd1en1S+i5ZVcDxHk9Ht1Dubb9KwvnaOxK4BZ3++9w5vOWuDF012/8DLDb7VufBPy+h/c6KxG5HCfRL/R6eoFbXyOB10Vkn3vEGwjv48y9Ui0iy3A+13j8u3/1xg3Au6rqffTv9/oSkWE4Xy7fUtXTnVd3s0m/5LDBckRfinNU1CYD5x+82zLinAmRhNOE82Vbf8aFiFwFPAzc6HYbAKCqh93f+Tj9wjMDFZfbddAWyxqcvm2ftvVnXF5uo1Ozuof6uhlowRmLmeH+TALycAZo1wH/V0TS3EHR+eKcfvkr4CoRuVVEIkTE474GwIfA50UkTkQuwEmgDZ1iH+3G3nZ01QyccMvMA7zvObcW+FcRGe8OuE1z3w9VLQW24xzJ/1ZV685Wgd0RkWnue9ykquXd1Ndx4CX6r8vynFT1tKpWu8uvAJEikop/96/eONv+5Zf6EpFInCT/K1X9XTdFeqqbvteZPwYe+vsHp+WRj9OUbxvAmdKpzDfoOBj7a3d5Ch0HY/Ppv8FYX+KaidNsH9/p+WQg2l1OBfbTT4NSPsY1xmv5FmCrnhn4KXDjS3aXUwIVl1tuAs7AmJyrvoC/AD/s5jVuxRkQTQB+BBzC6c7bCMS6ZRbhNJ9P4xx1/z3OUXcq8BrOYO27wPfoOhi7q1N9Pe2+TjPwXTf+q9wy4ThH+AXua24HMrxivdN9zct7qLdseh70zMQZd7q00/PxQILX8mZgaT//X54trtFtfz+chFns1p1P+4C/4nLXtx0ExgeqvtzP/kvgR2cpcz0dB2O39df/ZL9Vrr9/cEakP8NJmg+7zz2Cc5QMTl/sb9ydfhuQ67Xtw+52nwLXBTiuN4BjOEeJHwLr3ecvxTkTY5f7+/4Ax/UoTvLaBbwNTPTa9j63Hg8A9wYyLvfx94DHOm3n7/p6DjiCc8ZOKc5R/FeBr7rrBecMnoPu+8/ur/rCOVOkGPfsm17GtRY46bV/7XCfz3Xrapf7d344wPX1gNf+tRWvL6Lu9oFAxeWWuQfnBA3v7fxdXwtxvsw/8vpbLQvUPmZTIBgTRG5z/nmcFsIjwY7HhCaf+ujPdYGDiGSJczHQR+JcbJLhtS5TRF5zLxTYI14XMhkzlInIJOAUzqDxj4Icjglh5zyiF5FwnGbW1ThNoe3A7aq6x6vMb3AujnhKRK7AaVrc5a7bAHxfVV93R5xb9cx55cYYY/zMlyN6Xy5wmAy86S6/3bZeRCYDEar6OoCqVluSN8aYwPLlPPruTta/pFOZXcBy4Mc4Z3AkuKePXQicEpHf4YyyvwE8qB3Pje4gNTVVs7Ozff4AxhhjYOfOnWXawz1jfUn0vpys/23gJyJyD87pa4dwTjOLwDmFbSbOWQUv4Ix4P9HhDZyr0FYBZGZmsmNHv84nZIwxIU9Einpa50vXjS8X3xxW1c+r6kycUxlR1Up32w/cbp9mnKvjLqYTVV2tqrNVdfaIEd1+IRljjDlPviT67cB4EckRkSici5E6TBErIqnuBFIAD+Fcjdi2bbKItGXvK4A9GGOMAZxrmcqqG9hZVMF7+eXn3uA8nLPrRlWbReQB4FWcK/zWqeonIvIIzsUZ63GmJH1URBSn6+Yb7rYtIvJt4E13JsmdOJfbG2PMkKGqnKhuoKi8loKyGorKaygsr6WovIaislqqGpoBmJaRxPoHFp7j1XpvwF0wNXv2bO3cR9/U1ERpaSn19fVBiipwYmJiyMjIIDIyMtihGGN6QVU5XtXQJZEXlDm/axvPnIMSHiaMTY4lOzWebE88WZ44sj3x5I6IJ8sTf17vLyI7VXV2d+sGxeyVpaWlJCQkkJ2djdMwCE2qSnl5OaWlpeTk5AQ7HGNMJ62tyrGqejeZ11LoHpEXljuP65rOJPPIcGFschzZqfHMy01pT+g5qfGkDY8lMjxwc0oOikRfX18f8kkeQETweDycOHEi2KEYM2S1tipHTtdTWFbTnsC9lxuaW9vLRoWHMTYllpzUeBZckEq2Jz8ALFAAABiGSURBVK79KH1MUgwRAUzmZzMoEj0Q8km+zVD5nMYEU0urcvhUHYVtXSxuIi8sr6W4opZG72QeEUZWipPAL7twBFmeeHJSnaPzMUmxhIcN/P/ZQZPojTGmN5pbWjl0qq69r7zQ7WIpLK+hpKKWppYz45MxkWFke+IZNyKeKyeOJMsTT3aq028+OjGGsEGQzM/GEr2PTp06xbPPPsvXv/71Xm23bNkynn32WYYPH+6nyIwZuppaWik9Wef2lTtH5G1dLCUVtTS3nknmcVHhZHnimTAqgWsmj+7QzTIyIXrQJ/OzsUTvo1OnTvGzn/2sS6JvaWkhPDy8x+1eeeUVf4dmTEhrbG6l5GTno3LncenJOlq8knl8VDjZqfFMHpPIdVNHk+2Jd5N5HCMSoods1+igS/T/8vIn7Dnc+VaLfTM5LZHv3jDlrGUefPBBDh48yIwZM4iMjGTYsGGMGTOGDz/8kD179nDzzTdTUlJCfX093/zmN1m1yrm3cHZ2Njt27KC6uprrrruOhQsXsnnzZtLT0/nDH/5AbGxsv34WYwaj+qYWSk/WduheaTur5dDJOrxyOQnREWSnxnNRehI3TEtrT+RZnnhSh0UN2WR+NoMu0QfLY489xu7du/nwww/ZsGED119/Pbt3724/DXLdunWkpKRQV1fHnDlzWL58OR6Pp8Nr7N+/n+eee441a9Zw66238tvf/pY777wzGB/HmICrb2qhuMI5g6WovJaC8pr2o/TDlXV4X9KTGBNBTmo8M8cmc8uMdLJTnfPLsz1xpMRbMu+tQZfoz3XkHShz587tcK77448/zksvvQRASUkJ+/fv75Loc3JymDFjBgCzZs2isLAwYPEaEwh1jS0UVZzpYmlL5EXlNRw5Xd8hmQ+PiyTbE8+c7GSyPBntZ7Jke+JJjo8K3ocIQYMu0Q8U8fFnrl7bsGEDb7zxBlu2bCEuLo4lS5Z0exVvdHR0+3J4eDh1dXUBidWY/lTT0ExR21WfnS4YOnq6437viY8iyxPHvFxPhzNZsjxxDI+zZB4oluh9lJCQQFVVVbfrKisrSU5OJi4ujn379rF169YAR2dM/6qqb3KTudtn7tXdcqKqoUPZ1GHRZHviulwwlOmJIynWpvIYCCzR+8jj8bBgwQKmTp1KbGwso0aNal+3dOlSfv7znzNt2jQmTJjAvHnzghipMb45Xd9EUZnbV1525kyWwvIayqobO5QdmRBNtieeJReO6DA/S5YnjoQYS+YD3aCY1Gzv3r1MmjQpSBEF3lD7vMZ/Kmub2s9iaesrbzs9saKmYzIfnRjT3kfufSZLlieO+Gg7JhzoBv2kZsaY7qkqp7pJ5gXu0fmp2qYO5dOSYsjyxHPtlFHuUbnTb56ZEkdclKWDUGV/WWMGOFWloqax01H5mb7z0/XN7WVFIC0pluzUOJZdNIactilwU+PJTIkjJrLni/tM6Bo0iV5Vh8S5swOtK80EhnOXocYOA5/tFw553ZgCIEwgPTmWbE88N85Ic7pa3CPzsSlxREdYMjcdDYpEHxMTQ3l5OR6PJ6STfdt89DExMcEOxfiBqnKi/cYUZ05JbLtRRU2nG1NkJMeS5YlnVmZyexdLlieesclxREUMjOlvzeAwKBJ9RkYGpaWlQ2Ke9rY7TJnBqe3GFB26WLzmMve+MUVEmDA2xTlzZW5OijP46Z7RkpEc2BtTmNA2KBJ9ZGSk3XHJDBhtN6bwPiWx7Si9qKKG+qYzc5lHhjvJPNsTz6XjUtuPyrM9caQPjx0wN6YwoW1QJHpjgu3j0kqe3FzIR6WnKOp8Y4rwMDI9cWR74lg0PtU9KneSe9rwwXFjChPaLNEb04PWVuXNfcdZm5fPewUVDIuOYP44D5dPHNnhfPPRiTGWzM2AZonemE7qGlv47fulrNtUQH5ZDWlJMTy8bBJfnDuWRLsK1AxCluiNcZ2oauDpLYU8vbWIk7VNTMtI4vHbZ3Ld1NE2MGoGNZ8SvYgsBX4MhANrVfWxTuuzgHXACKACuFNVS73WJwJ7gZdU9YF+it2YfrH/WBVr8wp46cNDNLW0cuXEUaxclMPcnJSQPp3XDB3nTPQiEg78FLgaKAW2i8h6Vd3jVewHwC9V9SkRuQJ4FLjLa/2/Au/0X9jG9I2q8u6BctZuymfDpyeIjgjjC7MyuH9hDrkjhgU7PGP6lS9H9HOBA6qaDyAizwM3Ad6JfjLwt+7y28Dv21aIyCxgFPAXoNsJd4wJlMbmVl7edZi1mwrYe+Q0qcOi+LurL+TOeVmk2M0uTIjyJdGnAyVej0uBSzqV2QUsx+neuQVIEBEPcBL4Ic7R/ZU9vYGIrAJWAWRmZvoauzE+q6xt4lfbinhqcyHHTjcwfuQw/mP5NG6ckWbzv5iQ50ui766TsvOELN8GfiIi9wAbgUNAM/B14BVVLTlbX6eqrgZWgzNNsQ8xGeOTovIa1m0q4Nc7SqlramHhBan8+/JpXHbhCOt/N0OGL4m+FBjr9TgDOOxdQFUPA58HEJFhwHJVrRSR+cAiEfk6MAyIEpFqVX2wX6I3pgc7iypYs7GAV/ccJSJMuGF6GisW5jI5LTHYoRkTcL4k+u3AeBHJwTlSvw24w7uAiKQCFaraCjyEcwYOqvolrzL3ALMtyRt/aW5p5bU9x1iTl88HxadIio3ka5eN4+5LsxmVaBPFmaHrnIleVZtF5AHgVZzTK9ep6ici8giwQ1XXA0uAR0VEcbpuvuHHmI3poLqhmV9vL+EXmwsoqagjMyWOf7lxCn81K8PujGQMg+RWgsZ050hlHU9uLuTZ94qpqm9mVlYyKxflcPXk0TYlgRly7FaCJqR8criStXkFvLzrMK2qXDd1DPcvyuHizORgh2bMgGSJ3gwKra3KO5+dYE1ePpsPlhMXFc5d87O4b0EOY1Pigh2eMQOaJXozoNU3tfDSB4d4YlMBB45XMzoxhgevm8jtczNJirUJxozxhSV6MyCVVzfw9NYint5SRHlNI5PHJPJfX5zO9Rel2W30jOklS/RmQDlwvJonNhXwu/dLaWhu5YqJI1mxKIf5uaF9v2Bj/MkSvQk6VWVLfjlP5BXw5r7jREWEsfzidO5fmMMFIxOCHZ4xg54lehM0TS2t/OmjI6zdlM/uQ6dJiY/im1eO5675WaQOiw52eMaEDEv0JuAq65p4flsxT24u5EhlPeNGxPPo5y/ilpnpNsGYMX5gid4ETElFLb94t5AXthdT09jC/FwP379lKksuHEmYXeBkjN9Yojd+90HxSdZuKuDPHx8hTITPTRvDikW5TE1PCnZoxgwJluiNX7S0Kq/vOcbavHx2FJ0kISaClYtzuefSbMYkxQY7PGOGFEv0pl/VNjbz4s5S1m0qoLC8lozkWP75c5O5dc5YhtkEY8YEhf3nmX5x/HQ9T20p5JmtxVTWNTFj7HB+eu1Erp0yiohwu8DJmGCyRG/6ZO+R06zNK2D9rkM0tyrXTh7NikU5zMpKtgucjBkgLNGbXlNVNu4vY21ePnn7y4iNDOeOuZnctzCHLE98sMMzxnRiid74rKG5hT98eJgn8gr49FgVIxOi+YdrJ/ClSzIZHhcV7PCMMT2wRG/O6WRNI89sLeKpLUWUVTcwcXQCP/jCdG6cbhOMGTMYWKI3PSooq+GJTfm8uLOU+qZWLrtwBCsX5bLgAptgzJjBxBK96UBV2V54kjV5+byx9xiRYWHcPDONFYtyuXCUTTBmzGBkid4A0NzSyp93H2VtXj67SitJjovkgcsv4K75WYxMiAl2eMaYPrBEP8RV1TfxwvYSfvFuIYdO1ZGTGs+/3TyV5RdnEBtlE4wZEwos0Q9Rh07V8eS7BTy/rYSqhmbm5qTwvRuncOVEm2DMmFBjiX6I+aj0FGvzCvjTx0cAWHbRGFYuymFaxvAgR2aM8RefEr2ILAV+DIQDa1X1sU7rs4B1wAigArhTVUtFZAbw30Ai0AJ8X1Vf6Mf4jQ9aW5U39x1nTV4+2woqGBYdwb2XZnPvwhzSh9sEY8aEunMmehEJB34KXA2UAttFZL2q7vEq9gPgl6r6lIhcATwK3AXUAl9W1f0ikgbsFJFXVfVUv38S00VdYwu/fd+ZYCy/rIb04bF85/pJfHHOWBJiIoMdnjEmQHw5op8LHFDVfAAReR64CfBO9JOBv3WX3wZ+D6Cqn7UVUNXDInIc56jfEr0fnahq4OkthTy9tYiTtU1My0ji8dtnsmzqaJtgzJghyJdEnw6UeD0uBS7pVGYXsByne+cWIEFEPKpa3lZAROYCUcDBzm8gIquAVQCZmZm9id94+exYFU/kFfDSh4doamnlyomjWLkoh7k5KXaBkzFDmC+JvrsMoZ0efxv4iYjcA2wEDgHN7S8gMgZ4GrhbVVu7vJjqamA1wOzZszu/tjkLVeXdA+Wsycvnnc9OEBMZxq2zM7hvQQ65I4YFOzxjzADgS6IvBcZ6Pc4ADnsXUNXDwOcBRGQYsFxVK93HicCfgO+o6tb+CNpAY3MrL+86zNpNBew9cprUYdH8/dUX8qV5WaTE2wRjxpgzfEn024HxIpKDc6R+G3CHdwERSQUq3KP1h3DOwEFEooCXcAZqf9OfgQ9VlbVN/GpbEU9tLuTY6QYuHDWM/1g+jRtnpBETaRc4GWO6OmeiV9VmEXkAeBXn9Mp1qvqJiDwC7FDV9cAS4FERUZyum2+4m98KLAY8brcOwD2q+mH/fozQV1Rew7pNBfx6Ryl1TS0sGp/Kvy+fxmUXjrD+d2PMWYnqwOoSnz17tu7YsSPYYQwYO4sqWLOxgFf3HCUiTLhxejorFuUwaUxisEMzxgwgIrJTVWd3t86ujB2AmltaeW3PMdbk5fNB8SmSYiP52mXjuPvSbEYl2gRjxpjesUQ/gFQ3NPPr7SX8YnMBJRV1ZHnieOSmKfzVrAziouxPZYw5P5Y9BoAjlXU8ubmQZ98rpqq+mdlZyTy8bDJXTx5FuE0wZozpI0v0QfTJ4UrW5hXw8q7DtKpy3dQxrFiUw8zM5GCHZowJIZboA6y1VXnnsxOsyctn88Fy4qPCuWt+FvctyGFsSlywwzPGhCBL9AFS39TCSx8c4olNBRw4Xs3oxBgeum4it83NJCnWJhgzxviPJXo/K69u4OmtRTy9pYjymkampCXyoy/O4PppY4i0CcaMMQFgid5PDhyv5olNBfzu/VIamlu5YuJIVizKYX6uxy5wMsYElCX6fqSqbMkv54m8At7cd5yoiDCWX5zO/QtzuGBkQrDDM8YMUZbo+0FTSyt/+ugIazfls/vQaTzxUXzrqvHcOS+L1GHRwQ7PGDPEWaLvg8q6Jp7fVsyTmws5UlnPuBHxPPr5i7hlZrpNMGaMGTAs0Z+HkopafvFuIS9sL6amsYX5uR6+f8tUllw4kjC7wMkYM8BYou+FD4pPsnZTAX/++AhhItwwPY37F+YwNT0p2KEZY0yPLNGfQ0ur8vqeY6zNy2dH0UkSYiJYuTiXey7NZkxSbLDDM8aYc7JE34PaxmZe3FnKuk0FFJbXkpEcyz9/bjK3zhnLsGirNmPM4GEZq5Pjp+t5akshz2wtprKuiZmZw/nHpRO5ZvIoIuwCJ2PMIGSJ3rX3yGnW5hWwftchmluVayePZuXiHGZlpQQ7NGOM6ZMhnehVlY37y1ibl0/e/jJiI8O5Y24m9y3MIcsTH+zwjDGmXwzJRN/Q3MIfPjjM2k35fHasmpEJ0fzj0gncMTeT4XFRwQ7PGGP61ZBK9CdrGnlmaxFPbSmirLqBiaMT+OEXpnPD9DSiIqz/3RgTmoZEoi8oq+GJTfm8uLOU+qZWLrtwBCsX5bLgAptgzBgT+kI20asq2wtPsiYvnzf2HiMyLIybZ6axYlEuF46yCcaMMUOHT4leRJYCPwbCgbWq+lin9VnAOmAEUAHcqaql7rq7ge+4Rf9NVZ/qp9i71dzSyiu7j7I2L5+PSitJjovkry+/gDvnZzEyIcafb22MMQPSORO9iIQDPwWuBkqB7SKyXlX3eBX7AfBLVX1KRK4AHgXuEpEU4LvAbECBne62J/v7g9Q0NPPctmJ+8W4hh07VkZsaz7/dPJXlF2cQG2UTjBljhi5fjujnAgdUNR9ARJ4HbgK8E/1k4G/d5beB37vL1wKvq2qFu+3rwFLgub6H3lFNQzP//pd9zMxM5ns3TuHKiTbBmDHGgG+JPh0o8XpcClzSqcwuYDlO984tQIKIeHrYNv28oz2LkYkxvP3tJWQk2w22jTHGmy/nFHZ3WKydHn8buExEPgAuAw4BzT5ui4isEpEdIrLjxIkTPoTUPUvyxhjTlS+JvhQY6/U4AzjsXUBVD6vq51V1JvCw+1ylL9u6ZVer6mxVnT1ixIhefgRjjDFn40ui3w6MF5EcEYkCbgPWexcQkVQRaXuth3DOwAF4FbhGRJJFJBm4xn3OGGNMgJyzj15Vm0XkAZwEHQ6sU9VPROQRYIeqrgeWAI+KiAIbgW+421aIyL/ifFkAPNI2MNuTnTt3lolI0Xl/IkgFyvqwvb9YXL1jcfWOxdU7oRhXVk8rRLVLl/mgJiI7VHV2sOPozOLqHYurdyyu3hlqcdkEL8YYE+Is0RtjTIgLxUS/OtgB9MDi6h2Lq3csrt4ZUnGFXB+9McaYjkLxiN4YY4wXS/TGGBPiBk2iF5GlIvKpiBwQkQe7WR8tIi+4698TkWyvdQ+5z38qItcGOK6/E5E9IvKRiLzpTunctq5FRD50f9Z33tbPcd0jIie83n+F17q7RWS/+3N3gOP6L6+YPhORU17r/Flf60TkuIjs7mG9iMjjbtwficjFXuv8WV/niutLbjwfichmEZnuta5QRD5262tHgONaIiKVXn+vf/Zad9Z9wM9x/YNXTLvdfSrFXefP+horIm+LyF4R+UREvtlNGf/tY6o64H9wLtQ6COQCUTiTqE3uVObrwM/d5duAF9zlyW75aCDHfZ3wAMZ1ORDnLn+tLS73cXUQ6+se4CfdbJsC5Lu/k93l5EDF1an8X+NcoOfX+nJfezFwMbC7h/XLgD/jzN80D3jP3/XlY1yXtr0fcF1bXO7jQiA1SPW1BPhjX/eB/o6rU9kbgLcCVF9jgIvd5QTgs27+J/22jw2WI/r2qZJVtRFomyrZ201A201NXgSuFBFxn39eVRtUtQA44L5eQOJS1bdVtdZ9uBVnvh9/86W+etI+tbQ69w1om1o6GHHdjh+mtO6Oqm7EuWlOT27CueeCqupWYLiIjMG/9XXOuFR1s565v0Og9i9f6qsnfdk3+zuuQO5fR1T1fXe5CthL15l8/baPDZZE78t0x+1lVLUZqAT8PVVyb1/7fpxv7DYx4szauVVEbu6nmHoT13K3ifiiiLRNPjcg6svt4soB3vJ62l/15YueYg/YVNw+6Lx/KfCaiOwUkVVBiGe+iOwSkT+LyBT3uQFRXyISh5Msf+v1dEDqS5xu5ZnAe51W+W0fGyz3jPVluuOeyvg0VfJ58vm1ReROnDttXeb1dKaqHhaRXOAtEflYVQ8GKK6XgedUtUFEvorTGrrCx239GVeb24AXVbXF6zl/1ZcvgrF/+UxELsdJ9Au9nl7g1tdI4HUR2ece8QbC+0CWqlaLyDKcmxGNZ4DUF063zbvace4tv9eXiAzD+XL5lqqe7ry6m036ZR8bLEf0vkx33F5GRCKAJJwmnE9TJfsxLkTkKpzpm29U1Ya251X1sPs7H9iA8y0fkLhUtdwrljXALF+39WdcXm6jU7Paj/Xli55i92d9+UREpgFrgZtUtbztea/6Og68RP91WZ6Tqp5W1Wp3+RUgUkRSGQD15Trb/uWX+hKRSJwk/ytV/V03Rfy3j/lj4MEPAxkROAMQOZwZwJnSqcw36DgY+2t3eQodB2Pz6b/BWF/imokz+DS+0/PJQLS7nArsp58GpXyMa4zX8i3AVj0z8FPgxpfsLqcEKi633AScgTEJRH15vUc2PQ8uXk/HgbJt/q4vH+PKxBl3urTT8/FAgtfyZmBpAOMa3fb3w0mYxW7d+bQP+Csud33bQWB8oOrL/ey/BH50ljJ+28f6rXL9/YMzIv0ZTtJ82H3uEZyjZIAY4DfuTr8NyPXa9mF3u0+B6wIc1xvAMeBD92e9+/ylwMfujv4xcH+A43oU+MR9/7eBiV7b3ufW4wHg3kDG5T7+HvBYp+38XV/PAUeAJpwjqPuBrwJfddcL8FM37o+B2QGqr3PFtRY46bV/7XCfz3Xrapf7d344wHE94LV/bcXri6i7fSBQcbll7sE5QcN7O3/X10Kc7paPvP5WywK1j9kUCMYYE+IGSx+9McaY82SJ3hhjQpwlemOMCXGW6I0xJsRZojfGmBBnid4YY0KcJXpjjAlx/x+rGBLTQyANFgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and sparse_categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and sparse_categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..b63e7b54e --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Adamax and sparse_categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:49:47.554641 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:49:47.581595 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adamax',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:49:49.649076 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:49:49.667022 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:49:49.707882 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:49:49.860472 16504 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:49:49.889393 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.3572 - acc: 0.9031\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1942 - acc: 0.9447\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1488 - acc: 0.9575\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 32us/step\n", + "Loss : 0.14077735255807639\n", + "Accuracy : 0.9586\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..dee97611a --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:53:23.915151 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:53:23.941080 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Nadam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:53:25.387317 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:53:25.404221 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:53:25.443164 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:53:25.606253 408 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:53:25.659651 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 82us/step - loss: 0.2551 - acc: 0.9273\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 78us/step - loss: 0.1081 - acc: 0.9672\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 81us/step - loss: 0.0747 - acc: 0.9770\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 27us/step\n", + "Loss : 0.08645319114979357\n", + "Accuracy : 0.9754\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and kullback-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and kullback-checkpoint.ipynb new file mode 100644 index 000000000..109aa6697 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and kullback-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:54:35.934505 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:54:35.962432 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Nadam',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:54:37.481840 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:54:37.498795 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:54:37.546668 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:54:37.703247 22088 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:54:37.726186 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 7s 112us/step - loss: 0.2486 - acc: 0.9292\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 77us/step - loss: 0.1055 - acc: 0.9676\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - ETA: 0s - loss: 0.0719 - acc: 0.977 - 5s 79us/step - loss: 0.0719 - acc: 0.9779\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.10322229944784195\n", + "Accuracy : 0.9679\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAMcElEQVR4nO3dX4xcZR3G8edpu7SwoFJqobYVECFKjFazFBOMAYmI3BQuVJpIakIsiZBIwoUEE+WSGAG5MJhFGqtRCAkQGtMotSEiicEupLbFogVSYOmm5U+EgrTdbX9e7MGs7c6Z7Zwzc6b7+36Szcycd845v5zdZ9+Zec+c1xEhALPfnKYLANAbhB1IgrADSRB2IAnCDiQxr5c7O8nzY4EGe7lLIJUDek+H4qCna6sUdttXSrpH0lxJv4yIO8qev0CDutiXV9klgBJPx+aWbR2/jLc9V9LPJX1d0oWSVtu+sNPtAeiuKu/ZV0p6ISJeiohDkh6UtKqesgDUrUrYl0p6dcrj0WLZ/7G91vaI7ZFxHaywOwBVVAn7dB8CHHPubUQMR8RQRAwNaH6F3QGookrYRyUtn/J4maQ91coB0C1Vwr5F0vm2z7V9kqRrJW2opywAdet46C0iJmzfJOmPmhx6WxcRz9VWGYBaVRpnj4iNkjbWVAuALuJ0WSAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5KoNIsr0M7cCy9o2fbi6jNK1x3cU75tHy5vXzT81/InJFMp7LZ3S9ov6bCkiYgYqqMoAPWro2e/LCLeqGE7ALqI9+xAElXDHpIet/2M7bXTPcH2WtsjtkfGdbDi7gB0qurL+EsiYo/txZI22X4+Ip6c+oSIGJY0LEkf8sKouD8AHarUs0fEnuJ2n6RHJa2soygA9es47LYHbZ/2wX1JV0jaUVdhAOpV5WX8mZIetf3Bdn4XEX+opSqcMOacckpp+9hXFpW0lr+r+9b3/lTa/oMzdpW2f214RWl7Nh2HPSJekvS5GmsB0EUMvQFJEHYgCcIOJEHYgSQIO5AEX3FFJT57aWn7+GDn2/7FXy4rbf/zzz7bZgsvdr7zWYieHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSYJwd5ebMLW1+86Kyr7BW8/GN5e2H/8U4+vGgZweSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJBhnR6l5HzurtP39Re542z5Svu6C3/+t423jWPTsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AE4+wodeCC8nH2Kk57uXzKZtSrbc9ue53tfbZ3TFm20PYm27uK29O7WyaAqmbyMv5Xkq48atmtkjZHxPmSNhePAfSxtmGPiCclvXXU4lWS1hf310u6uua6ANSs0w/ozoyIMUkqbhe3eqLttbZHbI+M62CHuwNQVdc/jY+I4YgYioihAc3v9u4AtNBp2PfaXiJJxe2++koC0A2dhn2DpDXF/TWSHqunHADd0nac3fYDki6VtMj2qKQfS7pD0kO2r5f0iqRvdLNINOe9jw1UWt9HWrct3vRq6boTlfaMo7UNe0SsbtF0ec21AOgiTpcFkiDsQBKEHUiCsANJEHYgCb7imty85ctK2/+zuFp/MGe8ddvEq6OVto3jQ88OJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kwzp7cxJLuXhj4jB1ciqxf0LMDSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKMsyd3YPHJldafe6i8fcHICy3bDlfaM44XPTuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJME4+yw379yzS9vf/kS1P4E5h6K0/fC/3660fdSnbc9ue53tfbZ3TFl2u+3XbG8tfq7qbpkAqprJy/hfSbpymuV3R8SK4mdjvWUBqFvbsEfEk5Le6kEtALqoygd0N9neVrzMb3khM9trbY/YHhkX1yMDmtJp2O+VdJ6kFZLGJN3Z6okRMRwRQxExNKD5He4OQFUdhT0i9kbE4Yg4Iuk+SSvrLQtA3ToKu+0lUx5eI2lHq+cC6A9tB1ltPyDpUkmLbI9K+rGkS22vkBSSdku6oYs1ooI4ZUF5u6tt/7TRiWobQM+0DXtErJ5m8f1dqAVAF3G6LJAEYQeSIOxAEoQdSIKwA0nwFddZ7p1PfaTS+u0uFT24bU9pOwNz/YOeHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSYJx9Fpi3fFnLtn9/cm7punMPtNn2e+WXip4Yfa18A+gb9OxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kATj7LPA2xcvbd1Y8VLRH97NlF2zBT07kARhB5Ig7EAShB1IgrADSRB2IAnCDiTBOPsscODDnf/Pnneg/PvqA08/X9p+pOM9o9fa/pXYXm77Cds7bT9n+/vF8oW2N9neVdye3v1yAXRqJl3ChKRbIuLTkr4o6UbbF0q6VdLmiDhf0ubiMYA+1TbsETEWEc8W9/dL2ilpqaRVktYXT1sv6epuFQmguuN6s2f7HEmfl/S0pDMjYkya/IcgaXGLddbaHrE9Mi7OswaaMuOw2z5V0sOSbo6Id2a6XkQMR8RQRAwNaH4nNQKowYzCbntAk0H/bUQ8Uizea3tJ0b5E0r7ulAigDm2H3mxb0v2SdkbEXVOaNkhaI+mO4vaxrlSItt686HDLtsHd5b/igTaXij7y/vsd1YT+M5Nx9kskXSdpu+2txbLbNBnyh2xfL+kVSd/oTokA6tA27BHxlFpfAuHyessB0C2cLgskQdiBJAg7kARhB5Ig7EASfMX1BPCjl54tbb9p+6dato3vXli6rlsP0U+K8nF4nDjo2YEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcbZTwDf3nRDafu8t1v/GttdG2j+O+0G2jFb0LMDSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKMs58ALrhhS2n7vGVLW7btH2rdJkkL9pZfF55vs88e9OxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kMRM5mdfLunXks6SdETScETcY/t2Sd+V9Hrx1NsiYmO3CkVrE6OvtWw7uaRNYhw9k5mcVDMh6ZaIeNb2aZKesb2paLs7In7avfIA1GUm87OPSRor7u+3vVNS+WlZAPrOcb1nt32OpM9LerpYdJPtbbbX2T69xTprbY/YHhnXwUrFAujcjMNu+1RJD0u6OSLekXSvpPMkrdBkz3/ndOtFxHBEDEXE0EDbK6IB6JYZhd32gCaD/tuIeESSImJvRByOiCOS7pO0sntlAqiqbdhtW9L9knZGxF1Tli+Z8rRrJO2ovzwAdZnJp/GXSLpO0nbbW4tlt0labXuFJkdvdksqv94xgEbN5NP4pyR5mibG1IETCGfQAUkQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHknBE7y4mbPt1SS9PWbRI0hs9K+D49Gtt/VqXRG2dqrO2syPio9M19DTsx+zcHomIocYKKNGvtfVrXRK1dapXtfEyHkiCsANJNB324Yb3X6Zfa+vXuiRq61RPamv0PTuA3mm6ZwfQI4QdSKKRsNu+0vY/bb9g+9YmamjF9m7b221vtT3ScC3rbO+zvWPKsoW2N9neVdxOO8deQ7Xdbvu14thttX1VQ7Utt/2E7Z22n7P9/WJ5o8eupK6eHLeev2e3PVfSvyR9VdKopC2SVkfEP3paSAu2d0saiojGT8Cw/WVJ70r6dUR8plj2E0lvRcQdxT/K0yPiB31S2+2S3m16Gu9itqIlU6cZl3S1pO+owWNXUtc31YPj1kTPvlLSCxHxUkQckvSgpFUN1NH3IuJJSW8dtXiVpPXF/fWa/GPpuRa19YWIGIuIZ4v7+yV9MM14o8eupK6eaCLsSyW9OuXxqPprvveQ9LjtZ2yvbbqYaZwZEWPS5B+PpMUN13O0ttN499JR04z3zbHrZPrzqpoI+3RTSfXT+N8lEfEFSV+XdGPxchUzM6NpvHtlmmnG+0Kn059X1UTYRyUtn/J4maQ9DdQxrYjYU9zuk/So+m8q6r0fzKBb3O5ruJ7/6adpvKebZlx9cOyanP68ibBvkXS+7XNtnyTpWkkbGqjjGLYHiw9OZHtQ0hXqv6moN0haU9xfI+mxBmv5P/0yjXeracbV8LFrfPrziOj5j6SrNPmJ/IuSfthEDS3q+oSkvxc/zzVdm6QHNPmyblyTr4iul3SGpM2SdhW3C/uott9I2i5pmyaDtaSh2r6kybeG2yRtLX6uavrYldTVk+PG6bJAEpxBByRB2IEkCDuQBGEHkiDsQBKEHUiCsANJ/BcWmK9wr/GvwQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and sparse_categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and sparse_categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..3d0b21c9d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/Nadam and sparse_categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:56:01.888793 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:56:01.993737 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Nadam',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:56:08.710401 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:56:08.727388 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:56:08.773231 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:56:08.975076 21164 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:56:09.004544 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 96us/step - loss: 0.2518 - acc: 0.9279\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 78us/step - loss: 0.1059 - acc: 0.9677\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 80us/step - loss: 0.0705 - acc: 0.9781\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 32us/step\n", + "Loss : 0.0884659024335444\n", + "Accuracy : 0.9736\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..b684d93f5 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:20:53.481513 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:20:53.506445 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='RMSprop',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:20:55.066884 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:20:55.083831 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:20:55.193535 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:20:55.289287 6052 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:20:55.349130 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 90us/step - loss: 0.3077 - acc: 0.9144\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.1504 - acc: 0.9562\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.1109 - acc: 0.9672\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.11531054184697569\n", + "Accuracy : 0.9667\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and kullback-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and kullback-checkpoint.ipynb new file mode 100644 index 000000000..b30ca7a7d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and kullback-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:23:38.176280 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:23:38.195192 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='RMSprop',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:23:39.359616 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:23:39.370584 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:23:39.413471 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:23:39.594984 23156 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:23:39.641858 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 76us/step - loss: 0.3136 - acc: 0.9135\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 75us/step - loss: 0.1553 - acc: 0.9545\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 77us/step - loss: 0.1128 - acc: 0.9672\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 39us/step\n", + "Loss : 0.11629472138825804\n", + "Accuracy : 0.9665\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and sparse_categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and sparse_categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..ca94fc2ca --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/RMSprop and sparse_categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 10:16:56.500693 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 10:16:56.527974 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='sgd',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 10:17:08.739080 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 10:17:08.752942 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 10:17:08.795526 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 10:17:09.030250 22136 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 10:17:09.071861 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 94us/step - loss: 1.1481 - acc: 0.7507\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.4869 - acc: 0.8738\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.3943 - acc: 0.8912\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.3552831846117973\n", + "Accuracy : 0.9038\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..0e645e55d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,261 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### optimizer 'adam' and loss function 'categorical_crossentropy'" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 09:28:27.482859 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 09:28:27.504352 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='adam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 09:28:29.782780 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 09:28:29.798922 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 09:28:29.978999 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 09:28:30.143224 26680 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 09:28:30.219883 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 7s 115us/step - loss: 0.3116 - acc: 0.9139\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 7s 109us/step - loss: 0.1400 - acc: 0.9584\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 7s 110us/step - loss: 0.0961 - acc: 0.9714\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 40us/step\n", + "Loss : 0.09852424093633891\n", + "Accuracy : 0.969\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and kullback_leibler_divergence-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and kullback_leibler_divergence-checkpoint.ipynb new file mode 100644 index 000000000..7363a6648 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/adam and kullback_leibler_divergence-checkpoint.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 09:52:09.003685 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 09:52:09.025937 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='adam',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 09:52:23.724141 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 09:52:23.737282 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 09:52:23.781199 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 09:52:24.017474 18084 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 09:52:24.083696 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 9s 149us/step - loss: 0.3121 - acc: 0.9129\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 7s 109us/step - loss: 0.1387 - acc: 0.9588\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 6s 105us/step - loss: 0.0953 - acc: 0.9723\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.10315677959099412\n", + "Accuracy : 0.969\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/hand digit recognition in keras-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/hand digit recognition in keras-checkpoint.ipynb new file mode 100644 index 000000000..606b08bfc --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/hand digit recognition in keras-checkpoint.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implement hand digit recognition in Keras with dataset at https://keras.io/examples/mnist_dataset_api/ with a simple 3-layer FFNN with fully connected layers (no convolution or other operations)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "import tensorflow as tf\n", + "from tensorflow.nn import relu,softmax" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0730 12:34:40.611266 18928 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0730 12:34:40.635203 18928 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='adam',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0730 12:34:40.713134 18928 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0730 12:34:40.723106 18928 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0730 12:34:40.764033 18928 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0730 12:34:40.850765 18928 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0730 12:34:40.877728 18928 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 89us/step - loss: 0.3119 - acc: 0.9132\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 6s 105us/step - loss: 0.1420 - acc: 0.9582\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 6s 105us/step - loss: 0.0977 - acc: 0.9708\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# training the model\n", + "model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_1 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 101,770\n", + "Trainable params: 101,770\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "#trained model summary\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 28us/step\n", + "Loss : 0.106505593823269\n", + "Accuracy : 0.9693\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..2fd64429b --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and kullback-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and kullback-checkpoint.ipynb new file mode 100644 index 000000000..2fd64429b --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and kullback-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and sparse_categorical_crossentropy-checkpoint.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and sparse_categorical_crossentropy-checkpoint.ipynb new file mode 100644 index 000000000..ca94fc2ca --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/.ipynb_checkpoints/sgd and sparse_categorical_crossentropy-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 10:16:56.500693 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 10:16:56.527974 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='sgd',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 10:17:08.739080 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 10:17:08.752942 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 10:17:08.795526 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 10:17:09.030250 22136 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 10:17:09.071861 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 94us/step - loss: 1.1481 - acc: 0.7507\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.4869 - acc: 0.8738\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.3943 - acc: 0.8912\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.3552831846117973\n", + "Accuracy : 0.9038\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and categorical_crossentropy.ipynb new file mode 100644 index 000000000..be1eab73b --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and categorical_crossentropy.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:36:05.063632 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:36:06.329416 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adadelta',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:36:08.024629 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:36:08.079515 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:36:08.141324 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:36:08.598738 16696 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:36:08.733417 16696 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 7s 122us/step - loss: 0.3209 - acc: 0.9105\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 81us/step - loss: 0.1700 - acc: 0.9506\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 80us/step - loss: 0.1272 - acc: 0.9628\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 32us/step\n", + "Loss : 0.12973509001508354\n", + "Accuracy : 0.9627\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and kullback.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and kullback.ipynb new file mode 100644 index 000000000..87ee8fd1b --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and kullback.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:39:54.376752 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:39:54.411724 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adadelta',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:39:56.796614 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:39:56.816612 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:39:56.861471 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:39:56.964164 2396 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:39:57.036011 2396 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 87us/step - loss: 0.3221 - acc: 0.9095\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 80us/step - loss: 0.1664 - acc: 0.9510\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 72us/step - loss: 0.1239 - acc: 0.9645\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 28us/step\n", + "Loss : 0.12528126298710704\n", + "Accuracy : 0.9626\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and sparse_categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and sparse_categorical_crossentropy.ipynb new file mode 100644 index 000000000..2e1b76944 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adadelta and sparse_categorical_crossentropy.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:41:34.981910 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:41:35.007836 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adadelta',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:41:37.319833 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:41:37.336752 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:41:37.373651 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:41:37.532268 20376 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:41:37.589115 20376 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 78us/step - loss: 0.3151 - acc: 0.9110\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 75us/step - loss: 0.1607 - acc: 0.9534\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 77us/step - loss: 0.1204 - acc: 0.9650\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 31us/step\n", + "Loss : 0.11560967290923\n", + "Accuracy : 0.9651\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAOIUlEQVR4nO3dX4xc9XnG8efxencNxgY7gHHATYA6aShtnHZjl1JVRKgpoEoGKWnwBaUSknMRVCLloihVFS5R1CSqqgrJKVbcKiVKlSCohNIgC9VCRRYLcrCNSyFgYPGWDTbExjb79+3FHqrF7PxmmTnzx36/H2k1s+edM+f1eJ85M/Obc36OCAE49y3rdQMAuoOwA0kQdiAJwg4kQdiBJJZ3c2NDHo4VWtnNTQKpvKeTmopJL1ZrK+y2b5L095IGJP1TRNxfuv0KrdQW39jOJgEU7I3dDWstv4y3PSDpHyXdLOkaSdtsX9Pq/QHorHbes2+W9FJEvBwRU5J+JGlrPW0BqFs7Yb9c0usLfh+rln2A7e22R22PTmuyjc0BaEc7YV/sQ4APffc2InZExEhEjAxquI3NAWhHO2Efk7Rhwe9XSDrSXjsAOqWdsD8taaPtK20PSbpd0qP1tAWgbi0PvUXEjO27Jf2H5ofedkbEwdo6A1CrtsbZI+IxSY/V1AuADuLrskAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJNHVU0mjNR65tlifG27833h6XfnsQMc3DBTry2aLZa09VD7V2NDR0w1rc/ueL985asWeHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSYJy9D5zeurlYP3lZeSx8dmjRGXolSdHkf9hNxtE/PMfPB739qaHy/c81rl929IriujOvj5U3jo+EPTuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJME4exe8c8d1xfrkmsbj5JI0MNlksLtg6NfldVe/OlWsT19QHuN/9+Pl+tTqxv+28T/bUFz3kgcYZ69TW2G3fVjSCUmzkmYiYqSOpgDUr449+xci4q0a7gdAB/GeHUii3bCHpJ/bfsb29sVuYHu77VHbo9Mqn68MQOe0+zL++og4YvtSSY/b/u+I2LPwBhGxQ9IOSVrtta1/0gSgLW3t2SPiSHU5IelhSeXDtwD0TMtht73S9qr3r0v6oqQDdTUGoF7tvIxfJ+lh2+/fz79GxM9q6eos89q//U6xHs+Xx9FXHC3f/3CTsfKLftb4/OtzJxuft12SYro8zr58WXkcfforny/XL2j8b59eVX5cUK+Wwx4RL0v6bI29AOgght6AJAg7kARhB5Ig7EAShB1IgkNca7BrZGex/hfP31OsD79THlq78N/3F+uzJ08W6+2ILeXpoicvbH347LKnysOCqBd7diAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgnH2GvztleXDPK+6+IViPd4tj5PPvffeR+6pLsevOq98A45SPWuwZweSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJBhn74LZt5qcK7qH4rryCYJLUy4vxXkTjY/VX/5M+fsHc21tGWdizw4kQdiBJAg7kARhB5Ig7EAShB1IgrADSTDOfo4b+PRvFuvjv7+yfAflU9pr+enyDS7Zc6RhbebUqfKdo1ZN9+y2d9qesH1gwbK1th+3/WJ1uaazbQJo11Jexv9A0k1nLLtX0u6I2Chpd/U7gD7WNOwRsUfSsTMWb5W0q7q+S9KtNfcFoGatfkC3LiLGJam6vLTRDW1vtz1qe3Raky1uDkC7Ov5pfETsiIiRiBgZ1HCnNweggVbD/qbt9ZJUXU7U1xKATmg17I9KurO6fqekR+ppB0CnNB1nt/2QpBskXWx7TNK3JN0v6ce275L0mqQvd7JJtG76slXFejR5uvdsuX7hK+XPYWZeebV8B+iapmGPiG0NSjfW3AuADuLrskAShB1IgrADSRB2IAnCDiTBIa7ngFO3bWlYO7FhoK37vuiX08X68icPFOtNjpBFF7FnB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkGGc/CyxbWT7d86lLGj9nR5Nh9uWnyiPh5+19qVifnZ4qbwB9gz07kARhB5Ig7EAShB1IgrADSRB2IAnCDiTBOPtZ4MTN1xbrs8Nu+b4veqk8Tj779tst3zf6C3t2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCcfY+MPCpq4v199a0/px8/v/OFeuDe/YX65z3/dzR9K/I9k7bE7YPLFh2n+03bO+rfm7pbJsA2rWUXcYPJN20yPLvRcSm6uexetsCULemYY+IPZKOdaEXAB3Uzgd0d9t+rnqZv6bRjWxvtz1qe3Rak21sDkA7Wg37A5KulrRJ0rik7zS6YUTsiIiRiBgZ1HCLmwPQrpbCHhFvRsRsRMxJ+r6kzfW2BaBuLYXd9voFv94mqTxvL4CeazrObvshSTdIutj2mKRvSbrB9ibND8MelvTVDvZ41mt23vdjn7+kWI82Plk571fl+dWD876n0TTsEbFtkcUPdqAXAB3E12WBJAg7kARhB5Ig7EAShB1IgkNcu+DUF367WH/vY+Xn3IHJ8oGmq1+faVgb+k8OYcU89uxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kATj7F0wMVJ+mIfbPMPfyt2HGtbmOIQVFfbsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AE4+znAK9Y0bC2bHa2i5182Nzp042LUT6a3oNDxfqyC1eVN+7CvmzthcVVX/nKpcX69OryVNhz5zU5U0Dhv+Uz3x4rrjoz9kb5vhtgzw4kQdiBJAg7kARhB5Ig7EAShB1IgrADSTDOfg44cvvGhrVo8j/sJsPwTetz5fHk8ycaj0e/s3GguO7JjeVj8bf81svF+mUr3m5YG/RbxXXPP/lOsf6Ha8rb/vSKI8X6QOGM/Td9abK47p9+fFOx3kjTPbvtDbafsH3I9kHb91TL19p+3PaL1eWaljoA0BVLeRk/I+kbEfEZSX8g6Wu2r5F0r6TdEbFR0u7qdwB9qmnYI2I8Ip6trp+QdEjS5ZK2StpV3WyXpFs71SSA9n2kD+hsf1LS5yTtlbQuIsal+ScESYt+mdj2dtujtkenVX4vAqBzlhx22xdI+omkr0fE8aWuFxE7ImIkIkYGNdxKjwBqsKSw2x7UfNB/GBE/rRa/aXt9VV8vaaIzLQKoQ9OhN9uW9KCkQxHx3QWlRyXdKen+6vKRjnR4Dlh1uDw8NbXaXeqk+359VePhtatuLg9ffWndaLH+2NHfLdan5hr/eU81+dM/NVM+vPYf/uvGYv38VwaL9ZK/WlX+e7lST7V0v0sZZ79e0h2S9tveVy37puZD/mPbd0l6TdKXW+oAQFc0DXtEPCmp0a6n/PQGoG/wdVkgCcIOJEHYgSQIO5AEYQeScDQ5nW+dVnttbDEf4J8prvtsse7Z8mmLY7DxWHY0GcKfWlMeTz7+G+UBm2aHuE5f0LiBmZXFVbWsyWzTQ02+x7n+iaMNa7MHXyivfJbaG7t1PI4t+qCzZweSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJDiVdB/wU79ob/0Wa5LUeLLnpdX7WW8nq+4/7NmBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgiaZht73B9hO2D9k+aPueavl9tt+wva/6uaXz7QJo1VJOXjEj6RsR8aztVZKesf14VfteRPxd59oDUJelzM8+Lmm8un7C9iFJl3e6MQD1+kjv2W1/UtLnJO2tFt1t+znbO22vabDOdtujtkenNdlWswBat+Sw275A0k8kfT0ijkt6QNLVkjZpfs//ncXWi4gdETESESODGq6hZQCtWFLYbQ9qPug/jIifSlJEvBkRsxExJ+n7kjZ3rk0A7VrKp/GW9KCkQxHx3QXL1y+42W2SDtTfHoC6LOXT+Osl3SFpv+191bJvStpme5OkkHRY0lc70iGAWizl0/gntfjpxx+rvx0AncI36IAkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0k4Irq3MftXkl5dsOhiSW91rYGPpl9769e+JHprVZ29fSIiLlms0NWwf2jj9mhEjPSsgYJ+7a1f+5LorVXd6o2X8UAShB1Iotdh39Hj7Zf0a2/92pdEb63qSm89fc8OoHt6vWcH0CWEHUiiJ2G3fZPtF2y/ZPveXvTQiO3DtvdX01CP9riXnbYnbB9YsGyt7cdtv1hdLjrHXo9664tpvAvTjPf0sev19Oddf89ue0DS/0j6E0ljkp6WtC0inu9qIw3YPixpJCJ6/gUM238s6V1J/xwR11bLvi3pWETcXz1RromIv+6T3u6T9G6vp/GuZitav3CacUm3SvpL9fCxK/T15+rC49aLPftmSS9FxMsRMSXpR5K29qCPvhcReyQdO2PxVkm7quu7NP/H0nUNeusLETEeEc9W109Ien+a8Z4+doW+uqIXYb9c0usLfh9Tf833HpJ+bvsZ29t73cwi1kXEuDT/xyPp0h73c6am03h30xnTjPfNY9fK9Oft6kXYF5tKqp/G/66PiN+TdLOkr1UvV7E0S5rGu1sWmWa8L7Q6/Xm7ehH2MUkbFvx+haQjPehjURFxpLqckPSw+m8q6jffn0G3upzocT//r5+m8V5smnH1wWPXy+nPexH2pyVttH2l7SFJt0t6tAd9fIjtldUHJ7K9UtIX1X9TUT8q6c7q+p2SHulhLx/QL9N4N5pmXD1+7Ho+/XlEdP1H0i2a/0T+l5L+phc9NOjrKkm/qH4O9ro3SQ9p/mXdtOZfEd0l6WOSdkt6sbpc20e9/Yuk/ZKe03yw1veotz/S/FvD5yTtq35u6fVjV+irK48bX5cFkuAbdEAShB1IgrADSRB2IAnCDiRB2IEkCDuQxP8BguwyeA+T5x8AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and categorical_crossentropy.ipynb new file mode 100644 index 000000000..7c8c5be55 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and categorical_crossentropy.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:27:51.593372 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:27:52.009342 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adagrad',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:27:52.819982 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:27:53.105577 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:27:53.344715 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:27:53.559557 20612 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:27:53.650754 20612 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 79us/step - loss: 0.2997 - acc: 0.9148\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.2018 - acc: 0.9432\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1742 - acc: 0.9508\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.1719752870887518\n", + "Accuracy : 0.9518\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and kullback.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and kullback.ipynb new file mode 100644 index 000000000..56db4b38e --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and kullback.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:30:21.684118 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:30:21.923519 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adagrad',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:30:23.951068 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:30:24.420133 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:30:24.474022 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:30:24.907800 27556 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:30:24.957668 27556 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 82us/step - loss: 0.3142 - acc: 0.9116\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 67us/step - loss: 0.2159 - acc: 0.9390\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 66us/step - loss: 0.1866 - acc: 0.9469\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 29us/step\n", + "Loss : 0.18269367492198943\n", + "Accuracy : 0.9475\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and sparse_categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and sparse_categorical_crossentropy.ipynb new file mode 100644 index 000000000..10ce81bc7 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adagrad and sparse_categorical_crossentropy.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:32:23.368407 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:32:23.402316 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adagrad',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:32:24.909364 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:32:24.926835 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:32:24.965763 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:32:25.090432 22704 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:32:25.151057 22704 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 75us/step - loss: 0.3131 - acc: 0.9119\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.2115 - acc: 0.9405\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.1806 - acc: 0.9492\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 23us/step\n", + "Loss : 0.17886015945374967\n", + "Accuracy : 0.9491\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adamax and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adamax and categorical_crossentropy.ipynb new file mode 100644 index 000000000..9d47b6956 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adamax and categorical_crossentropy.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:46:47.304043 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:46:47.333965 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adamax',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:46:48.648477 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:46:48.666429 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:46:48.707359 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:46:48.873913 17864 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:46:48.927188 17864 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 74us/step - loss: 0.3617 - acc: 0.9028\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.2003 - acc: 0.9432\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 70us/step - loss: 0.1526 - acc: 0.9564\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 29us/step\n", + "Loss : 0.14775633548945188\n", + "Accuracy : 0.9555\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adamax and kullback.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adamax and kullback.ipynb new file mode 100644 index 000000000..423b4f212 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adamax and kullback.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:48:34.347083 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:48:34.377002 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adamax',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:48:37.327433 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:48:37.345421 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:48:37.389267 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:48:37.557904 13144 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:48:37.584832 13144 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.3637 - acc: 0.9008\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.1971 - acc: 0.9440\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.1484 - acc: 0.9576\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 28us/step\n", + "Loss : 0.1410951664865017\n", + "Accuracy : 0.9577\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Adamax and sparse_categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Adamax and sparse_categorical_crossentropy.ipynb new file mode 100644 index 000000000..b63e7b54e --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Adamax and sparse_categorical_crossentropy.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:49:47.554641 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:49:47.581595 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Adamax',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:49:49.649076 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:49:49.667022 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:49:49.707882 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:49:49.860472 16504 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:49:49.889393 16504 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.3572 - acc: 0.9031\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1942 - acc: 0.9447\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1488 - acc: 0.9575\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 32us/step\n", + "Loss : 0.14077735255807639\n", + "Accuracy : 0.9586\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Nadam and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Nadam and categorical_crossentropy.ipynb new file mode 100644 index 000000000..dee97611a --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Nadam and categorical_crossentropy.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:53:23.915151 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:53:23.941080 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Nadam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:53:25.387317 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:53:25.404221 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:53:25.443164 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:53:25.606253 408 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:53:25.659651 408 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 82us/step - loss: 0.2551 - acc: 0.9273\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 78us/step - loss: 0.1081 - acc: 0.9672\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 81us/step - loss: 0.0747 - acc: 0.9770\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 27us/step\n", + "Loss : 0.08645319114979357\n", + "Accuracy : 0.9754\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Nadam and kullback.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Nadam and kullback.ipynb new file mode 100644 index 000000000..109aa6697 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Nadam and kullback.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:54:35.934505 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:54:35.962432 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Nadam',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:54:37.481840 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:54:37.498795 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:54:37.546668 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:54:37.703247 22088 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:54:37.726186 22088 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 7s 112us/step - loss: 0.2486 - acc: 0.9292\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 77us/step - loss: 0.1055 - acc: 0.9676\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - ETA: 0s - loss: 0.0719 - acc: 0.977 - 5s 79us/step - loss: 0.0719 - acc: 0.9779\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.10322229944784195\n", + "Accuracy : 0.9679\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/Nadam and sparse_categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/Nadam and sparse_categorical_crossentropy.ipynb new file mode 100644 index 000000000..3d0b21c9d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/Nadam and sparse_categorical_crossentropy.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:56:01.888793 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:56:01.993737 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='Nadam',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:56:08.710401 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:56:08.727388 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:56:08.773231 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:56:08.975076 21164 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:56:09.004544 21164 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 96us/step - loss: 0.2518 - acc: 0.9279\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 78us/step - loss: 0.1059 - acc: 0.9677\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 80us/step - loss: 0.0705 - acc: 0.9781\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 32us/step\n", + "Loss : 0.0884659024335444\n", + "Accuracy : 0.9736\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and categorical_crossentropy.ipynb new file mode 100644 index 000000000..b684d93f5 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and categorical_crossentropy.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:20:53.481513 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:20:53.506445 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='RMSprop',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:20:55.066884 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:20:55.083831 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:20:55.193535 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:20:55.289287 6052 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:20:55.349130 6052 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 90us/step - loss: 0.3077 - acc: 0.9144\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 69us/step - loss: 0.1504 - acc: 0.9562\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 71us/step - loss: 0.1109 - acc: 0.9672\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.11531054184697569\n", + "Accuracy : 0.9667\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and kullback.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and kullback.ipynb new file mode 100644 index 000000000..b30ca7a7d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and kullback.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:23:38.176280 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:23:38.195192 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='RMSprop',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:23:39.359616 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:23:39.370584 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:23:39.413471 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:23:39.594984 23156 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:23:39.641858 23156 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 76us/step - loss: 0.3136 - acc: 0.9135\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 75us/step - loss: 0.1553 - acc: 0.9545\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 77us/step - loss: 0.1128 - acc: 0.9672\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 39us/step\n", + "Loss : 0.11629472138825804\n", + "Accuracy : 0.9665\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and sparse_categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and sparse_categorical_crossentropy.ipynb new file mode 100644 index 000000000..93e37264a --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/RMSprop and sparse_categorical_crossentropy.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0810 01:17:32.877946 24500 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0810 01:17:33.517409 24500 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='RMSprop',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0810 01:17:34.758946 24500 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0810 01:17:35.195405 24500 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0810 01:17:35.242278 24500 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0810 01:17:35.425364 24500 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0810 01:17:35.475232 24500 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 5s 83us/step - loss: 0.3100 - acc: 0.9140\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 4s 68us/step - loss: 0.1512 - acc: 0.9555\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 4s 67us/step - loss: 0.1121 - acc: 0.9674\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 30us/step\n", + "Loss : 0.11368506491184234\n", + "Accuracy : 0.9682\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/adam and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/adam and categorical_crossentropy.ipynb new file mode 100644 index 000000000..0e645e55d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/adam and categorical_crossentropy.ipynb @@ -0,0 +1,261 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### optimizer 'adam' and loss function 'categorical_crossentropy'" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 09:28:27.482859 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 09:28:27.504352 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='adam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 09:28:29.782780 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 09:28:29.798922 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 09:28:29.978999 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 09:28:30.143224 26680 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 09:28:30.219883 26680 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 7s 115us/step - loss: 0.3116 - acc: 0.9139\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 7s 109us/step - loss: 0.1400 - acc: 0.9584\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 7s 110us/step - loss: 0.0961 - acc: 0.9714\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 40us/step\n", + "Loss : 0.09852424093633891\n", + "Accuracy : 0.969\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/adam and kullback_leibler_divergence.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/adam and kullback_leibler_divergence.ipynb new file mode 100644 index 000000000..7363a6648 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/adam and kullback_leibler_divergence.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 09:52:09.003685 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 09:52:09.025937 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='adam',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 09:52:23.724141 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 09:52:23.737282 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 09:52:23.781199 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 09:52:24.017474 18084 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 09:52:24.083696 18084 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 9s 149us/step - loss: 0.3121 - acc: 0.9129\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 7s 109us/step - loss: 0.1387 - acc: 0.9588\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 6s 105us/step - loss: 0.0953 - acc: 0.9723\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.10315677959099412\n", + "Accuracy : 0.969\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAOIUlEQVR4nO3dX4xc9XnG8efxencNxgY7gHHATYA6aShtnHZjl1JVRKgpoEoGKWnwBaUSknMRVCLloihVFS5R1CSqqgrJKVbcKiVKlSCohNIgC9VCRRYLcrCNSyFgYPGWDTbExjb79+3FHqrF7PxmmTnzx36/H2k1s+edM+f1eJ85M/Obc36OCAE49y3rdQMAuoOwA0kQdiAJwg4kQdiBJJZ3c2NDHo4VWtnNTQKpvKeTmopJL1ZrK+y2b5L095IGJP1TRNxfuv0KrdQW39jOJgEU7I3dDWstv4y3PSDpHyXdLOkaSdtsX9Pq/QHorHbes2+W9FJEvBwRU5J+JGlrPW0BqFs7Yb9c0usLfh+rln2A7e22R22PTmuyjc0BaEc7YV/sQ4APffc2InZExEhEjAxquI3NAWhHO2Efk7Rhwe9XSDrSXjsAOqWdsD8taaPtK20PSbpd0qP1tAWgbi0PvUXEjO27Jf2H5ofedkbEwdo6A1CrtsbZI+IxSY/V1AuADuLrskAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJNHVU0mjNR65tlifG27833h6XfnsQMc3DBTry2aLZa09VD7V2NDR0w1rc/ueL985asWeHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSYJy9D5zeurlYP3lZeSx8dmjRGXolSdHkf9hNxtE/PMfPB739qaHy/c81rl929IriujOvj5U3jo+EPTuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJME4exe8c8d1xfrkmsbj5JI0MNlksLtg6NfldVe/OlWsT19QHuN/9+Pl+tTqxv+28T/bUFz3kgcYZ69TW2G3fVjSCUmzkmYiYqSOpgDUr449+xci4q0a7gdAB/GeHUii3bCHpJ/bfsb29sVuYHu77VHbo9Mqn68MQOe0+zL++og4YvtSSY/b/u+I2LPwBhGxQ9IOSVrtta1/0gSgLW3t2SPiSHU5IelhSeXDtwD0TMtht73S9qr3r0v6oqQDdTUGoF7tvIxfJ+lh2+/fz79GxM9q6eos89q//U6xHs+Xx9FXHC3f/3CTsfKLftb4/OtzJxuft12SYro8zr58WXkcfforny/XL2j8b59eVX5cUK+Wwx4RL0v6bI29AOgght6AJAg7kARhB5Ig7EAShB1IgkNca7BrZGex/hfP31OsD79THlq78N/3F+uzJ08W6+2ILeXpoicvbH347LKnysOCqBd7diAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgnH2GvztleXDPK+6+IViPd4tj5PPvffeR+6pLsevOq98A45SPWuwZweSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJBhn74LZt5qcK7qH4rryCYJLUy4vxXkTjY/VX/5M+fsHc21tGWdizw4kQdiBJAg7kARhB5Ig7EAShB1IgrADSTDOfo4b+PRvFuvjv7+yfAflU9pr+enyDS7Zc6RhbebUqfKdo1ZN9+y2d9qesH1gwbK1th+3/WJ1uaazbQJo11Jexv9A0k1nLLtX0u6I2Chpd/U7gD7WNOwRsUfSsTMWb5W0q7q+S9KtNfcFoGatfkC3LiLGJam6vLTRDW1vtz1qe3Raky1uDkC7Ov5pfETsiIiRiBgZ1HCnNweggVbD/qbt9ZJUXU7U1xKATmg17I9KurO6fqekR+ppB0CnNB1nt/2QpBskXWx7TNK3JN0v6ce275L0mqQvd7JJtG76slXFejR5uvdsuX7hK+XPYWZeebV8B+iapmGPiG0NSjfW3AuADuLrskAShB1IgrADSRB2IAnCDiTBIa7ngFO3bWlYO7FhoK37vuiX08X68icPFOtNjpBFF7FnB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkGGc/CyxbWT7d86lLGj9nR5Nh9uWnyiPh5+19qVifnZ4qbwB9gz07kARhB5Ig7EAShB1IgrADSRB2IAnCDiTBOPtZ4MTN1xbrs8Nu+b4veqk8Tj779tst3zf6C3t2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCcfY+MPCpq4v199a0/px8/v/OFeuDe/YX65z3/dzR9K/I9k7bE7YPLFh2n+03bO+rfm7pbJsA2rWUXcYPJN20yPLvRcSm6uexetsCULemYY+IPZKOdaEXAB3Uzgd0d9t+rnqZv6bRjWxvtz1qe3Rak21sDkA7Wg37A5KulrRJ0rik7zS6YUTsiIiRiBgZ1HCLmwPQrpbCHhFvRsRsRMxJ+r6kzfW2BaBuLYXd9voFv94mqTxvL4CeazrObvshSTdIutj2mKRvSbrB9ibND8MelvTVDvZ41mt23vdjn7+kWI82Plk571fl+dWD876n0TTsEbFtkcUPdqAXAB3E12WBJAg7kARhB5Ig7EAShB1IgkNcu+DUF367WH/vY+Xn3IHJ8oGmq1+faVgb+k8OYcU89uxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kATj7F0wMVJ+mIfbPMPfyt2HGtbmOIQVFfbsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AE4+znAK9Y0bC2bHa2i5182Nzp042LUT6a3oNDxfqyC1eVN+7CvmzthcVVX/nKpcX69OryVNhz5zU5U0Dhv+Uz3x4rrjoz9kb5vhtgzw4kQdiBJAg7kARhB5Ig7EAShB1IgrADSTDOfg44cvvGhrVo8j/sJsPwTetz5fHk8ycaj0e/s3GguO7JjeVj8bf81svF+mUr3m5YG/RbxXXPP/lOsf6Ha8rb/vSKI8X6QOGM/Td9abK47p9+fFOx3kjTPbvtDbafsH3I9kHb91TL19p+3PaL1eWaljoA0BVLeRk/I+kbEfEZSX8g6Wu2r5F0r6TdEbFR0u7qdwB9qmnYI2I8Ip6trp+QdEjS5ZK2StpV3WyXpFs71SSA9n2kD+hsf1LS5yTtlbQuIsal+ScESYt+mdj2dtujtkenVX4vAqBzlhx22xdI+omkr0fE8aWuFxE7ImIkIkYGNdxKjwBqsKSw2x7UfNB/GBE/rRa/aXt9VV8vaaIzLQKoQ9OhN9uW9KCkQxHx3QWlRyXdKen+6vKRjnR4Dlh1uDw8NbXaXeqk+359VePhtatuLg9ffWndaLH+2NHfLdan5hr/eU81+dM/NVM+vPYf/uvGYv38VwaL9ZK/WlX+e7lST7V0v0sZZ79e0h2S9tveVy37puZD/mPbd0l6TdKXW+oAQFc0DXtEPCmp0a6n/PQGoG/wdVkgCcIOJEHYgSQIO5AEYQeScDQ5nW+dVnttbDEf4J8prvtsse7Z8mmLY7DxWHY0GcKfWlMeTz7+G+UBm2aHuE5f0LiBmZXFVbWsyWzTQ02+x7n+iaMNa7MHXyivfJbaG7t1PI4t+qCzZweSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJDiVdB/wU79ob/0Wa5LUeLLnpdX7WW8nq+4/7NmBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgiaZht73B9hO2D9k+aPueavl9tt+wva/6uaXz7QJo1VJOXjEj6RsR8aztVZKesf14VfteRPxd59oDUJelzM8+Lmm8un7C9iFJl3e6MQD1+kjv2W1/UtLnJO2tFt1t+znbO22vabDOdtujtkenNdlWswBat+Sw275A0k8kfT0ijkt6QNLVkjZpfs//ncXWi4gdETESESODGq6hZQCtWFLYbQ9qPug/jIifSlJEvBkRsxExJ+n7kjZ3rk0A7VrKp/GW9KCkQxHx3QXL1y+42W2SDtTfHoC6LOXT+Osl3SFpv+191bJvStpme5OkkHRY0lc70iGAWizl0/gntfjpxx+rvx0AncI36IAkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0k4Irq3MftXkl5dsOhiSW91rYGPpl9769e+JHprVZ29fSIiLlms0NWwf2jj9mhEjPSsgYJ+7a1f+5LorVXd6o2X8UAShB1Iotdh39Hj7Zf0a2/92pdEb63qSm89fc8OoHt6vWcH0CWEHUiiJ2G3fZPtF2y/ZPveXvTQiO3DtvdX01CP9riXnbYnbB9YsGyt7cdtv1hdLjrHXo9664tpvAvTjPf0sev19Oddf89ue0DS/0j6E0ljkp6WtC0inu9qIw3YPixpJCJ6/gUM238s6V1J/xwR11bLvi3pWETcXz1RromIv+6T3u6T9G6vp/GuZitav3CacUm3SvpL9fCxK/T15+rC49aLPftmSS9FxMsRMSXpR5K29qCPvhcReyQdO2PxVkm7quu7NP/H0nUNeusLETEeEc9W109Ien+a8Z4+doW+uqIXYb9c0usLfh9Tf833HpJ+bvsZ29t73cwi1kXEuDT/xyPp0h73c6am03h30xnTjPfNY9fK9Oft6kXYF5tKqp/G/66PiN+TdLOkr1UvV7E0S5rGu1sWmWa8L7Q6/Xm7ehH2MUkbFvx+haQjPehjURFxpLqckPSw+m8q6jffn0G3upzocT//r5+m8V5smnH1wWPXy+nPexH2pyVttH2l7SFJt0t6tAd9fIjtldUHJ7K9UtIX1X9TUT8q6c7q+p2SHulhLx/QL9N4N5pmXD1+7Ho+/XlEdP1H0i2a/0T+l5L+phc9NOjrKkm/qH4O9ro3SQ9p/mXdtOZfEd0l6WOSdkt6sbpc20e9/Yuk/ZKe03yw1veotz/S/FvD5yTtq35u6fVjV+irK48bX5cFkuAbdEAShB1IgrADSRB2IAnCDiRB2IEkCDuQxP8BguwyeA+T5x8AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/hand digit recognition in keras.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/hand digit recognition in keras.ipynb new file mode 100644 index 000000000..8895caf01 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/hand digit recognition in keras.ipynb @@ -0,0 +1,250 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implement hand digit recognition in Keras with dataset at https://keras.io/examples/mnist_dataset_api/ with a simple 3-layer FFNN with fully connected layers (no convolution or other operations)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Opitimizer 'adam' and loss function 'sparse_categorical_crossentropy'" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='adam',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 8s 140us/step - loss: 0.3175 - acc: 0.9119\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 7s 108us/step - loss: 0.1422 - acc: 0.9578\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 6s 108us/step - loss: 0.0966 - acc: 0.9710\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_2 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_3 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "dense_4 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 101,770\n", + "Trainable params: 101,770\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "#trained model summary\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.10255768429301679\n", + "Accuracy : 0.9692\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/sgd and categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/sgd and categorical_crossentropy.ipynb new file mode 100644 index 000000000..32c376a12 --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/sgd and categorical_crossentropy.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 10:10:42.337410 11744 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 10:10:42.362914 11744 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='sgd',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 10:10:54.682659 11744 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 10:10:54.693359 11744 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 10:10:54.733964 11744 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 10:10:54.980892 11744 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 10:10:55.065901 11744 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 106us/step - loss: 1.1406 - acc: 0.7587\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 88us/step - loss: 0.4841 - acc: 0.8748\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 86us/step - loss: 0.3910 - acc: 0.8925\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.35191330649852753\n", + "Accuracy : 0.9064\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/sgd and kullback.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/sgd and kullback.ipynb new file mode 100644 index 000000000..726d3575d --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/sgd and kullback.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "from keras.utils import to_categorical\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()\n", + "\n", + "ytrain= to_categorical(ytrain)\n", + "ytest= to_categorical(ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 10:28:12.763304 15188 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 10:28:12.783288 15188 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='sgd',\n", + " loss='kullback_leibler_divergence',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 10:28:21.613856 15188 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 10:28:21.631637 15188 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 10:28:21.682727 15188 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:1521: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 10:28:21.932633 15188 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 10:28:21.993745 15188 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 92us/step - loss: 1.1251 - acc: 0.7591\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.4784 - acc: 0.8749\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.3879 - acc: 0.8935\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 42us/step\n", + "Loss : 0.3485983126282692\n", + "Accuracy : 0.9058\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xtest[5])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/shashiraj0308@gmail.com/Project-Code/Code/sgd and sparse_categorical_crossentropy.ipynb b/shashiraj0308@gmail.com/Project-Code/Code/sgd and sparse_categorical_crossentropy.ipynb new file mode 100644 index 000000000..ca94fc2ca --- /dev/null +++ b/shashiraj0308@gmail.com/Project-Code/Code/sgd and sparse_categorical_crossentropy.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "#importing required modules\n", + "\n", + "import keras\n", + "import numpy as np\n", + "from keras.datasets import mnist \n", + "from keras.models import Sequential\n", + "from keras.layers import Flatten,Dense\n", + "from keras.utils import normalize\n", + "from tensorflow.nn import relu,softmax\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#spliting dataset into training data and teting data\n", + "\n", + "(xtrain,ytrain),(xtest,ytest) = mnist.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#scaling the pixel values between 0-1\n", + "xtrain = normalize(xtrain,axis=1)\n", + "xtest = normalize(xtest,axis=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Logging before flag parsing goes to stderr.\n", + "W0809 10:16:56.500693 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n", + "\n", + "W0809 10:16:56.527974 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n", + "\n" + ] + } + ], + "source": [ + "#defining model and adding layers\n", + "\n", + "model = Sequential()\n", + "model.add(Flatten())\n", + "model.add(Dense(128,activation=relu))\n", + "model.add(Dense(10,activation=softmax))\n", + "\n", + "model.compile(optimizer='sgd',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "W0809 10:17:08.739080 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n", + "\n", + "W0809 10:17:08.752942 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n", + "\n", + "W0809 10:17:08.795526 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3341: The name tf.log is deprecated. Please use tf.math.log instead.\n", + "\n", + "W0809 10:17:09.030250 22136 deprecation.py:323] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.where in 2.0, which has the same broadcast rule as np.where\n", + "W0809 10:17:09.071861 22136 deprecation_wrapper.py:119] From c:\\users\\ravin\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/3\n", + "60000/60000 [==============================] - 6s 94us/step - loss: 1.1481 - acc: 0.7507\n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.4869 - acc: 0.8738\n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 5s 84us/step - loss: 0.3943 - acc: 0.8912\n" + ] + } + ], + "source": [ + "# training the model\n", + "history=model.fit(xtrain,ytrain,epochs=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000/10000 [==============================] - 0s 41us/step\n", + "Loss : 0.3552831846117973\n", + "Accuracy : 0.9038\n" + ] + } + ], + "source": [ + "# calculating the accuracy and loss\n", + "\n", + "loss,accuracy= model.evaluate(xtest,ytest) \n", + "print(\"Loss :\",loss)\n", + "print(\"Accuracy : \",accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(211)\n", + "plt.title('Loss')\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.legend()\n", + "# plot accuracy during training\n", + "plt.subplot(212)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['acc'], label='train')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "#prediction\n", + "\n", + "predict = model.predict([xtest])\n", + "print(np.argmax(predict[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.imshow(xtest[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}