From d998f6de4c088ce963ee8dfb6d0d15b93c462146 Mon Sep 17 00:00:00 2001 From: lepton Date: Mon, 4 Aug 2025 12:44:35 -0400 Subject: [PATCH] training and plotting updates --- __pycache__/config_.cpython-312.pyc | Bin 0 -> 1509 bytes __pycache__/model.cpython-312.pyc | Bin 7117 -> 7119 bytes __pycache__/train_and_eval.cpython-312.pyc | Bin 0 -> 10648 bytes config_.py | 33 +++ model.py | 4 +- plot_results.py | 74 +++++ test.ipynb | 306 ++++++++++++++++++++- train.py | 19 -- train_and_eval.py | 92 +++---- 9 files changed, 457 insertions(+), 71 deletions(-) create mode 100644 __pycache__/config_.cpython-312.pyc create mode 100644 __pycache__/train_and_eval.cpython-312.pyc create mode 100644 config_.py create mode 100644 plot_results.py delete mode 100644 train.py diff --git a/__pycache__/config_.cpython-312.pyc b/__pycache__/config_.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..21591ec5f909122009db41c64ea192549c495ba2 GIT binary patch literal 1509 zcmZux&u<$=6rS~tfB%S+*pAbX#43d1AT^3mZxt1UCMq-=gi;QB8Lhn&d(nE=%&vnR zE=HtMj=mL6oU2Ox7x)9XAl$<;2&ssZZ*5blQUy}q8{0r5M)EiBd+*Kc%s21(r+hv` zVAM8;?Z0D${E1{X;#1@Nb1?1^o7kF5Oq^q`)`^)hjl{?vvGr48QyzPuPx4J&dE?+s zJb*oMm{j?a;7k4Ei}$s9dW>PCu1R{+>vfvQW<#4A=T$K75l&3aCT7gmOx=!|)Yi>- zpVs3tZTL>W5Bps%sporKCOltsELSFbo^u4IQBTMeW1iLFjL8gR9pCP`Xy+LFvS+!| z2sI9jn=)Y>e766=ZJE4d+}Z{6J~_vOyu7y6_B(vb zfQ$cMu7?o$uUxZ&;c=d@XF?@;3fM%bgqc<>sbou;8J>k$TCt3oQ!J}k&djUKJThMR zVhyGX!z}UwtS+ehIdfipwW#tJz(2423+AHoFCy!g>SdWd6qe&np62ArWbO$iWDRP# z7PfgU#1wd*T37f@9t2lgf8Brj%YNh28#3>5OJIz_8a}pRTbbZpzu6APH6)pa6*k)} za8CHHOdfO5@S$gJTx9c{C)EqKuOUE8RaF4jwuG23rKiJ*ise&qUAC|1B0 zHH1qDml56skhJ0Zu6PUi+X$+ua%f#acn3i0K`6u~(hFs_iavw|_ysP&UGgj4j#k#8 z$gYj(db9wYc(ya5<)~7{A{)_aR9YVFogI$oa#So0cFsy8T8h?cKhw&05UxdUZ2Vw+ zZ$NT-L^q@5)xjsj@`$cJNs!VKRO{nQYlGXvjYo8CQmy!T_!rWHejq7_&J)<(lY6K( zP=|c|;4f3xCx2A$i)~28ehl6Pc%o~X_8ZCkPRh@zu2qNhIf3a#j%wAX1mH!npshb6 I0P5qf003um`Tzg` literal 0 HcmV?d00001 diff --git a/__pycache__/model.cpython-312.pyc b/__pycache__/model.cpython-312.pyc index 196000194add0819007af4c22a30cff2eee89af6..250043572d5f345b5c9e263b805fe4249aabfbd5 100644 GIT binary patch delta 98 zcmX?We%_q-G%qg~0}vFy>d!c`k@qw+BiH7e%zn&_vYR#7O;{N9H^*}8GBY}D?&j-a zWsKV_Ci0h&F?q9ym@X4z&}JtIS0)bjKy9; delta 96 zcmX?ae%74#G%qg~0}$8*wPzgI$a|WZkz?~sW|>CGDKCM=A)n`60knHe26ck^|z zGRABc6Zy-?n7CO)OqYohVc z^D#M0;=F2Dg=2M$8rG2cI%-%8WvZwyrXSYF48w+)aoC9K)KOE+JZ#2kDr$*YhAlX) ziCSZ2!)1l`wqYCYvwXN5$M#`6#M)>@%rWeUIftDw*RTuI>Z0zLXV?>~9Ik}Co>fJ* zD$JK+#=vSL+e>*R#TZ!!V`6I5_PYu^GR<@ogW1Wm`eQKth zrC|gb=n7{{eHg5dNjf^EE4V2LCq$w|`Z`~u|%eQMdj1chKI8svFd zGZJQ_jI0gvOgJR?NSQhmpNOGYxXhqfKe8#nhY}nM?M$b*U^sp-5g!SU%BEuphK&|7 zhQUObXHQLzvp$t<5)fG+hU#V8C@Tblg22Xwa3UTUiOcFs?4)c4ng|;b5?q+&aSmF9 z@;w_b28GaAfDb2GS^mVf1>sth#vZSi3@{JZ&*{OW5^^3?;48TKw%U~(I6Tb6{C7zHKImal`<8|$Ry-m zsxgaHM1%T&`4de_uOuOA)}=6)C~oYfh#My;LO}DyUqr8@O0i&4(juj_RpOLI&?>bN z<=80&5J$?^WC}^qqO>O0j%-_pvN&FfTEpXdlp3W^*ddDMo#%7ixd~o^?HmNR_>Iyeg%qQjCw4U#L+^)?LqfrM47{ zgjjY@mCvuwZ4x9UWs9GFEmw4@S0#nH+W8u;niT3%jJR5#8xyg9`F-kM;S8p1qV=2i z`#qbo-$@J1Z7sF8#DkI&DMoW&tE|y$sWmTAmy7G}F_S-`cF``Xld$@!3en1_#0tp4 zYF7~{hgkkn-YGgFtqMn_7_|`f3|XAJOLYEKbZ*flx<^!R6FyyV43v$Lh7XkG6_yit znh(b&qCun(>9u;04#$NA1mhFJhQx#b5j`FZb38qg;AmltrLju&*lk|M5vW$Z^3*Ix#}?W5IEj zZi7>V|)da`K**GJs;^UCcm#L#{9PXfCoJquF9X~cP zG7@EF4PG4C7)O_0K!971Lt0p-29FOOl1=&ID0>C2KkeZ0lgE0F%IZk)nyif{xEQdb zJ3ZKU7|LbcL_7@Z5R*;pwQ(3Ez`zR2I*!GR`8=Ezy5*3T=8#(D%F!ssU^H4-1=)ns zg%yzX${xvL_^xG->; zk}nYONb@6MTkrd7PuEx?#&$(nVLTD<3V|)sHOd9Y#{wK1N{q(C*c!QtER%Q_7Q+Bq ze-@;~KRzkD#yNI8$gz0x0obCvHN*A5km#!7dqKjch}9~>?wIP&K``)n`}S=69tr+a zty6DK$7Y9L=n1=f=Gq7K&j^jCby~CHu9>~CuxT!kac_7=P=?m&BRK~>?_ALRygc2o zS#oTdK9qAd%r`H%7dQQ+`scxP;||HWbNX=3?8=&JC3Ed8yKMI6%n_{h0^|@?|Xe&$|+IKnM=!5<4SqOZO<*w zYd8&WK?zr7{t8I37#@-53D6gI!kjmT8jA~~uN%nRq(^X`3b&{^`$G%VeANwEb zHZGpeZaXGzJC;82*28UYnHql_&bDlqTDCtlZC`P?Z};Eo z&pMhVNArAWVRy!{W2rOSeNuw|j+569V4=uZjjano}OU_m? zb1vucW<47v&&ITSW6s@_b$3bbu2mi3Y<*5pPV4lcRU=`jxx?MPHg|17^Wl4v-k;W2 zzt9rZwRin<{)MWg#^tKLY0A9<1^edqEp#j$SgzimraY@!qM{{h?~v>r3q6wEKQ#bz zpRa=K)Bx0ZI?^4z3j<5-QfF`4eJD*ia-PoghQkY&mii_C;k4&SnsTn{30F(jxj}Mn zfb#B7lj*llWt^v{26L{~{NgN{mWCfxrB4rKTxX_^e{QOr-JdqKr>XYmAWVd;1z8Ki z$v0yKU$leaOt1kgwX#7NLs}sbWnMCck$Hzr;RleoO$Y_E7EC*&0bluqqDczZKdD@} z_X=%N6qsh%aEcTS&Qb?L(ey0RBeSh&e3mE`uOp=e6Zf0ybpjX%`A^h}I)xv&GRfpS z_&zvv4NhhV?n`v{McE)1hbyG$OVD^_I-#<#GCUm?I%zn@bSM!6rN-tP9^OP_2PS_z z`E(qz;kX7AAO?`{gH*VzhTB)xjljJO&I*U->(g@w5g8bh1a}Aphar$11y=G~llP8z zxeQbW@}WSdDO-lN5A`P-P#sS4s9!~4ac`jR?4e*ZgvNw0(ObS{J?_l~S#EHif#-; ztxx+Q!Dv2GD=omWDYel4#TL4?EhhDA+8F*~8{^tG0=lm8Cm58}dXCQey(!%G5;w_^ zYLp16E`S@9BEijdD!r9rrs!JoOufGp5ZMC3-|BILH+ualiIn!79Q0RHmwgz9Lm6&;d=PUnwcY z$}CdVVii+|c#Rw@)ha24XV4EdH*0U!g{Uynqj1vjXf>%?u|}+g+PZ@F0NXxQC)P!d zD?OBAr7zGL4y;-0K2Y6gp@>v{sy0=VswG`jh zmR1D%`UdR=weNntHPdiM$28tiee+2Yf=Wvfq(wQ;%GyR=GHmjc%K9@+ceJSnu`<>8 zE%cFz@hW4bnqH$@n_kha9SX&DA^P}D}kC0ZpVHYh7ff)>B=UjRz~|L;i?)248l@~+Y0UdE@CzoNs};~qQ(ru}}$ zy@EaY^%<n1TwL$d4O;iM{VFuKVi!g)I9p^92Zc-mok=Sm!3L#GEt`beeCW0rg zLjE0sgnu*Y8s_jM(A9s@88Too=n z4sc$A28aYZJ_<;NJsSj2OyrTn@$fhs4aZr362IpFM8kJ+2s4-U3TBgZAL6(K*G=~V zhC?#|!J!wINxC&@Zl&W10YJEkIO9)toB)@GXNyB3$cF|@kLB`16_`ShU29U`N{;|2 zDfkB`nqjonyFZ$u-v&%Z03ff3=+O#y80TwE>RM^ksbALRai~D3a1~<_Lsvir{GRWD zV6Dpms-fsOU`iYS9$RRgcQlk7xQ^;UnGE1n@ToX-lK{v!9u1?HE%F+VTG80+`bxhi z8jM|Jg8P!L7_7U0Pc#937{3n^`SSOHmUlxiMf@-{+iWeawMQ8~y7E9(HJ{tR5%8u&^^N;CC#D7MGRWVX239thzv|dU;)>nP$W|m6JbWy zpl~ZUidu}J0NpnndZ^TAY$xJ)vDhNHI! zw32`^D5PH=D}QV-^QM9xz>9&@y@FkRW6Zq)lrn`BEB8}K3h?7ypydI|(h`pP5B5$S z%{6ZL2lYSdf2Ln5|Cvc@+`SZ$8sD5cx=hsriP?H{$MqdI_g>#STa&HaDphV>Hf>wc zThg}H1#`CTpwxCS-P-%<(X{ogW&KH9v3u!gcF!4U&zbb@v+1+nNn3-<`inWe^$BH2 zn>Q_XW;Y*`HXloG8hkLCHV!RQXJ8n+XT{+{`1Gupt?!oVyEBg6kM(D!FE3sGrT7c+ zLEoeOLw{TTP=Drk=JppFwOu>a|H4RAxNf)KYR}relHEIhGGlK8l)TFOoERrH{p7TD zrLy|2d(M5gX0B#Fnr-QkT6#X+m#I8CZT*~XOzUf(xN7d(e_HjEs>Q*K@8ILwbMrl) zUjFCgKPA&A-+6Ro_(#EqwdXRf^V6m$F3;`JTcfw5x1#g=7I$S_d#6n+dgD#gb<@ni zg7=ZW>q)s|=6u%KDLFec)#lxAZ-P2`Ci{lH-BmI^qddrOE zPH4U(Q|C|Db}fiYgX!G^54NPO$Cvddp42zZ4=kBKeK*~ED!u*ma{bVA;w)*{Hhp}> zQ*~E2r@L#OGta-f7|3`IP4_)1cg}?8E8rnvl^`wNh4K}5_3g=9lk?>th%?leYAAc5 zF94VGy$f}ccW0)0*Ywext1;_plU!}rk4*PWU!G|IDq!3*=b87WTX#u~-I>bW)BP*n z)=&CB?$3I+N`QKv%XoVvbHnt&tY@We>*CoZ@xl4@xzX%7PCCbB>iFx&rw`8@0mQzl zC0p4cRdy^KkSe>Nm+F@11X*L9J_>csUDHRG%}u!`FNzy;-sXJ1)raC1;G=B|JTK(j zwK-3HuDUr_>w96+wpk@JG?;CFVJGa~oUI1`uYxdZ^GP<}bA!fioj$N?Ct5ZxTBYXw z+2%u1^Px=hkuNoBpLLah;6EG| zl{Pm&L)0K-l{I&I@Al92e|R+G@lE%^`v%>WYiOQNNDbR_HFY`P0eE$2-I8tDE4A#+ zHE+r`@0OZ(=UO%wN_^Y0zJrqQ;8TO9&b4YIyc@Gk+oh)MIrL1`E4BCLpv1cq_9RDl zX6cO*y)oCdJKHrVbq%hx_!c^|?LAU^Pp0KS4n}F+FSYJ}T4rc)J*}vyw!dg28oi%* zKK3lPcQ5UEP?KpN$~2tGHoPk}yqjtG&eLtxRo3bL)o!AxD{ZcSvgSY}7XKzwc^I|@ zPWZs}fm!3isYm9`E9K4~UM$Lb_d;|jAo-6zxFY#aXIw++v*$DA7m$o?NCz*j*j%?w zw@kA~7aEprok+?yz|LA4v*tF*+_q5l*t~W1vIWJTmx{1EafvD zvwX(V1brI1=P$3AZ8!U__oZDO3vVr6eq`PSy&Ae<6Aae0jh?Sd(;F9!OS_jgq^)m0 z*7vOj)%d8tVAO=hm^N;HL~Z%gv&(A2aF+bjGZ#^Jp8T=~g#Rfz761F}6iIk?{^tc;uA-igKOarTtX8uG9OBzu7=R_%ANkkXrZKHp`IH z{M&8rA)Djh%^FB&D&0dhy5*gfLv5PJYR! z@Oe4pFmgXY0kRup1H4H4;ZYV|J2m-89f^-)13)&Rn+gAc7|V0W0Ou$afC2}t&H^>3 zMR{yPl<{yk!_$nvU`%40jk|&BZ=&ETYNX2>r~zyT<;@5as*Iul8xQy?M$?1->Oj`T z8T`UtFyQgu0AMQwOaORcfj?RUTSdV32EJac{(mgD;eOnkV=CZg;1RHVUWAr{8|JkccJ<31Kpw6u%^h?~;d9PxH|#K^#%_si5$P z>Mc}=A}IVWiE|U=N!4@Q^=hxGj%?4FZL4aCKeyMeY9IzFhqqhfE#s;V<@AKjxoSWu pBcU}tH$m#z8|0fRa_j0TilEHX$%pF7-% THRESHOLD).astype(int) + + true_flat = true_graph.flatten() + pred_flat = predicted_graph.flatten() + + calc_f1_score = f1_score(true_flat, pred_flat) + + + datapoints[num_agents] = datapoints.get(num_agents, []) + datapoints[num_agents].append(calc_f1_score) + + +for key in datapoints.keys(): + datapoints[key] = sum(datapoints[key])/len(datapoints[key]) + + +x = [] +y = [] + +for item in datapoints.items(): + x.append(item[0]) + y.append(item[1]) + +plt.plot(x, y) +plt.show() + + \ No newline at end of file diff --git a/test.ipynb b/test.ipynb index 8b7114b..afd8842 100644 --- a/test.ipynb +++ b/test.ipynb @@ -624,13 +624,313 @@ "execution_count": null, "id": "2c460e07", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.71s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-5.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.72s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-4.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.73s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-4.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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bV1dXXrjjTfk9XoNzixxWZale+65R7t379Y///lP5eTkRDxfUFCgs846K+KYHD58WMeOHeOYjJNQKKS+vj6OhQHXXXed3n77bTU1NYUf8+fP16233hr+b46JOZ988ok++OADeTyemPj94DRNHPnkk0905MiR8NctLS1qampSRkaGZs6cqRUrVuiRRx7RJZdcopycHK1evVozZszQwoULzU06gZWXl2v79u36y1/+osmTJ4fPrTqdTk2cOFFOp1N33HGHKioqlJGRofT0dN17773yer268sorDc8+8VRWVurGG2/UzJkz1d3dre3bt+vAgQN6+eWXORYGTJ48OXz91GnnnHOOpk6dGt7OMRk/9913n0pLS3XBBRfo448/ls/nU2pqqhYtWhQbvx/jcs8ORsUrr7xiSRrwWLJkiWVZp27vXb16teVyuSy73W5dd9111uHDh81OOoENdiwkWX/4wx/CYz777DPr5z//uTVlyhTr7LPPtn7wgx9YbW1t5iadwH76059aF1xwgZWWlmadd9551nXXXWf9/e9/Dz/PsTDvy7f2WhbHZDyVlZVZHo/HSktLszIzM62ysjLryJEj4edNHwubZVnW+GQPAADAQFwzAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAw6v8BHd2mI65sLhIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.73s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-3.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.74s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-3.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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ceLEsGNy9OhRHT9+nGMyToLBoPr6+jgWBlx77bV6++231dTUFHosXLhQt9xyS+jfOSbmfPLJJ3r//feVkZERFb8fnKaJIZ988omOHTsW+rqlpUVNTU1KS0vT7NmztWbNGj300EO65JJLlJ2drfXr12vmzJlasmSJuUnHsdLSUu3YsUN//OMfNWXKlNC5VafTqUmTJsnpdOr2229XWVmZ0tLSlJqaqlWrVsnr9eqKK64wPPv4U15erhtuuEGzZ89Wd3e3duzYoYMHD+rll1/mWBgwZcqU0PVTZ5x77rmaPn16aDvHZPzcc889Ki4u1gUXXKCPP/5YFRUVSk5O1tKlS6Pj92Nc7tnBqHjllVcsSQMey5cvtyzr9O2969evt1wul2W3261rr73WOnr0qNlJx7HBjoUk67e//W1ozGeffWb99Kc/taZNm2adc8451ve+9z2rra3N3KTj2I9//GPrggsusFJSUqzzzjvPuvbaa62//OUvoec5Fub99629lsUxGU8lJSVWRkaGlZKSYs2aNcsqKSmxjh07Fnre9LGwWZZljU/2AAAADMQ1IwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo/4fNcGTZix/F4YAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.75s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAISpJREFUeJzt3X9s1PXhx/HXtdA7FHpQsHcFi60/WVcpUGi9OeOc1aKmG/uRMPwBYeoiqwS4mEk34ez0a5lMwwwIE3UuIQzEDB3C6lgnOGNntV0TOwQF6yDYa2EN11pt6+4+3z8It93aAlfbvu/H85Fc4n3u/em96ycNz9zn83mfzbIsSwAAAIakmJ4AAABIbsQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwKuoYeeONN1RWVqbJkyfLZrPp5ZdfPuc++/bt06xZs2S323X55ZfrhRdeGMRUAQBAIoo6Rrq6ulRQUKANGzac1/jm5mbddtttuuGGG9TY2Kjly5frnnvu0WuvvRb1ZAEAQOKxfZkvyrPZbNq5c6fmzZs34JgHH3xQu3fvVlNTU3jbD37wA506dUrV1dWDfWsAAJAgRg33G9TW1qqkpCRiW2lpqZYvXz7gPj09Perp6Qk/D4VCam9v18SJE2Wz2YZrqgAAYAhZlqXOzk5NnjxZKSkDn4wZ9hjx+/1yuVwR21wulzo6OvT5559rzJgxffapqqpSZWXlcE8NAACMgGPHjuniiy8e8PVhj5HBqKiokNfrDT8PBAKaOnWqjh07pvT0dIMzAwAA56ujo0PZ2dkaN27cWccNe4y43W61trZGbGttbVV6enq/n4pIkt1ul91u77M9PT2dGAEAIM6c6xKLYV9nxOPxqKamJmLb3r175fF4hvutAQBAHIg6Rj799FM1NjaqsbFR0ulbdxsbG3X06FFJp0+xLFy4MDz+vvvu00cffaSf/OQnOnjwoJ5++mm9+OKLWrFixdD8BgAAIK5FHSPvvvuuZs6cqZkzZ0qSvF6vZs6cqdWrV0uSWlpawmEiSbm5udq9e7f27t2rgoICPfHEE3r22WdVWlo6RL8CAACIZ19qnZGR0tHRIafTqUAgwDUjAADEifP995vvpgEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRg4qRDRs2KCcnRw6HQ8XFxaqrqzvr+HXr1umqq67SmDFjlJ2drRUrVqi7u3tQEwYAAIkl6hjZvn27vF6vfD6fGhoaVFBQoNLSUrW1tfU7fuvWrVq5cqV8Pp/ef/99Pffcc9q+fbt++tOffunJAwCA+Bd1jDz55JO69957tXjxYuXl5WnTpk264IIL9Pzzz/c7/q233tK1116r22+/XTk5Obr55pu1YMGCc36aAgAAkkNUMdLb26v6+nqVlJT85wekpKikpES1tbX97vO1r31N9fX14fj46KOPtGfPHt16660Dvk9PT486OjoiHgAAIDGNimbwyZMnFQwG5XK5Ira7XC4dPHiw331uv/12nTx5Ul//+tdlWZb+/e9/67777jvraZqqqipVVlZGMzUAABCnhv1umn379umxxx7T008/rYaGBv3+97/X7t279cgjjwy4T0VFhQKBQPhx7Nix4Z4mAAAwJKpPRiZNmqTU1FS1trZGbG9tbZXb7e53n1WrVumuu+7SPffcI0m6+uqr1dXVpR/96Ef62c9+ppSUvj1kt9tlt9ujmRoAAIhTUX0ykpaWpsLCQtXU1IS3hUIh1dTUyOPx9LvPZ5991ic4UlNTJUmWZUU7XwAAkGCi+mREkrxerxYtWqTZs2erqKhI69atU1dXlxYvXixJWrhwoaZMmaKqqipJUllZmZ588knNnDlTxcXFOnz4sFatWqWysrJwlAAAgOQVdYzMnz9fJ06c0OrVq+X3+zVjxgxVV1eHL2o9evRoxCchDz30kGw2mx566CEdP35cF110kcrKyvR///d/Q/dbAACAuGWz4uBcSUdHh5xOpwKBgNLT001PBwAAnIfz/feb76YBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUaNMT8CUYMhSXXO72jq7lTnOoaLcDKWm2ExPCwCApJOUMVLd1KLKXQfUEugOb8tyOuQry9Pc/CyDMwMAIPkk3Wma6qYWLdnSEBEikuQPdGvJlgZVN7UYmhkAAMkpqWIkGLJUueuArH5eO7OtctcBBUP9jQAAAMMhqWKkrrm9zyci/82S1BLoVl1z+8hNCgCAJJdUMdLWOXCIDGYcAAD48pIqRjLHOYZ0HAAA+PKSKkaKcjOU5XRooBt4bTp9V01RbsZITgsAgKSWVDGSmmKTryxPkvoEyZnnvrI81hsBAGAEJVWMSNLc/CxtvHOW3M7IUzFup0Mb75zFOiMAAIywpFz0bG5+lm7Kc7MCKwAAMSApY0Q6fcrGc9lE09MAACDpJd1pGgAAEFuIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUYOKkQ0bNignJ0cOh0PFxcWqq6s76/hTp06pvLxcWVlZstvtuvLKK7Vnz55BTRgAACSWUdHusH37dnm9Xm3atEnFxcVat26dSktLdejQIWVmZvYZ39vbq5tuukmZmZl66aWXNGXKFP3zn//U+PHjh2L+AAAgztksy7Ki2aG4uFhz5szR+vXrJUmhUEjZ2dlaunSpVq5c2Wf8pk2btHbtWh08eFCjR48e1CQ7OjrkdDoVCASUnp4+qJ8BAABG1vn++x3VaZre3l7V19erpKTkPz8gJUUlJSWqra3td58//OEP8ng8Ki8vl8vlUn5+vh577DEFg8EB36enp0cdHR0RDwAAkJiiipGTJ08qGAzK5XJFbHe5XPL7/f3u89FHH+mll15SMBjUnj17tGrVKj3xxBN69NFHB3yfqqoqOZ3O8CM7OzuaaSaVYMhS7ZF/6ZXG46o98i8FQ1F90AUAgHFRXzMSrVAopMzMTD3zzDNKTU1VYWGhjh8/rrVr18rn8/W7T0VFhbxeb/h5R0cHQdKP6qYWVe46oJZAd3hbltMhX1me5uZnGZwZAADnL6oYmTRpklJTU9Xa2hqxvbW1VW63u999srKyNHr0aKWmpoa3feUrX5Hf71dvb6/S0tL67GO322W326OZWtKpbmrRki0N+t/PQfyBbi3Z0qCNd84iSAAAcSGq0zRpaWkqLCxUTU1NeFsoFFJNTY08Hk+/+1x77bU6fPiwQqFQeNsHH3ygrKysfkME5xYMWarcdaBPiEgKb6vcdYBTNgCAuBD1OiNer1ebN2/Wb3/7W73//vtasmSJurq6tHjxYknSwoULVVFRER6/ZMkStbe3a9myZfrggw+0e/duPfbYYyovLx+63yLJ1DW3R5ya+V+WpJZAt+qa20duUgAADFLU14zMnz9fJ06c0OrVq+X3+zVjxgxVV1eHL2o9evSoUlL+0zjZ2dl67bXXtGLFCk2fPl1TpkzRsmXL9OCDDw7db5Fk2joHDpHBjAMAwKSo1xkxgXVGItUe+ZcWbP7bOcf97t5r5Lls4gjMCACAvoZlnRHEhqLcDGU5HbIN8LpNp++qKcrNGMlpAQAwKMRIHEpNsclXlidJfYLkzHNfWZ5SUwbKFQAAYgcxEqfm5mdp452z5HY6Ira7nQ5u6wUAxJVhX/QMw2dufpZuynOrrrldbZ3dyhx3+tQMn4gAAOIJMRLnUlNsXKQKAIhrnKYBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYNQo0xMAJCkYslTX3K62zm5ljnOoKDdDqSk209MCAIwAYgTGVTe1qHLXAbUEusPbspwO+cryNDc/y+DMAAAjgdM0MKq6qUVLtjREhIgk+QPdWrKlQdVNLYZmBgAYKcQIjAmGLFXuOiCrn9fObKvcdUDBUH8jAACJghiBMXXN7X0+EflvlqSWQLfqmttHblIAgBFHjMCYts6BQ2Qw4wAA8YkYgTGZ4xxDOg4AEJ+IERhTlJuhLKdDA93Aa9Ppu2qKcjNGcloAgBFGjMCY1BSbfGV5ktQnSM4895Xlsd4IACQ4YgRGzc3P0sY7Z8ntjDwV43Y6tPHOWawzAgBJgEXPYNzc/CzdlOdmBVYASFLECGJCaopNnssmmp4GAMAATtMAAACjiBEAAGAUMQIAAIwiRgAAgFHECAAAMIoYAQAARhEjAADAKGIEAAAYRYwAAACjiBEAAGAUMQIAAIziu2mAIRYMWXzpHwBEgRgBhlB1U4sqdx1QS6A7vC3L6ZCvLE9z87MMzgwAYhenaYAhUt3UoiVbGiJCRJL8gW4t2dKg6qYWQzMDgNhGjABDIBiyVLnrgKx+XjuzrXLXAQVD/Y0AgORGjABDoK65vc8nIv/NktQS6FZdc/vITQoA4gQxAgyBts6BQ2Qw4wAgmRAjwBDIHOcY0nEAkEyIEWAIFOVmKMvp0EA38Np0+q6aotyMkZwWAMQFYgQYAqkpNvnK8iSpT5Ccee4ry2O9EQDoBzECDJG5+VnaeOcsuZ2Rp2LcToc23jmLdUYAYAAsegYMobn5Wbopz80KrAAQBWIEGGKpKTZ5LptoehoAEDc4TQMAAIwiRgAAgFGDipENGzYoJydHDodDxcXFqqurO6/9tm3bJpvNpnnz5g3mbQEAQAKKOka2b98ur9crn8+nhoYGFRQUqLS0VG1tbWfd7+OPP9YDDzyg6667btCTBQAAiSfqGHnyySd17733avHixcrLy9OmTZt0wQUX6Pnnnx9wn2AwqDvuuEOVlZW69NJLz/kePT096ujoiHgAGFnBkKXaI//SK43HVXvkX3zJH4BhE9XdNL29vaqvr1dFRUV4W0pKikpKSlRbWzvgfj//+c+VmZmpu+++W3/961/P+T5VVVWqrKyMZmoAhlB1U4sqdx2I+PK/LKdDvrI81ksBMOSi+mTk5MmTCgaDcrlcEdtdLpf8fn+/+7z55pt67rnntHnz5vN+n4qKCgUCgfDj2LFj0UwTwJdQ3dSiJVsa+nwLsT/QrSVbGlTd1GJoZgAS1bCuM9LZ2am77rpLmzdv1qRJk857P7vdLrvdPowzA9CfYMhS5a4D6u+EjKXTS9tX7jqgm/LcLOQGYMhEFSOTJk1SamqqWltbI7a3trbK7Xb3GX/kyBF9/PHHKisrC28LhUKn33jUKB06dEiXXXbZYOYNYBjUNbf3+UTkv1mSWgLdqmtuZ2E3AEMmqtM0aWlpKiwsVE1NTXhbKBRSTU2NPB5Pn/HTpk3Te++9p8bGxvDjW9/6lm644QY1NjYqOzv7y/8GAIZMW+fAITKYcQBwPqI+TeP1erVo0SLNnj1bRUVFWrdunbq6urR48WJJ0sKFCzVlyhRVVVXJ4XAoPz8/Yv/x48dLUp/tAMzLHOc496AoxgHA+Yg6RubPn68TJ05o9erV8vv9mjFjhqqrq8MXtR49elQpKSzsCsSjotwMZTkd8ge6+71uxKbT30JclJsx0lMDkMBslmXF/OIBHR0dcjqdCgQCSk9PNz0dIKGduZtGUkSQnLlcdeOds7i9F8B5Od9/v/kIA0CEuflZ2njnLLmdkadi3E4HIQJgWAzrrb0A4tPc/CzdlOdWXXO72jq7lTnu9KmZeLydNxiyEuL3ABIZMQKgX6kptri/fZeVZIH4wGkaAAmJlWSB+EGMAEg451pJVjq9kixf/gfEBmIEQMKJZiVZAOYRIwASDivJAvGFGAGQcFhJFogvxAiAhHNmJdmBbuC16fRdNawkC8QGYgRAwklNsclXlidJfYLkzHNfWR7rjQAxghgBkJBYSRaIHyx6BiBhsZIsEB+IEQAJjZVkgdjHaRoAiGGsJItkQIwAQIxiJVkkC2IEAGIUK8kiWRAjABCjWEkWyYIYAYAYxUqySBbcTQMAMerMSrL+QHe/143YdHrdlHhaSZZblNEfYgQAYtSZlWSXbGmQTYoIknhcSZZblDEQTtMAQAxLlJVkuUUZZ8MnIwAQ4+J9Jdlz3aJs0+lblG/Kc8fN74ShRYwAQByI55Vko7lFOV5/R3w5xAgAYFgl4i3KXIg7tIgRAMCwSrRblLkQd+hxASsAYFiduUV5oM8NbDr9j3k83KLMhbjDgxgBAAyrM7coS+oTJPF0izLfFTR8iBEAwLBLhFuU+a6g4cM1IwCAERHvtygn4oW4sYIYAQCMmHi+RTnRLsSVYueuIGIEAIDzkGjfFRRLdwVxzQgAAOchUS7ElWLvriBiBACA85QIF+LG4l1BnKYBACAK8X4hbiwuz0+MAAAQpXi+EDcW7wriNA0AAEkkFu8KIkYAAEgisbg8PzECAEASicW7gogRAACSTKzdFcQFrAAAJKFYuiuIGAEAIEnFyl1BnKYBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjBpUjGzYsEE5OTlyOBwqLi5WXV3dgGM3b96s6667ThMmTNCECRNUUlJy1vEAACC5RB0j27dvl9frlc/nU0NDgwoKClRaWqq2trZ+x+/bt08LFizQ66+/rtraWmVnZ+vmm2/W8ePHv/TkAQBA/LNZlmVFs0NxcbHmzJmj9evXS5JCoZCys7O1dOlSrVy58pz7B4NBTZgwQevXr9fChQv7HdPT06Oenp7w846ODmVnZysQCCg9PT2a6QIAAEM6OjrkdDrP+e93VJ+M9Pb2qr6+XiUlJf/5ASkpKikpUW1t7Xn9jM8++0xffPGFMjIyBhxTVVUlp9MZfmRnZ0czTQAAEEeiipGTJ08qGAzK5XJFbHe5XPL7/ef1Mx588EFNnjw5Imj+V0VFhQKBQPhx7NixaKYJAADiyKiRfLM1a9Zo27Zt2rdvnxwOx4Dj7Ha77Hb7CM4MAACYElWMTJo0SampqWptbY3Y3traKrfbfdZ9f/nLX2rNmjX685//rOnTp0c/UwAAkJCiOk2TlpamwsJC1dTUhLeFQiHV1NTI4/EMuN/jjz+uRx55RNXV1Zo9e/bgZwsAABJO1KdpvF6vFi1apNmzZ6uoqEjr1q1TV1eXFi9eLElauHChpkyZoqqqKknSL37xC61evVpbt25VTk5O+NqSsWPHauzYsUP4qwAAgHgUdYzMnz9fJ06c0OrVq+X3+zVjxgxVV1eHL2o9evSoUlL+84HLxo0b1dvbq+9///sRP8fn8+nhhx/+crMHAABxL+p1Rkw43/uUAQBA7BiWdUYAAACGGjECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGDWoGNmwYYNycnLkcDhUXFysurq6s47fsWOHpk2bJofDoauvvlp79uwZ1GQBAEDiiTpGtm/fLq/XK5/Pp4aGBhUUFKi0tFRtbW39jn/rrbe0YMEC3X333fr73/+uefPmad68eWpqavrSkwcAAPHPZlmWFc0OxcXFmjNnjtavXy9JCoVCys7O1tKlS7Vy5co+4+fPn6+uri69+uqr4W3XXHONZsyYoU2bNvX7Hj09Perp6Qk/DwQCmjp1qo4dO6b09PRopgsAAAzp6OhQdna2Tp06JafTOeC4UdH80N7eXtXX16uioiK8LSUlRSUlJaqtre13n9raWnm93ohtpaWlevnllwd8n6qqKlVWVvbZnp2dHc10AQBADOjs7By6GDl58qSCwaBcLlfEdpfLpYMHD/a7j9/v73e83+8f8H0qKioiAiYUCqm9vV0TJ06UzWaLZspJ4Ux58slR7OCYxBaOR2zheMSW4TwelmWps7NTkydPPuu4qGJkpNjtdtnt9oht48ePNzOZOJKens4fdozhmMQWjkds4XjEluE6Hmf7ROSMqC5gnTRpklJTU9Xa2hqxvbW1VW63u9993G53VOMBAEByiSpG0tLSVFhYqJqamvC2UCikmpoaeTyefvfxeDwR4yVp7969A44HAADJJerTNF6vV4sWLdLs2bNVVFSkdevWqaurS4sXL5YkLVy4UFOmTFFVVZUkadmyZbr++uv1xBNP6LbbbtO2bdv07rvv6plnnhna3ySJ2e12+Xy+Pqe2YA7HJLZwPGILxyO2xMLxiPrWXklav3691q5dK7/frxkzZuipp55ScXGxJOkb3/iGcnJy9MILL4TH79ixQw899JA+/vhjXXHFFXr88cd16623DtkvAQAA4tegYgQAAGCo8N00AADAKGIEAAAYRYwAAACjiBEAAGAUMRJH3njjDZWVlWny5Mmy2Wx9vt/HsiytXr1aWVlZGjNmjEpKSvThhx+amWwSqKqq0pw5czRu3DhlZmZq3rx5OnToUMSY7u5ulZeXa+LEiRo7dqy+973v9VkEEENj48aNmj59engVSY/Hoz/+8Y/h1zkWZq1Zs0Y2m03Lly8Pb+OYjJyHH35YNpst4jFt2rTw66aPBTESR7q6ulRQUKANGzb0+/rjjz+up556Sps2bdLbb7+tCy+8UKWlperu7h7hmSaH/fv3q7y8XH/729+0d+9effHFF7r55pvV1dUVHrNixQrt2rVLO3bs0P79+/XJJ5/ou9/9rsFZJ66LL75Ya9asUX19vd59911985vf1Le//W394x//kMSxMOmdd97Rr3/9a02fPj1iO8dkZH31q19VS0tL+PHmm2+GXzN+LCzEJUnWzp07w89DoZDldruttWvXhredOnXKstvt1u9+9zsDM0w+bW1tliRr//79lmWd/v8/evRoa8eOHeEx77//viXJqq2tNTXNpDJhwgTr2Wef5VgY1NnZaV1xxRXW3r17reuvv95atmyZZVn8fYw0n89nFRQU9PtaLBwLPhlJEM3NzfL7/SopKQlvczqdKi4uVm1trcGZJY9AICBJysjIkCTV19friy++iDgm06ZN09SpUzkmwywYDGrbtm3q6uqSx+PhWBhUXl6u2267LeL/vcTfhwkffvihJk+erEsvvVR33HGHjh49Kik2jkVMfmsvouf3+yVJLpcrYrvL5Qq/huETCoW0fPlyXXvttcrPz5d0+pikpaX1+cZpjsnwee+99+TxeNTd3a2xY8dq586dysvLU2NjI8fCgG3btqmhoUHvvPNOn9f4+xhZxcXFeuGFF3TVVVeppaVFlZWVuu6669TU1BQTx4IYAYZAeXm5mpqaIs7BYuRdddVVamxsVCAQ0EsvvaRFixZp//79pqeVlI4dO6Zly5Zp7969cjgcpqeT9G655Zbwf0+fPl3FxcW65JJL9OKLL2rMmDEGZ3Yap2kShNvtlqQ+Vz+3traGX8PwuP/++/Xqq6/q9ddf18UXXxze7na71dvbq1OnTkWM55gMn7S0NF1++eUqLCxUVVWVCgoK9Ktf/YpjYUB9fb3a2to0a9YsjRo1SqNGjdL+/fv11FNPadSoUXK5XBwTg8aPH68rr7xShw8fjom/D2IkQeTm5srtdqumpia8raOjQ2+//bY8Ho/BmSUuy7J0//33a+fOnfrLX/6i3NzciNcLCws1evToiGNy6NAhHT16lGMyQkKhkHp6ejgWBtx4441677331NjYGH7Mnj1bd9xxR/i/OSbmfPrppzpy5IiysrJi4u+D0zRx5NNPP9Xhw4fDz5ubm9XY2KiMjAxNnTpVy5cv16OPPqorrrhCubm5WrVqlSZPnqx58+aZm3QCKy8v19atW/XKK69o3Lhx4XOrTqdTY8aMkdPp1N133y2v16uMjAylp6dr6dKl8ng8uuaaawzPPvFUVFTolltu0dSpU9XZ2amtW7dq3759eu211zgWBowbNy58/dQZF154oSZOnBjezjEZOQ888IDKysp0ySWX6JNPPpHP51NqaqoWLFgQG38fI3LPDobE66+/bknq81i0aJFlWadv7121apXlcrksu91u3XjjjdahQ4fMTjqB9XcsJFm/+c1vwmM+//xz68c//rE1YcIE64ILLrC+853vWC0tLeYmncB++MMfWpdccomVlpZmXXTRRdaNN95o/elPfwq/zrEw779v7bUsjslImj9/vpWVlWWlpaVZU6ZMsebPn28dPnw4/LrpY2GzLMsamewBAADoi2tGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABG/T8K85PGA6qoxwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10/10 [00:57<00:00, 5.74s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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fj+IkRiRlZUlt9utmpqa4LbOzk69+eab8ng8BmcWuyzL0l133aVdu3bpH//4h7KyskKez8vL0/jx40OOyeHDh3Xs2DGOyRgJBALq7e3lWBhw7bXX6p133lFjY2PwMW/ePN18883Bf+eYmPPpp5/q6NGjSk9Pj4jfD07TRJFPP/1UR44cCX7d3NysxsZGpaamasaMGVq1apUefPBBXXLJJcrKytLatWs1bdo0LVq0yNykY1hpaam2bduml156ScnJycFzq06nUxMmTJDT6dRtt92msrIypaamKiUlRStWrJDH49EVV1xhePaxp7y8XNdff71mzJihrq4ubdu2Tfv379crr7zCsTAgOTk5eP1Uv3PPPVdTpkwJbueYjJ27775bxcXFuuCCC/Txxx+roqJCiYmJWrx4cWT8fozJPTsYEa+++qolacBj6dKllmWdur137dq1lsvlsux2u3Xttddahw8fNjvpGDbYsZBk/eEPfwiO+fzzz62f//zn1uTJk61zzjnH+sEPfmC1traam3QM++lPf2pdcMEFVlJSknXeeedZ1157rfW3v/0t+DzHwrz/vbXXsjgmY6mkpMRKT0+3kpKSrOnTp1slJSXWkSNHgs+bPhY2y7KssckeAACAgbhmBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABg1P8BeyWlU122PagAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/10 [00:00 THRESHOLD).astype(int)\n", + "\n", + " true_flat = true_graph.flatten()\n", + " pred_flat = predicted_graph.flatten()\n", + " \n", + " calc_f1_score = f1_score(true_flat, pred_flat)\n", + "\n", + "\n", + " datapoints[num_agents] = datapoints.get(num_agents, [])\n", + " datapoints[num_agents].append(calc_f1_score)\n", + "\n", + "\n", + " for key in datapoints.keys():\n", + " datapoints[key] = sum(datapoints[key])/len(datapoints[key])\n", + "\n", + "\n", + " x = []\n", + " y = []\n", + "\n", + " for item in datapoints.items():\n", + " x.append(item[0])\n", + " y.append(item[1])\n", + "\n", + " print(THRESHOLD)\n", + " plt.ylim(0, 1)\n", + " plt.scatter(x, y)\n", + " plt.show() \n", + "\n", + " " + ] } ], "metadata": { "kernelspec": { - "display_name": "graph-recognition-w-attn", + "display_name": "graph-recognition-w-attn (3.12.3)", "language": "python", "name": "python3" }, diff --git a/train.py b/train.py deleted file mode 100644 index 0142693..0000000 --- a/train.py +++ /dev/null @@ -1,19 +0,0 @@ -from dataclasses import dataclass - -class ModelConfig: - num_agents: int = 10 - embedding_dim: int = 64 - input_dim: int = 1 - output_dim: int = 1 - simulation_type:str = "consensus" - -class TrainConfig: - epochs: float = 100 - learning_rate: float = 1e-3 - verbose: bool = True - log: bool = True - log_epoch_interval: int = 10 - - - - diff --git a/train_and_eval.py b/train_and_eval.py index 8d6854f..3f36f0f 100644 --- a/train_and_eval.py +++ b/train_and_eval.py @@ -11,30 +11,11 @@ import uuid import pickle import sys +from config_ import TrainConfig, ModelConfig, NoiseType +from model import train_model, get_attention_fn -# Import from your existing model file -from model import ModelConfig, TrainConfig, train_model, get_attention_fn -# Define an Enum for the data source for clarity and type safety - -# Overwrite the original TrainConfig to include our new parameters - -class TrainConfig: - """Configuration for the training process.""" - learning_rate: float = 1e-3 - epochs: int = 100 - batch_size: int = 4096 - verbose: bool = False # Set to True to see epoch loss during training - log: bool = True - log_epoch_interval: int = 10 - - # --- New parameters for this script --- - data_directory:str = "datasets/" + sys.argv[1] + "_dataset" - # Threshold for converting attention scores to a binary graph - f1_threshold: float = -0.4 - - -def prepare_data_for_model(trajectories: np.ndarray, batch_size: int) -> tuple[np.ndarray, np.ndarray]: +def prepare_data_for_model(key: jax.Array, trajectories: np.ndarray, train_config: TrainConfig, batch_size: int) -> tuple[np.ndarray, np.ndarray]: """ Converts simulation trajectories into input-output pairs for the model. Input: state at time t. Target: state at time t+1. @@ -69,21 +50,19 @@ def prepare_data_for_model(trajectories: np.ndarray, batch_size: int) -> tuple[n all_inputs = all_inputs[all_indices] all_targets = all_targets[all_indices] - # for sim_idx in range(num_sims): - # # Input is state from t=0 to t=T-2 - # inputs = trajectories[sim_idx, :-1, :] - # # Target is state from t=1 to t=T-1 - # targets = trajectories[sim_idx, 1:, :] - # all_inputs.append(inputs) - # all_targets.append(targets) - - # Concatenate all pairs from all simulations - # Shape -> (num_sims * (num_timesteps - 1), num_agents) - # full_dataset_inputs = np.concatenate(all_inputs, axis=0) - # full_dataset_targets = np.concatenate(all_targets, axis=0) + if train_config.noise_type != NoiseType.NONE and train_config.noise_level > 0: + noise_shape = full_dataset_inputs.shape + if train_config.noise_type == NoiseType.NORMAL: + noise = jax.random.normal(key, noise_shape) * train_config.noise_level + elif train_config.noise_type == NoiseType.UNIFORM: + noise = jax.random.uniform( + key, noise_shape, + minval=-train_config.noise_level, + maxval=train_config.noise_level + ) + full_dataset_inputs += np.array(noise) # Add noise to inputs + - # Reshape to have a feature dimension - # Shape -> (total_samples, num_agents, 1) full_dataset_inputs = np.expand_dims(all_inputs, axis=-1) full_dataset_targets = np.expand_dims(all_targets, axis=-1) @@ -138,6 +117,7 @@ def main(): """Main script to run the training and evaluation pipeline.""" train_config = TrainConfig() + train_config.data_directory = "datasets/" + sys.argv[1] + "_dataset" # Check if the data directory exists if not os.path.isdir(train_config.data_directory): @@ -153,6 +133,8 @@ def main(): key=lambda x: int(x.split('_')[1]) ) + starter_key = jax.random.PRNGKey(49) + for agent_dir_name in agent_dirs: agent_dir_path = os.path.join(train_config.data_directory, agent_dir_name) @@ -160,6 +142,13 @@ def main(): graph_files = sorted([f for f in os.listdir(agent_dir_path) if f.endswith(".json")]) + results_dir = os.path.join(agent_dir_path, "results") + os.makedirs(results_dir, exist_ok=True) + + subdir = str(train_config.noise_type) + sub_results_dir = os.path.join(results_dir, subdir) + os.makedirs(sub_results_dir, exist_ok=True) + print(f"\nProcessing {len(graph_files)} graphs for {agent_dir_name}...") for graph_file_name in tqdm(graph_files, desc=f"Training on {agent_dir_name}"): @@ -175,7 +164,8 @@ def main(): # np.random.shuffle(trajectories) # trajectories = np.random.shuffle(trajectories) true_graph = np.array(data['adjacency_matrix']) - inputs, targets = prepare_data_for_model(trajectories, train_config.batch_size) + starter_key, data_key = jax.random.split(starter_key) + inputs, targets = prepare_data_for_model(data_key, trajectories, train_config, train_config.batch_size) # 2. Configure Model num_agents = trajectories.shape[-1] @@ -228,28 +218,34 @@ def main(): "embedding_dim": model_config.embedding_dim }, # This is correct because TrainConfig is a dataclass - "training": vars(train_config) - } + "training": { + "epochs" : train_config.epochs, + "learning_rate" : train_config.learning_rate, + "verbose" : train_config.verbose, + "log" : train_config.log, + "log_epoch_interval" : train_config.log_epoch_interval, + "noise_type": str(train_config.noise_type), + "noise_level": train_config.noise_level, + + } + }, + "raw_attention": np.array(get_attention_fn(final_params, model_config)).tolist() } result_final_params = final_params + model_path = os.path.join(sub_results_dir, "model_params") + os.makedirs(model_path, exist_ok=True) + with open(os.path.join(model_path,"model_for_" + graph_file_name + ".pkl"), "wb") as f: + pickle.dump(final_params, f) all_results_for_agent.append(result_log) - # 6. Save aggregated results for this agent count - results_dir = os.path.join(agent_dir_path, "results") - os.makedirs(results_dir, exist_ok=True) - - output_file = os.path.join(results_dir, "summary_results.json") + output_file = os.path.join(sub_results_dir, "summary_results.json") with open(output_file, 'w') as f: json.dump(all_results_for_agent, f, indent=2) - model_path = os.path.join(results_dir, "model_params") - os.makedirs(model_path, exist_ok=True) - with open(os.path.join(model_path,"model_params" + ".pkl"), "wb") as f: - pickle.dump(final_params, f) print(f"✅ Results for {agent_dir_name} saved to {output_file}")