diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..c4cb545ce9c9bbbff6607aa2f92b4a57a0851402 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +*.json filter=lfs diff=lfs merge=lfs -text diff --git a/iris/realtabformer/4/eval.csv b/iris/realtabformer/4/eval.csv new file mode 100644 index 0000000000000000000000000000000000000000..e1511edc7a253703771f823dc2e3a8f48e33c6cc --- /dev/null +++ b/iris/realtabformer/4/eval.csv @@ -0,0 +1,2 @@ +,avg_g_cos_loss,avg_g_mag_loss,avg_loss,grad_duration,grad_mae,grad_mape,grad_rmse,mean_pred_loss,pred_duration,pred_mae,pred_mape,pred_rmse,pred_std,std_loss,total_duration +realtabformer,0.0,0.04321678162552416,0.009664140045642852,0.10675811767578125,0.171650692820549,1.9147021770477295,0.44130414724349976,6.533910345751792e-05,0.22103667259216309,0.07334895431995392,0.15602123737335205,0.09830635786056519,0.2070867270231247,0.02473612129688263,0.32779479026794434 diff --git a/iris/realtabformer/4/history.csv b/iris/realtabformer/4/history.csv new file mode 100644 index 0000000000000000000000000000000000000000..ea0dcb0ae456e2cc8a2896dd280671b6cd9a82c3 --- /dev/null +++ b/iris/realtabformer/4/history.csv @@ -0,0 +1,20 @@ +,avg_role_model_loss_train,avg_role_model_std_loss_train,avg_role_model_mean_pred_loss_train,avg_role_model_g_mag_loss_train,avg_role_model_g_cos_loss_train,avg_non_role_model_g_mag_loss_train,avg_non_role_model_g_cos_loss_train,avg_non_role_model_embed_loss_train,avg_loss_train,n_size_train,n_batch_train,duration_train,duration_batch_train,duration_size_train,avg_pred_std_train,avg_role_model_loss_test,avg_role_model_std_loss_test,avg_role_model_mean_pred_loss_test,avg_role_model_g_mag_loss_test,avg_role_model_g_cos_loss_test,avg_non_role_model_g_mag_loss_test,avg_non_role_model_g_cos_loss_test,avg_non_role_model_embed_loss_test,avg_loss_test,n_size_test,n_batch_test,duration_test,duration_batch_test,duration_size_test,avg_pred_std_test +0,0.262053121478291,42.03971320394283,0.15260134892572896,4.023151628127009,0.0,0.0,0.0,0.0,0.27091049326132544,805,26,25.825392961502075,0.9932843446731567,0.03208123349254916,0.12801932762018764,0.03481296509504318,11.007993800299507,0.000801574794750195,0.0,0.0,0.0,0.0,0.0,0.03481296509504318,200,7,5.622534990310669,0.8032192843300956,0.028112674951553344,0.11246319966656822 +1,0.034984138779203346,3.026425369237796,0.0010741519947067735,2.1780750276139065,0.0,0.0,0.0,0.0,0.035656031355354355,805,26,25.652106046676636,0.9866194633337168,0.0318659702443188,0.22230032172340614,0.01774320624768734,0.06842918456199445,0.0003401846648193896,0.0,0.0,0.0,0.0,0.0,0.01774320624768734,200,7,5.526260137557983,0.7894657339368548,0.027631300687789916,0.2535323479345867 +2,0.04949562128239907,1.1212227566813033,0.007996068239032712,2.008302690403432,0.0,0.0,0.0,0.0,0.05031982440478313,805,26,25.32590961456299,0.9740734467139611,0.03146075728517141,0.2314279844554571,0.018901596069335936,0.06630353892355093,0.0007084914449058033,0.0,0.0,0.0,0.0,0.0,0.018901596069335936,200,7,5.525216817855835,0.7893166882651192,0.027626084089279176,0.2823398347411837 +3,0.02409061085178245,1.216978319347478,0.0008497662318766303,0.741790370596862,0.0,0.0,0.0,0.0,0.024469380737831874,805,26,25.316158771514893,0.9736984142890344,0.031448644436664466,0.22752147941635206,0.043339898884296416,0.7571008886609759,0.004266127767041325,0.0,0.0,0.0,0.0,0.0,0.043339898884296416,200,7,5.542306423187256,0.7917580604553223,0.02771153211593628,0.40473173771585735 +4,0.020230659346171416,0.9529166943214548,0.0007750360249622685,0.5286644693487179,0.0,0.0,0.0,0.0,0.020741140796160847,805,26,25.564849138259888,0.9832634283946111,0.03175757656926694,0.23694497576126686,0.02167721152305603,1.9218286908414615,0.0003455080660933163,0.0,0.0,0.0,0.0,0.0,0.02167721152305603,200,7,5.491510629653931,0.7845015185219901,0.027457553148269653,0.198296063712665 +5,0.019746097273436253,2.2252418456348377,0.0005238168416495987,0.24918978849182957,0.0,0.0,0.0,0.0,0.020108103607087077,805,26,25.22130036354065,0.9700500139823327,0.031330807905019444,0.20685191051318094,0.01568814365193248,3.9867110635553087,0.00012256629364856052,0.0,0.0,0.0,0.0,0.0,0.01568814365193248,200,7,5.431295156478882,0.7758993080684117,0.02715647578239441,0.15675999862807138 +6,0.014242643395566051,0.8401105975269905,0.00023192750485809174,0.22217477223147516,0.0,0.0,0.0,0.0,0.014493430692771947,805,26,25.72674012184143,0.9894900046862088,0.03195868338116948,0.21621203193297753,0.014185816459357738,0.9034678495871569,9.851353324847878e-05,0.0,0.0,0.0,0.0,0.0,0.014185816459357738,200,7,5.769970655441284,0.8242815222058978,0.02884985327720642,0.20022195151873998 +7,0.011760767369374911,0.6726950361377686,0.00014136829851641038,0.18792922052537434,0.0,0.0,0.0,0.0,0.011980177557547085,805,26,26.071171522140503,1.0027373662361732,0.0323865484747087,0.21536388935951087,0.013416027016937733,0.0549252780495278,0.00036648985391366293,0.0,0.0,0.0,0.0,0.0,0.013416027016937733,200,7,5.792346954345703,0.8274781363351005,0.028961734771728517,0.2482785646404539 +8,0.011222473407592278,0.29053532354317635,0.00021427089243657093,0.17988548101105306,0.0,0.0,0.0,0.0,0.011425864025487663,805,26,26.029921054840088,1.0011508098015418,0.032335305658186445,0.22455547749996185,0.009740338027477265,1.0211102825456433,0.00013113710596371675,0.0,0.0,0.0,0.0,0.0,0.009740338027477265,200,7,5.780109405517578,0.8257299150739398,0.02890054702758789,0.19439016708305903 +9,0.009785023380232894,0.6471839001258979,0.00011955478023636438,0.18390542050326092,0.0,0.0,0.0,0.0,0.009953600068732818,805,26,27.051364421844482,1.0404370931478648,0.03360417940601799,0.2196023017168045,0.010303158052265645,0.37253495334139836,0.00036531296410430514,0.0,0.0,0.0,0.0,0.0,0.010303158052265645,200,7,5.837303638458252,0.8339005197797503,0.02918651819229126,0.2303677499294281 +10,0.00921949804384516,0.3312310958202803,0.00015767824511032634,0.17671728371092993,0.0,0.0,0.0,0.0,0.009374944888842033,805,26,25.234273672103882,0.9705489873886108,0.03134692381627811,0.21830723921840006,0.009038241431117058,0.19912816490978003,0.0001807974881012342,0.0,0.0,0.0,0.0,0.0,0.009038241431117058,200,7,5.608002424240112,0.8011432034628732,0.028040012121200563,0.2248043715953827 +11,0.008441703940122764,0.21612058305198353,0.00014240713286038027,0.18279523103503706,0.0,0.0,0.0,0.0,0.008577339318783387,805,26,25.226746559143066,0.9702594830439641,0.03133757336539511,0.22684718038027102,0.009298504171893,0.6596417664799706,0.00012014204570732545,0.0,0.0,0.0,0.0,0.0,0.009298504171893,200,7,5.577890634536743,0.7968415192195347,0.027889453172683716,0.20590212515422276 +12,0.007844212994858716,0.20350377502696715,0.00014020851614410693,0.15811452143680976,0.0,0.0,0.0,0.0,0.007975891054324481,805,26,25.306915521621704,0.9733429046777579,0.031437162138660504,0.22834612314517683,0.007574599292129278,0.11346036035476052,0.00019232832368302422,0.0,0.0,0.0,0.0,0.0,0.007574599292129278,200,7,5.568081855773926,0.7954402651105609,0.02784040927886963,0.23240527723516738 +13,0.007856522089373668,0.3197678499754707,0.00011898457411255815,0.18232270686060006,0.0,0.0,0.0,0.0,0.007994596117540546,805,26,25.34485673904419,0.9748021822709304,0.03148429408576918,0.23052497265430597,0.009356324281543493,0.2850514717449966,0.00034416652171330496,0.0,0.0,0.0,0.0,0.0,0.009356324281543493,200,7,5.576940298080444,0.7967057568686349,0.02788470149040222,0.22938926730837142 +14,0.008321552020815774,0.3747452772849311,0.0001253042608550741,0.15760444722930836,0.0,0.0,0.0,0.0,0.008464072195246168,805,26,25.33328127861023,0.9743569722542396,0.03146991463181395,0.2267896538743606,0.009856255240738392,0.15701400799610252,0.0002124845949401788,0.0,0.0,0.0,0.0,0.0,0.009856255240738392,200,7,5.592310190200806,0.7989014557429722,0.027961550951004027,0.22606208281857626 +15,0.007768653050030333,0.32547449464506756,0.00013297631684401482,0.1682190112168004,0.0,0.0,0.0,0.0,0.007906112581294793,805,26,25.185524225234985,0.968674008662884,0.031286365497186316,0.22503775988633817,0.00927560092881322,0.9194349545453276,0.0001129324381679453,0.0,0.0,0.0,0.0,0.0,0.00927560092881322,200,7,5.617547035217285,0.802506719316755,0.028087735176086426,0.19207145486559188 +16,0.006970763741124722,0.2939171365458003,8.314201257741922e-05,0.15292116774257666,0.0,0.0,0.0,0.0,0.0070910498593870245,805,26,25.20391869544983,0.9693814882865319,0.03130921577074513,0.22355326666281775,0.00958359906449914,0.8046079389750957,0.00015062226586735506,0.0,0.0,0.0,0.0,0.0,0.00958359906449914,200,7,5.593451499938965,0.7990644999912807,0.027967257499694823,0.19694859428065165 +17,0.007007337359260328,0.2535157364962314,9.974229465821189e-05,0.15179737287093392,0.0,0.0,0.0,0.0,0.007126074664074904,805,26,25.76202368736267,0.9908470648985642,0.03200251389734493,0.2254649091225404,0.006277609076350927,0.14356680174491235,0.00013798014311760197,0.0,0.0,0.0,0.0,0.0,0.006277609076350927,200,7,5.7300498485565186,0.8185785497937884,0.028650249242782592,0.22262855087007796 +18,0.007534695684823774,0.3208546875018958,0.00010450999359942362,0.19085259715222425,0.0,0.0,0.0,0.0,0.007654703085409095,805,26,25.956060647964478,0.9983100249217107,0.03224355359995587,0.22178831610542077,0.009184504207223654,1.1635616980493069,0.00015264103557683484,0.0,0.0,0.0,0.0,0.0,0.009184504207223654,200,7,5.710332632064819,0.8157618045806885,0.028551663160324096,0.19095393376691 diff --git a/iris/realtabformer/4/logs/avg_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.17 b/iris/realtabformer/4/logs/avg_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.17 new file mode 100644 index 0000000000000000000000000000000000000000..a64f578886b2dcc915ee2ae2cd9d1c8c9d5d6365 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.17 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8b5a674fddab20d5405d5e804855fbea46257a5b6aa510709331c91c4e1f5b0 +size 960 diff --git a/iris/realtabformer/4/logs/avg_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.18 b/iris/realtabformer/4/logs/avg_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.18 new file mode 100644 index 0000000000000000000000000000000000000000..67551f9b90d3a75645a97a462b173d58198ab7d4 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.18 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0211f4732475050df497f7a71477098b92ca27e250e379d930ff9017546e6835 +size 960 diff --git a/iris/realtabformer/4/logs/avg_non_role_model_embed_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.15 b/iris/realtabformer/4/logs/avg_non_role_model_embed_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.15 new file mode 100644 index 0000000000000000000000000000000000000000..6460f01a44de6d675baa2b0b483071a95de31f62 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_non_role_model_embed_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.15 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4035a8fc30e760c794d11143680159a9e7d6f980549187a9ee4e8f17d658427c +size 1359 diff --git a/iris/realtabformer/4/logs/avg_non_role_model_embed_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.16 b/iris/realtabformer/4/logs/avg_non_role_model_embed_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.16 new file mode 100644 index 0000000000000000000000000000000000000000..80c277562afe468e2e222e9eb820c89ca589cc6c --- /dev/null +++ b/iris/realtabformer/4/logs/avg_non_role_model_embed_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.16 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e4c54edabbc2ed604b10b1956f601e3f629b58542a5b139d13e29fe823b7221 +size 1359 diff --git a/iris/realtabformer/4/logs/avg_non_role_model_g_cos_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.13 b/iris/realtabformer/4/logs/avg_non_role_model_g_cos_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.13 new file mode 100644 index 0000000000000000000000000000000000000000..0c3e468d5951fe7315a5cf91e571366eca3c8881 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_non_role_model_g_cos_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.13 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59d3949661fcefdaadd8a7bb2ff5829d50dff8ad0a95e750ac3e527a2518b31b +size 1359 diff --git a/iris/realtabformer/4/logs/avg_non_role_model_g_cos_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.14 b/iris/realtabformer/4/logs/avg_non_role_model_g_cos_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.14 new file mode 100644 index 0000000000000000000000000000000000000000..06ccb473e1010de4c23da6f5f8b07a50c720cd11 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_non_role_model_g_cos_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.14 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c5305874eecba14bbb0f33d0e7904af458de1716ff815dd6b39f2211fdc68cd +size 1359 diff --git a/iris/realtabformer/4/logs/avg_non_role_model_g_mag_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.11 b/iris/realtabformer/4/logs/avg_non_role_model_g_mag_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.11 new file mode 100644 index 0000000000000000000000000000000000000000..e7f1b9fd45df9dcc2e119bfad9127e657c1e9bd6 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_non_role_model_g_mag_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.11 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fa854c7597061e904e2edc2bba149898579f52d1f3f02a651f7ba0fd87abcdf +size 1359 diff --git a/iris/realtabformer/4/logs/avg_non_role_model_g_mag_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.12 b/iris/realtabformer/4/logs/avg_non_role_model_g_mag_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.12 new file mode 100644 index 0000000000000000000000000000000000000000..84ffc3a008f66bf29a585e4baf2e160cac74b70e --- /dev/null +++ b/iris/realtabformer/4/logs/avg_non_role_model_g_mag_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.12 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65a535e5507f97a88316f0f0c1493dbb1841c556bd012f16e7ca5cb8aacffd1b +size 1359 diff --git a/iris/realtabformer/4/logs/avg_pred_std_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.29 b/iris/realtabformer/4/logs/avg_pred_std_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.29 new file mode 100644 index 0000000000000000000000000000000000000000..796f4b257601671a1d5d0e6b3a217619cb32ebd3 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_pred_std_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.29 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe94a9ade25f2c2e0c602c2e47287c8caed6100484b69f08096ec0c6eefcd444 +size 1036 diff --git a/iris/realtabformer/4/logs/avg_pred_std_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.30 b/iris/realtabformer/4/logs/avg_pred_std_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.30 new file mode 100644 index 0000000000000000000000000000000000000000..c2cf8800de53378a19400ea11dd08333029fa783 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_pred_std_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.30 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1cd6474aa856251cfff229faebad193367870c4b8ffdca9e33a6559a91ca32f +size 1036 diff --git a/iris/realtabformer/4/logs/avg_role_model_g_cos_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.9 b/iris/realtabformer/4/logs/avg_role_model_g_cos_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.9 new file mode 100644 index 0000000000000000000000000000000000000000..3548bd3d7b66d64192f3533456414adc114d272d --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_g_cos_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.9 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15138002dc3ef9674dd2943d694d082bc873333abf9bf39e24bc022c9df971ae +size 1283 diff --git a/iris/realtabformer/4/logs/avg_role_model_g_cos_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.10 b/iris/realtabformer/4/logs/avg_role_model_g_cos_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.10 new file mode 100644 index 0000000000000000000000000000000000000000..4653f261339c27d13be9eab20f27656b7376349c --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_g_cos_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.10 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9694e70ea61f51da569fab2cea058750261a5e71569d3366780dfe98eb0fef39 +size 1283 diff --git a/iris/realtabformer/4/logs/avg_role_model_g_mag_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.7 b/iris/realtabformer/4/logs/avg_role_model_g_mag_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.7 new file mode 100644 index 0000000000000000000000000000000000000000..96ab50ac62f57c8aac20d59ec697123c64aac331 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_g_mag_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.7 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20b8d33500c21b59c6f0994118405465bb7eecef9c8e33ace7e48fee299a1fe6 +size 1283 diff --git a/iris/realtabformer/4/logs/avg_role_model_g_mag_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.8 b/iris/realtabformer/4/logs/avg_role_model_g_mag_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.8 new file mode 100644 index 0000000000000000000000000000000000000000..b1d7e5beb1dc592200c765edf654d521316b8f49 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_g_mag_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.8 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce16260f5c5fbfbd3c4ae2c3aae506cfa3dd6bef82bbb5fd79c8fa6b400519bb +size 1283 diff --git a/iris/realtabformer/4/logs/avg_role_model_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.1 b/iris/realtabformer/4/logs/avg_role_model_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.1 new file mode 100644 index 0000000000000000000000000000000000000000..50837d6f152b0e1de7dc2bfc6101418c84b3eb2c --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.1 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:395da8d5cc199b80b4af08ed8954feb18381bc4872b0f2ccdcd9f9b29817a3ef +size 1169 diff --git a/iris/realtabformer/4/logs/avg_role_model_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.2 b/iris/realtabformer/4/logs/avg_role_model_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.2 new file mode 100644 index 0000000000000000000000000000000000000000..6d833acebb3a506a8f8b39ce0aa1eb5fefb09ef4 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4ef52655e35c3668e024d21b7e962bbd64068b473672be49ba96387b6a9239 +size 1169 diff --git a/iris/realtabformer/4/logs/avg_role_model_mean_pred_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.5 b/iris/realtabformer/4/logs/avg_role_model_mean_pred_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.5 new file mode 100644 index 0000000000000000000000000000000000000000..a4a0ecc2bb5809c0572d392e80c3d1465f3985bc --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_mean_pred_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.5 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfa46373029a34566eace06ed0b3e107d04911dbcc6f5c5f6cfc7fe671e6b20c +size 1359 diff --git a/iris/realtabformer/4/logs/avg_role_model_mean_pred_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.6 b/iris/realtabformer/4/logs/avg_role_model_mean_pred_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.6 new file mode 100644 index 0000000000000000000000000000000000000000..390e9e3cdc7c52c0dc65fe3ff48ae96a277a1f5f --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_mean_pred_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:766f893b6d7f47cb7cfe2d717ae54bb0f0b56e9ce958d9cf8a58b6910ad7ba12 +size 1359 diff --git a/iris/realtabformer/4/logs/avg_role_model_std_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.3 b/iris/realtabformer/4/logs/avg_role_model_std_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.3 new file mode 100644 index 0000000000000000000000000000000000000000..e5321e848149572c92ad7db571c71200fcb68e00 --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_std_loss_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:083cf2b1593585d7567636c96b0b0fa0bebf44b2fa94eee67de8b7d0b52245de +size 1245 diff --git a/iris/realtabformer/4/logs/avg_role_model_std_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.4 b/iris/realtabformer/4/logs/avg_role_model_std_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.4 new file mode 100644 index 0000000000000000000000000000000000000000..455fb1c912fe7483264a9bbca9feb60504eb7ebd --- /dev/null +++ b/iris/realtabformer/4/logs/avg_role_model_std_loss_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b3a31c9964635f295a2a026d6e16768d7d47d6855bee581f73fe5cccd2f307f +size 1245 diff --git a/iris/realtabformer/4/logs/duration_batch_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.25 b/iris/realtabformer/4/logs/duration_batch_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.25 new file mode 100644 index 0000000000000000000000000000000000000000..ad5b29e6833bb0817487d9e470870348c42d6735 --- /dev/null +++ b/iris/realtabformer/4/logs/duration_batch_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.25 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ec2fc8303b9d6a451828debe395603f4a9993a26e2642d4378f5575275ebf2 +size 1074 diff --git a/iris/realtabformer/4/logs/duration_batch_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.26 b/iris/realtabformer/4/logs/duration_batch_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.26 new file mode 100644 index 0000000000000000000000000000000000000000..2eb3b97b2ddd33aa4d1c3ab9ce6ff94bf6a58433 --- /dev/null +++ b/iris/realtabformer/4/logs/duration_batch_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.26 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9476e2c3972972ee5d3366cb4ada2fa589b78ce82983efb87723050c127d226 +size 1074 diff --git a/iris/realtabformer/4/logs/duration_size_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.27 b/iris/realtabformer/4/logs/duration_size_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.27 new file mode 100644 index 0000000000000000000000000000000000000000..f5d663c97e71a3e707a61d70d1bc7bed4ebaa651 --- /dev/null +++ b/iris/realtabformer/4/logs/duration_size_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.27 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002c201fd8314d07ff2da2862b6d0e8c89f43fd457c8007c7af67b4579ef2bb +size 1055 diff --git a/iris/realtabformer/4/logs/duration_size_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.28 b/iris/realtabformer/4/logs/duration_size_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.28 new file mode 100644 index 0000000000000000000000000000000000000000..c301066cdce2d40ac9ba053043c9fc64b892a26c --- /dev/null +++ b/iris/realtabformer/4/logs/duration_size_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.28 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06c226969816747f3198483f46cffa3d1983326dbe53c4ccbe3126bbfad12eac +size 1055 diff --git a/iris/realtabformer/4/logs/duration_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.23 b/iris/realtabformer/4/logs/duration_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.23 new file mode 100644 index 0000000000000000000000000000000000000000..f556b49079a670e4efd94dced867c6c6d130923a --- /dev/null +++ b/iris/realtabformer/4/logs/duration_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.23 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0e85de7e4e94a4b044fc083ba0a89137e972147a8ea2f7d9a7da2721b7c3a51 +size 960 diff --git a/iris/realtabformer/4/logs/duration_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.24 b/iris/realtabformer/4/logs/duration_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.24 new file mode 100644 index 0000000000000000000000000000000000000000..7cce93b1bd7a0ecd6ba9619e35ef70992641a48a --- /dev/null +++ b/iris/realtabformer/4/logs/duration_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.24 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f78f5c9f5e7e4834c348906594d480e2e6523e7612f870f71e8b70bc37eae39f +size 960 diff --git a/iris/realtabformer/4/logs/events.out.tfevents.1721738926.0e0da8a72f77.1463.0 b/iris/realtabformer/4/logs/events.out.tfevents.1721738926.0e0da8a72f77.1463.0 new file mode 100644 index 0000000000000000000000000000000000000000..73df1e028119fc5f238194b703fd0e0c7c43ee06 --- /dev/null +++ b/iris/realtabformer/4/logs/events.out.tfevents.1721738926.0e0da8a72f77.1463.0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07487f18077d98d19834a1153e4c75a9ef342d1b4d226cad5613e23b7480006b +size 88 diff --git a/iris/realtabformer/4/logs/n_batch_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.21 b/iris/realtabformer/4/logs/n_batch_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.21 new file mode 100644 index 0000000000000000000000000000000000000000..0293bab7642ce566b998422c0519f9ec4753b7ce --- /dev/null +++ b/iris/realtabformer/4/logs/n_batch_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.21 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:049b2be3b3e5263c45683fa3228ef4e3bd8134f8943ea238c449f2393ff5d876 +size 941 diff --git a/iris/realtabformer/4/logs/n_batch_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.22 b/iris/realtabformer/4/logs/n_batch_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.22 new file mode 100644 index 0000000000000000000000000000000000000000..69f1b339ba0279ebc5eb5a10bd3354b7a382deca --- /dev/null +++ b/iris/realtabformer/4/logs/n_batch_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.22 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b34a2de77b6bf6547c3527e62f5c70be8a64912d87cef2fe9fb2d39f4cf1b93 +size 941 diff --git a/iris/realtabformer/4/logs/n_size_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.19 b/iris/realtabformer/4/logs/n_size_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.19 new file mode 100644 index 0000000000000000000000000000000000000000..db5f8975628b120e254bcfae1738bbe66dca9e72 --- /dev/null +++ b/iris/realtabformer/4/logs/n_size_train/events.out.tfevents.1721738958.0e0da8a72f77.1463.19 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e54ae0810f17a91575f6a8d6545c6d092d7464e1dc7d286a75bc84b203103163 +size 922 diff --git a/iris/realtabformer/4/logs/n_size_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.20 b/iris/realtabformer/4/logs/n_size_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.20 new file mode 100644 index 0000000000000000000000000000000000000000..d90ad12c738f74a889e0403f2ae4b941158c4ed7 --- /dev/null +++ b/iris/realtabformer/4/logs/n_size_val/events.out.tfevents.1721738958.0e0da8a72f77.1463.20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff8fdad219f96b59e8027ce77709861c0ff92619138ce655d33bf1e3c0e4b0eb +size 922 diff --git a/iris/realtabformer/4/logs/train_avg_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.39 b/iris/realtabformer/4/logs/train_avg_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.39 new file mode 100644 index 0000000000000000000000000000000000000000..9f82593b598ce969279cf540dade49c7c9c69a93 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.39 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f30a8c55ee73a88dfb0abda787c2f02822f23e60065c6c0b434e46a6542748d +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_non_role_model_embed_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.38 b/iris/realtabformer/4/logs/train_avg_non_role_model_embed_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.38 new file mode 100644 index 0000000000000000000000000000000000000000..edb5e125da8fc225612aaaa93612cea7133e0121 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_non_role_model_embed_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.38 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87a3c4687d3917d56a3d4f690da78288fc6616d07759e36f78cb161e7f88e3aa +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_non_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.37 b/iris/realtabformer/4/logs/train_avg_non_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.37 new file mode 100644 index 0000000000000000000000000000000000000000..c389c185bea6ab58f82acb7c39fc366dbe86e8a0 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_non_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.37 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cad45eea21f18bbcc3943b01913bf11f55601cd6b253bc1b79b15b35d5eb726 +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_non_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.36 b/iris/realtabformer/4/logs/train_avg_non_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.36 new file mode 100644 index 0000000000000000000000000000000000000000..02efdddd3c2dd09823483458e791566ced8825d8 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_non_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.36 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adb496a828ba1e23d804775933f533101df7fc113557a51071005a479e491d6c +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_pred_std/events.out.tfevents.1721738958.0e0da8a72f77.1463.45 b/iris/realtabformer/4/logs/train_avg_pred_std/events.out.tfevents.1721738958.0e0da8a72f77.1463.45 new file mode 100644 index 0000000000000000000000000000000000000000..1d1063c5442e259573085608cdadf070705b5b59 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_pred_std/events.out.tfevents.1721738958.0e0da8a72f77.1463.45 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30f614fec728ca758636636b8ef51d2d5457070e0173fa47e8462647d07c1cac +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.35 b/iris/realtabformer/4/logs/train_avg_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.35 new file mode 100644 index 0000000000000000000000000000000000000000..8dfd46416854b08738c139ac485ff940d747e7f2 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.35 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e1a5ccff3e4e38bf1c0aff3b9efc2a3b7ae98e0e56dfe81ff9959b8a8acab74 +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.34 b/iris/realtabformer/4/logs/train_avg_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.34 new file mode 100644 index 0000000000000000000000000000000000000000..ee0e5e263a15d89b5e4aa7ff8d0243254389b50c --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.34 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d5022d2d32aac363ec12126a2f0701e20baed7aa9590e4ce4d8ad793c594906 +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_role_model_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.31 b/iris/realtabformer/4/logs/train_avg_role_model_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.31 new file mode 100644 index 0000000000000000000000000000000000000000..4ca97ff6f340ed2ededc028952b3f585da07865d --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_role_model_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.31 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7c6174d16431168339267493cb75c4a7d72a57ba8d1634a1819326d75417cfd +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_role_model_mean_pred_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.33 b/iris/realtabformer/4/logs/train_avg_role_model_mean_pred_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.33 new file mode 100644 index 0000000000000000000000000000000000000000..f732737601f7f991387e9cb89d94268e14e805dc --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_role_model_mean_pred_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.33 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7117841006a9da405e8d6f3697040d2e2baad1741e6cb5364caf0449fe4438a8 +size 903 diff --git a/iris/realtabformer/4/logs/train_avg_role_model_std_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.32 b/iris/realtabformer/4/logs/train_avg_role_model_std_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.32 new file mode 100644 index 0000000000000000000000000000000000000000..2d1f0c5167c1085e3a1cf3dd177d6614d71619b8 --- /dev/null +++ b/iris/realtabformer/4/logs/train_avg_role_model_std_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77e6915e583177314eeddcf66418b61dd13e8fbec973f6fa431c4a30ab51141d +size 903 diff --git a/iris/realtabformer/4/logs/train_duration/events.out.tfevents.1721738958.0e0da8a72f77.1463.42 b/iris/realtabformer/4/logs/train_duration/events.out.tfevents.1721738958.0e0da8a72f77.1463.42 new file mode 100644 index 0000000000000000000000000000000000000000..5bc4c0f348337b96180c80e49f12e8e66360a5de --- /dev/null +++ b/iris/realtabformer/4/logs/train_duration/events.out.tfevents.1721738958.0e0da8a72f77.1463.42 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70fd05f23890f7fb2d4efed417cb9eb07dfa247af16571460ed278b43cfb61ce +size 903 diff --git a/iris/realtabformer/4/logs/train_duration_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.43 b/iris/realtabformer/4/logs/train_duration_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.43 new file mode 100644 index 0000000000000000000000000000000000000000..6809c6226a553f215b21721dd2d751fd94f378e4 --- /dev/null +++ b/iris/realtabformer/4/logs/train_duration_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.43 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49253293426e2369016316ea1b3adb9188b6f3c09237ecac395d991724ad7caa +size 903 diff --git a/iris/realtabformer/4/logs/train_duration_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.44 b/iris/realtabformer/4/logs/train_duration_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.44 new file mode 100644 index 0000000000000000000000000000000000000000..c96a03277dc5d9c2677a4d1f1317a5398f8bf523 --- /dev/null +++ b/iris/realtabformer/4/logs/train_duration_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.44 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da59113a753324b26f261d975e65e9d05e605443ac27ca05538de5d13f203f1d +size 903 diff --git a/iris/realtabformer/4/logs/train_n_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.41 b/iris/realtabformer/4/logs/train_n_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.41 new file mode 100644 index 0000000000000000000000000000000000000000..4c71cd63d723112491afbefb583fb497f3c7a8f1 --- /dev/null +++ b/iris/realtabformer/4/logs/train_n_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.41 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82568def4c978b3f7858039baf39ad8f14ec9137a95f56144d4d6cc9f94e0105 +size 903 diff --git a/iris/realtabformer/4/logs/train_n_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.40 b/iris/realtabformer/4/logs/train_n_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.40 new file mode 100644 index 0000000000000000000000000000000000000000..95a2c6080a1f4f22c640ed182cb384667d692599 --- /dev/null +++ b/iris/realtabformer/4/logs/train_n_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.40 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44a49c22706d99f5391669f0132c5c3bc2d08f51da6174ad4398a69b5a88e477 +size 903 diff --git a/iris/realtabformer/4/logs/val_avg_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.54 b/iris/realtabformer/4/logs/val_avg_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.54 new file mode 100644 index 0000000000000000000000000000000000000000..e36f1008b30799384e8b750ee63cfbf517180450 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.54 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c2babb2b461136f66a0ca48457724487a18e1e4fb3b5e598e2cce1712b5e5fb +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_non_role_model_embed_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.53 b/iris/realtabformer/4/logs/val_avg_non_role_model_embed_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.53 new file mode 100644 index 0000000000000000000000000000000000000000..a7d81853a5f598d17e5473b2bd739dfc76404248 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_non_role_model_embed_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.53 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112ae6e8d73f1b481243af83fe1065334510dfdb0047ca94a9f48f2021003198 +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_non_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.52 b/iris/realtabformer/4/logs/val_avg_non_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.52 new file mode 100644 index 0000000000000000000000000000000000000000..495632f2faf8c2418b2442a94ede0bf19ee73967 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_non_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.52 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad57204c34f85849f80f4575fcc32fccfca7b51f73f075735c2fbc23b86d3cd +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_non_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.51 b/iris/realtabformer/4/logs/val_avg_non_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.51 new file mode 100644 index 0000000000000000000000000000000000000000..356c313f86590078869f46cdbe9f8438c65f5a74 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_non_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.51 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:211f4971d6c42082437cb46a059058f0400fd5c6ee421fee3f61e528fbe8a4c4 +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_pred_std/events.out.tfevents.1721738958.0e0da8a72f77.1463.60 b/iris/realtabformer/4/logs/val_avg_pred_std/events.out.tfevents.1721738958.0e0da8a72f77.1463.60 new file mode 100644 index 0000000000000000000000000000000000000000..c48d34acf9542e05f58c8f928cb1be97ab876c73 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_pred_std/events.out.tfevents.1721738958.0e0da8a72f77.1463.60 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2337ebc32fcf6f0a3a8590121636f3fbb209f19eb086398efca891599ad07d6 +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.50 b/iris/realtabformer/4/logs/val_avg_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.50 new file mode 100644 index 0000000000000000000000000000000000000000..4f8be91936ca4df2be09d111dc85733fdba78ed9 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_role_model_g_cos_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.50 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efe9263b9217d6b84b32ab64485f44922ab0ee63a6859ad794bf2c4346e0d63c +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.49 b/iris/realtabformer/4/logs/val_avg_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.49 new file mode 100644 index 0000000000000000000000000000000000000000..afdbcb3f2b748b115a781a022a262c860234deae --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_role_model_g_mag_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.49 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c56aae97c12ccdc27960f6a2703ebaa4fb10ea02c5fa4669109db2dbfa5bf169 +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_role_model_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.46 b/iris/realtabformer/4/logs/val_avg_role_model_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.46 new file mode 100644 index 0000000000000000000000000000000000000000..d2029cd93844703fd349e8259dbeea9888427190 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_role_model_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.46 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9fb893a6d5bd2f7e550eac875394fa93bb120c1406413cfb33ad6ad4a8d13ac +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_role_model_mean_pred_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.48 b/iris/realtabformer/4/logs/val_avg_role_model_mean_pred_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.48 new file mode 100644 index 0000000000000000000000000000000000000000..ef90c8ba0de6253e7b7c3a5d9cbd24cbebd05b73 --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_role_model_mean_pred_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.48 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:477af2c09cabf32838639aab3b8c872b31d6f2da98904d3512a1e1bb951d513d +size 865 diff --git a/iris/realtabformer/4/logs/val_avg_role_model_std_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.47 b/iris/realtabformer/4/logs/val_avg_role_model_std_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.47 new file mode 100644 index 0000000000000000000000000000000000000000..4939c4df01cf8171aa4cc950220a1d43f3263a2e --- /dev/null +++ b/iris/realtabformer/4/logs/val_avg_role_model_std_loss/events.out.tfevents.1721738958.0e0da8a72f77.1463.47 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd982571942d6b6cead7534e8bf39222ec019b88b89596e548ec2e2a222fb2cc +size 865 diff --git a/iris/realtabformer/4/logs/val_duration/events.out.tfevents.1721738958.0e0da8a72f77.1463.57 b/iris/realtabformer/4/logs/val_duration/events.out.tfevents.1721738958.0e0da8a72f77.1463.57 new file mode 100644 index 0000000000000000000000000000000000000000..b0a941a5b2d93bb366777a1079d7141ae6083f48 --- /dev/null +++ b/iris/realtabformer/4/logs/val_duration/events.out.tfevents.1721738958.0e0da8a72f77.1463.57 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7af98a4bc5ccf107ac8879c291acc1d2b45980cc2f38bba534ca07e4b58bd053 +size 865 diff --git a/iris/realtabformer/4/logs/val_duration_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.58 b/iris/realtabformer/4/logs/val_duration_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.58 new file mode 100644 index 0000000000000000000000000000000000000000..59d733c198922cb88252fd6721afeaee92b96781 --- /dev/null +++ b/iris/realtabformer/4/logs/val_duration_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.58 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d58317f39393219a4cf2ee54f861a6555a6f4d8eb76e3e57825927a68652fd65 +size 865 diff --git a/iris/realtabformer/4/logs/val_duration_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.59 b/iris/realtabformer/4/logs/val_duration_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.59 new file mode 100644 index 0000000000000000000000000000000000000000..e3241b2f960074272ff8591234e4fab1673bdcc7 --- /dev/null +++ b/iris/realtabformer/4/logs/val_duration_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.59 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41d92d2e1c9555f39541419d2366e9b6a2fef8b9575a26ad21c7d21390e0efc4 +size 865 diff --git a/iris/realtabformer/4/logs/val_n_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.56 b/iris/realtabformer/4/logs/val_n_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.56 new file mode 100644 index 0000000000000000000000000000000000000000..48b0c6ad0764871ea4baa8c7849c80becdee94b4 --- /dev/null +++ b/iris/realtabformer/4/logs/val_n_batch/events.out.tfevents.1721738958.0e0da8a72f77.1463.56 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fb8480e4dd3769bdcd16a1997d44c09fc4167ffe0e52e86ddecdb0a705a5f7f +size 865 diff --git a/iris/realtabformer/4/logs/val_n_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.55 b/iris/realtabformer/4/logs/val_n_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.55 new file mode 100644 index 0000000000000000000000000000000000000000..fdec0ce800746b41bf789eb77f6aeff311bc665f --- /dev/null +++ b/iris/realtabformer/4/logs/val_n_size/events.out.tfevents.1721738958.0e0da8a72f77.1463.55 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb8c3e173040b324682b1abfe34b272c14d6407ef15e1dbc21f18869bbdd91aa +size 865 diff --git a/iris/realtabformer/4/mlu-eval.ipynb b/iris/realtabformer/4/mlu-eval.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..30aaa4219f2fecc6ca4a511f28a34064d8152a55 --- /dev/null +++ b/iris/realtabformer/4/mlu-eval.ipynb @@ -0,0 +1,2520 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "982e76f5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.068451Z", + "iopub.status.busy": "2024-07-23T12:46:01.068165Z", + "iopub.status.idle": "2024-07-23T12:46:01.098411Z", + "shell.execute_reply": "2024-07-23T12:46:01.097562Z" + }, + "papermill": { + "duration": 0.044926, + "end_time": "2024-07-23T12:46:01.100556", + "exception": false, + "start_time": "2024-07-23T12:46:01.055630", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import joblib\n", + "\n", + "#joblib.parallel_backend(\"threading\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "675f0b41", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.126726Z", + "iopub.status.busy": "2024-07-23T12:46:01.126461Z", + "iopub.status.idle": "2024-07-23T12:46:01.133071Z", + "shell.execute_reply": "2024-07-23T12:46:01.132239Z" + }, + "papermill": { + "duration": 0.022363, + "end_time": "2024-07-23T12:46:01.135054", + "exception": false, + "start_time": "2024-07-23T12:46:01.112691", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n%cd /kaggle/working\\n#!git clone https://github.com/R-N/ml-utility-loss --depth=1 --single-branch --branch=main\\n%cd ml-utility-loss\\n!git pull\\n#!pip install .\\n!pip install . --no-deps --force-reinstall --upgrade\\n#'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "%cd /kaggle/working\n", + "#!git clone https://github.com/R-N/ml-utility-loss --depth=1 --single-branch --branch=main\n", + "%cd ml-utility-loss\n", + "!git pull\n", + "#!pip install .\n", + "!pip install . --no-deps --force-reinstall --upgrade\n", + "#\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5ae30f5c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.158518Z", + "iopub.status.busy": "2024-07-23T12:46:01.158268Z", + "iopub.status.idle": "2024-07-23T12:46:01.162175Z", + "shell.execute_reply": "2024-07-23T12:46:01.161350Z" + }, + "papermill": { + "duration": 0.018143, + "end_time": "2024-07-23T12:46:01.164429", + "exception": false, + "start_time": "2024-07-23T12:46:01.146286", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.rcParams['figure.figsize'] = [3,3]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9f42c810", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.188029Z", + "iopub.status.busy": "2024-07-23T12:46:01.187750Z", + "iopub.status.idle": "2024-07-23T12:46:01.191581Z", + "shell.execute_reply": "2024-07-23T12:46:01.190807Z" + }, + "executionInfo": { + "elapsed": 678, + "status": "ok", + "timestamp": 1696841022168, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "ns5hFcVL2yvs", + "papermill": { + "duration": 0.017768, + "end_time": "2024-07-23T12:46:01.193399", + "exception": false, + "start_time": "2024-07-23T12:46:01.175631", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "datasets = [\n", + " \"insurance\",\n", + " \"treatment\",\n", + " \"contraceptive\"\n", + "]\n", + "\n", + "study_dir = \"./\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "85d0c8ce", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.217091Z", + "iopub.status.busy": "2024-07-23T12:46:01.216377Z", + "iopub.status.idle": "2024-07-23T12:46:01.221749Z", + "shell.execute_reply": "2024-07-23T12:46:01.221082Z" + }, + "papermill": { + "duration": 0.019213, + "end_time": "2024-07-23T12:46:01.223593", + "exception": false, + "start_time": "2024-07-23T12:46:01.204380", + "status": "completed" + }, + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "#Parameters\n", + "import os\n", + "\n", + "path_prefix = \"../../../../\"\n", + "\n", + "dataset_dir = os.path.join(path_prefix, \"ml-utility-loss/datasets\")\n", + "dataset_name = \"treatment\"\n", + "model_name=\"ml_utility_2\"\n", + "models = [\"tvae\", \"realtabformer\", \"lct_gan\", \"tab_ddpm_concat\"]\n", + "single_model = \"lct_gan\"\n", + "random_seed = 42\n", + "gp = True\n", + "gp_multiply = True\n", + "folder = \"eval\"\n", + "debug = False\n", + "path = None\n", + "param_index = 0\n", + "allow_same_prediction = True\n", + "log_wandb = False" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2e9ebb1d", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.248483Z", + "iopub.status.busy": "2024-07-23T12:46:01.248218Z", + "iopub.status.idle": "2024-07-23T12:46:01.252942Z", + "shell.execute_reply": "2024-07-23T12:46:01.252111Z" + }, + "papermill": { + "duration": 0.019516, + "end_time": "2024-07-23T12:46:01.254890", + "exception": false, + "start_time": "2024-07-23T12:46:01.235374", + "status": "completed" + }, + "tags": [ + "injected-parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters\n", + "dataset = \"iris\"\n", + "dataset_name = \"iris\"\n", + "single_model = \"realtabformer\"\n", + "gp = True\n", + "gp_multiply = True\n", + "random_seed = 4\n", + "debug = False\n", + "folder = \"eval\"\n", + "path_prefix = \"../../../../\"\n", + "path = \"eval/iris/realtabformer/4\"\n", + "param_index = 0\n", + "allow_same_prediction = True\n", + "log_wandb = False\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd7c02d6", + "metadata": { + "papermill": { + "duration": 0.011034, + "end_time": "2024-07-23T12:46:01.276985", + "exception": false, + "start_time": "2024-07-23T12:46:01.265951", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5f45b1d0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.300445Z", + "iopub.status.busy": "2024-07-23T12:46:01.299987Z", + "iopub.status.idle": "2024-07-23T12:46:01.309441Z", + "shell.execute_reply": "2024-07-23T12:46:01.308692Z" + }, + "executionInfo": { + "elapsed": 7, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "UdvXYv3c3LXy", + "papermill": { + "duration": 0.023249, + "end_time": "2024-07-23T12:46:01.311278", + "exception": false, + "start_time": "2024-07-23T12:46:01.288029", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/kaggle/working\n", + "/kaggle/working/eval/iris/realtabformer/4\n" + ] + } + ], + "source": [ + "from pathlib import Path\n", + "import os\n", + "\n", + "%cd /kaggle/working/\n", + "\n", + "if path is None:\n", + " path = os.path.join(folder, dataset_name, single_model, random_seed)\n", + "Path(path).mkdir(parents=True, exist_ok=True)\n", + "\n", + "%cd {path}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f85bf540", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:01.334624Z", + "iopub.status.busy": "2024-07-23T12:46:01.334384Z", + "iopub.status.idle": "2024-07-23T12:46:03.196738Z", + "shell.execute_reply": "2024-07-23T12:46:03.195820Z" + }, + "papermill": { + "duration": 1.876486, + "end_time": "2024-07-23T12:46:03.198875", + "exception": false, + "start_time": "2024-07-23T12:46:01.322389", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set seed to \n" + ] + } + ], + "source": [ + "from ml_utility_loss.util import seed\n", + "if single_model:\n", + " model_name=f\"{model_name}_{single_model}\"\n", + "if random_seed is not None:\n", + " seed(random_seed)\n", + " print(\"Set seed to\", seed)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8489feae", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:03.225494Z", + "iopub.status.busy": "2024-07-23T12:46:03.225091Z", + "iopub.status.idle": "2024-07-23T12:46:03.251944Z", + "shell.execute_reply": "2024-07-23T12:46:03.251274Z" + }, + "papermill": { + "duration": 0.042242, + "end_time": "2024-07-23T12:46:03.253951", + "exception": false, + "start_time": "2024-07-23T12:46:03.211709", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import json\n", + "import os\n", + "\n", + "df = pd.read_csv(os.path.join(dataset_dir, f\"{dataset_name}.csv\"))\n", + "with open(os.path.join(dataset_dir, f\"{dataset_name}.json\")) as f:\n", + " info = json.load(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "debcc684", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:03.278387Z", + "iopub.status.busy": "2024-07-23T12:46:03.277660Z", + "iopub.status.idle": "2024-07-23T12:46:03.286970Z", + "shell.execute_reply": "2024-07-23T12:46:03.286295Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "Vrl2QkoV3o_8", + "papermill": { + "duration": 0.023405, + "end_time": "2024-07-23T12:46:03.288826", + "exception": false, + "start_time": "2024-07-23T12:46:03.265421", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "task = info[\"task\"]\n", + "target = info[\"target\"]\n", + "cat_features = info[\"cat_features\"]\n", + "mixed_features = info[\"mixed_features\"]\n", + "longtail_features = info[\"longtail_features\"]\n", + "integer_features = info[\"integer_features\"]\n", + "\n", + "test = df.sample(frac=0.2, random_state=42)\n", + "train = df[~df.index.isin(test.index)]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7538184a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:03.312536Z", + "iopub.status.busy": "2024-07-23T12:46:03.312269Z", + "iopub.status.idle": "2024-07-23T12:46:03.776966Z", + "shell.execute_reply": "2024-07-23T12:46:03.776213Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "TilUuFk9vqMb", + "papermill": { + "duration": 0.478902, + "end_time": "2024-07-23T12:46:03.778994", + "exception": false, + "start_time": "2024-07-23T12:46:03.300092", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import ml_utility_loss.synthesizers.tab_ddpm.params as TAB_DDPM_PARAMS\n", + "import ml_utility_loss.synthesizers.lct_gan.params as LCT_GAN_PARAMS\n", + "import ml_utility_loss.synthesizers.realtabformer.params as RTF_PARAMS\n", + "from ml_utility_loss.synthesizers.realtabformer.params.default import GPT2_PARAMS, REALTABFORMER_PARAMS\n", + "from ml_utility_loss.util import filter_dict_2, filter_dict\n", + "\n", + "tab_ddpm_params = getattr(TAB_DDPM_PARAMS, dataset_name).BEST\n", + "lct_gan_params = getattr(LCT_GAN_PARAMS, dataset_name).BEST\n", + "lct_ae_params = filter_dict_2(lct_gan_params, LCT_GAN_PARAMS.default.AE_PARAMS)\n", + "rtf_params = getattr(RTF_PARAMS, dataset_name).BEST\n", + "rtf_params = filter_dict(rtf_params, REALTABFORMER_PARAMS)\n", + "\n", + "lct_ae_embedding_size=lct_gan_params[\"embedding_size\"]\n", + "tab_ddpm_normalization=\"quantile\"\n", + "tab_ddpm_cat_encoding=tab_ddpm_params[\"cat_encoding\"]\n", + "#tab_ddpm_cat_encoding=\"one-hot\"\n", + "tab_ddpm_y_policy=\"default\"\n", + "tab_ddpm_is_y_cond=True" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "cca61838", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:03.804726Z", + "iopub.status.busy": "2024-07-23T12:46:03.804452Z", + "iopub.status.idle": "2024-07-23T12:46:16.227171Z", + "shell.execute_reply": "2024-07-23T12:46:16.226176Z" + }, + "executionInfo": { + "elapsed": 3113, + "status": "ok", + "timestamp": 1696841025277, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "7Abt8nStvr9Z", + "papermill": { + "duration": 12.43852, + "end_time": "2024-07-23T12:46:16.229670", + "exception": false, + "start_time": "2024-07-23T12:46:03.791150", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-07-23 12:46:07.744451: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", + "2024-07-23 12:46:07.744544: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", + "2024-07-23 12:46:07.876458: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_lct_ae\n", + "\n", + "# lct_ae = load_lct_ae(\n", + "# dataset_name=dataset_name,\n", + "# model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", + "# model_name=\"lct_ae\",\n", + "# df_name=\"df\",\n", + "# )\n", + "lct_ae = None" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6f83b7b6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:16.256283Z", + "iopub.status.busy": "2024-07-23T12:46:16.255672Z", + "iopub.status.idle": "2024-07-23T12:46:16.265339Z", + "shell.execute_reply": "2024-07-23T12:46:16.264639Z" + }, + "papermill": { + "duration": 0.025066, + "end_time": "2024-07-23T12:46:16.267434", + "exception": false, + "start_time": "2024-07-23T12:46:16.242368", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_rtf_embed\n", + "\n", + "rtf_embed = load_rtf_embed(\n", + " dataset_name=dataset_name,\n", + " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", + " model_name=\"realtabformer\",\n", + " df_name=\"df\",\n", + " ckpt_type=\"best-disc-model\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0026de74", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:16.291552Z", + "iopub.status.busy": "2024-07-23T12:46:16.291019Z", + "iopub.status.idle": "2024-07-23T12:46:18.833504Z", + "shell.execute_reply": "2024-07-23T12:46:18.832727Z" + }, + "executionInfo": { + "elapsed": 20137, + "status": "ok", + "timestamp": 1696841045408, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "tbaguWxAvtPi", + "papermill": { + "duration": 2.557202, + "end_time": "2024-07-23T12:46:18.835917", + "exception": false, + "start_time": "2024-07-23T12:46:16.278715", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.preprocessing import DataPreprocessor\n", + "\n", + "preprocessor = DataPreprocessor(\n", + " task,\n", + " target=target,\n", + " cat_features=cat_features,\n", + " mixed_features=mixed_features,\n", + " longtail_features=longtail_features,\n", + " integer_features=integer_features,\n", + " lct_ae_embedding_size=lct_ae_embedding_size,\n", + " lct_ae_params=lct_ae_params,\n", + " lct_ae=lct_ae,\n", + " tab_ddpm_normalization=tab_ddpm_normalization,\n", + " tab_ddpm_cat_encoding=tab_ddpm_cat_encoding,\n", + " tab_ddpm_y_policy=tab_ddpm_y_policy,\n", + " tab_ddpm_is_y_cond=tab_ddpm_is_y_cond,\n", + " realtabformer_embedding=rtf_embed,\n", + " realtabformer_params=rtf_params,\n", + ")\n", + "preprocessor.fit(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a9c9b110", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "execution": { + "iopub.execute_input": "2024-07-23T12:46:18.862891Z", + "iopub.status.busy": "2024-07-23T12:46:18.862579Z", + "iopub.status.idle": "2024-07-23T12:46:18.868658Z", + "shell.execute_reply": "2024-07-23T12:46:18.867800Z" + }, + "executionInfo": { + "elapsed": 13, + "status": "ok", + "timestamp": 1696841045411, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "OxUH_GBEv2qK", + "outputId": "76464c90-3baf-4bdc-a955-6f4fddc16b9c", + "papermill": { + "duration": 0.02213, + "end_time": "2024-07-23T12:46:18.870644", + "exception": false, + "start_time": "2024-07-23T12:46:18.848514", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'tvae': 24,\n", + " 'realtabformer': (31, 89, Embedding(89, 864), True),\n", + " 'lct_gan': 14,\n", + " 'tab_ddpm_concat': 5}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preprocessor.adapter_sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3cb9ed90", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:18.895344Z", + "iopub.status.busy": "2024-07-23T12:46:18.894820Z", + "iopub.status.idle": "2024-07-23T12:46:18.899629Z", + "shell.execute_reply": "2024-07-23T12:46:18.898757Z" + }, + "papermill": { + "duration": 0.019128, + "end_time": "2024-07-23T12:46:18.901540", + "exception": false, + "start_time": "2024-07-23T12:46:18.882412", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_dataset_3_factory\n", + "\n", + "datasetsn = load_dataset_3_factory(\n", + " dataset_dir=os.path.join(path_prefix, \"ml-utility-loss/\"),\n", + " dataset_name=dataset_name,\n", + " preprocessor=preprocessor,\n", + " cache_dir=path_prefix,\n", + " #synth_dir=f\"synthetics2/{single_model}\",\n", + " synth_dir=\"synthetics\",\n", + " real_step=1,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ad1eb833", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:18.925694Z", + "iopub.status.busy": "2024-07-23T12:46:18.925448Z", + "iopub.status.idle": "2024-07-23T12:46:42.920145Z", + "shell.execute_reply": "2024-07-23T12:46:42.919176Z" + }, + "papermill": { + "duration": 24.009357, + "end_time": "2024-07-23T12:46:42.922510", + "exception": false, + "start_time": "2024-07-23T12:46:18.913153", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../../../../ml-utility-loss/ synthetics iris\n", + "Caching in ../../../../iris/_cache_aug_test/realtabformer/all inf False\n", + "../../../../ml-utility-loss/aug_test/iris 0\n", + "Caching in ../../../../iris/_cache_bs_test/realtabformer/all inf False\n", + "../../../../ml-utility-loss/bs_test/iris 0\n", + "Caching in ../../../../iris/_cache_synth_test/realtabformer/all inf False\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../../../../ml-utility-loss/synthetics/iris 200\n", + "200\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_dataset_4\n", + "\n", + "test_set = load_dataset_4(\n", + " dataset_dir=os.path.join(path_prefix, \"ml-utility-loss/\"),\n", + " dataset_name=dataset_name,\n", + " preprocessor=preprocessor,\n", + " model=single_model,\n", + " cache_dir=path_prefix,\n", + " #synth_dir=f\"synthetics2/{single_model}\",\n", + " synth_dir=\"synthetics\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "14ff8b40", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:42.949571Z", + "iopub.status.busy": "2024-07-23T12:46:42.949286Z", + "iopub.status.idle": "2024-07-23T12:46:43.786049Z", + "shell.execute_reply": "2024-07-23T12:46:43.785131Z" + }, + "executionInfo": { + "elapsed": 588, + "status": "ok", + "timestamp": 1696841049215, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "NgahtU1q9uLO", + "papermill": { + "duration": 0.852921, + "end_time": "2024-07-23T12:46:43.788351", + "exception": false, + "start_time": "2024-07-23T12:46:42.935430", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'bias_weight_decay': 0.05,\n", + " 'Body': 'twin_encoder',\n", + " 'loss_balancer_meta': True,\n", + " 'loss_balancer_log': False,\n", + " 'loss_balancer_lbtw': False,\n", + " 'pma_skip_small': False,\n", + " 'isab_skip_small': False,\n", + " 'layer_norm': False,\n", + " 'pma_layer_norm': False,\n", + " 'attn_residual': True,\n", + " 'tf_n_layers_dec': False,\n", + " 'tf_isab_rank': 0,\n", + " 'tf_layer_norm': False,\n", + " 'tf_pma_start': -1,\n", + " 'head_n_seeds': 0,\n", + " 'dropout': 0,\n", + " 'combine_mode': 'diff_left',\n", + " 'tf_isab_mode': 'separate',\n", + " 'grad_loss_fn': torch.Tensor>,\n", + " 'bias': True,\n", + " 'bias_final': True,\n", + " 'pma_ffn_mode': 'none',\n", + " 'gradient_penalty_mode': {'gradient_penalty': True,\n", + " 'forward_once': False,\n", + " 'calc_grad_m': False,\n", + " 'avg_non_role_model_m': False,\n", + " 'inverse_avg_non_role_model_m': False},\n", + " 'single_model': True,\n", + " 'tf_pma_low': 4,\n", + " 'patience': 10,\n", + " 'grad_clip': 0.7999999999999999,\n", + " 'bias_lr_mul': 1.0,\n", + " 'synth_data': 2,\n", + " 'inds_init_mode': 'fixnorm',\n", + " 'head_activation': torch.nn.modules.activation.ReLU6,\n", + " 'tf_activation': ml_utility_loss.activations.LeakyHardtanh,\n", + " 'loss_balancer_beta': 0.7,\n", + " 'loss_balancer_r': 0.96,\n", + " 'aug_train': 0,\n", + " 'bs_train': 0,\n", + " 'real_train': 5,\n", + " 'dataset_size': 256,\n", + " 'batch_size': 32,\n", + " 'epochs': 100,\n", + " 'lr_mul': 0.15,\n", + " 'n_warmup_steps': 80,\n", + " 'Optim': functools.partial(, amsgrad=True),\n", + " 'g_loss_mul': 0.2,\n", + " 'd_model': 128,\n", + " 'attn_activation': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'tf_d_inner': 32,\n", + " 'tf_n_layers_enc': 5,\n", + " 'tf_n_head': 32,\n", + " 'tf_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n", + " 'ada_d_hid': 64,\n", + " 'ada_n_layers': 6,\n", + " 'ada_activation': torch.nn.modules.activation.ReLU,\n", + " 'ada_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n", + " 'head_d_hid': 256,\n", + " 'head_n_layers': 8,\n", + " 'head_n_head': 2,\n", + " 'head_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'models': ['realtabformer'],\n", + " 'fixed_role_model': 'realtabformer',\n", + " 'max_seconds': 3600,\n", + " 'tf_lora': False,\n", + " 'tf_num_inds': 32,\n", + " 'ada_n_seeds': 0,\n", + " 'gradient_penalty_kwargs': {'mag_loss': True,\n", + " 'mse_mag': True,\n", + " 'mag_corr': False,\n", + " 'seq_mag': False,\n", + " 'cos_loss': False,\n", + " 'mag_corr_kwargs': {'only_sign': False},\n", + " 'cos_loss_kwargs': {'only_sign': True, 'cos_matrix': False},\n", + " 'mse_mag_kwargs': {'target': 0.5, 'multiply': True, 'forgive_over': True}}}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import ml_utility_loss.loss_learning.estimator.params2 as PARAMS\n", + "from ml_utility_loss.tuning import map_parameters\n", + "from ml_utility_loss.loss_learning.estimator.params.default import update_param_space, update_param_space_2\n", + "import wandb\n", + "\n", + "#\"\"\"\n", + "param_space = {\n", + " **getattr(PARAMS, dataset_name).PARAM_SPACE,\n", + "}\n", + "# params = {\n", + "# **getattr(PARAMS, dataset_name).BESTS[param_index],\n", + "# }\n", + "params = getattr(PARAMS, dataset_name).BEST_DICT[gp][gp_multiply][single_model]\n", + "if isinstance(params, (list, tuple)):\n", + " params = params[param_index]\n", + "params = {\n", + " **getattr(PARAMS, dataset_name).DEFAULTS,\n", + " **params,\n", + "}\n", + "if gp:\n", + " params[\"gradient_penalty_mode\"] = \"ALL\"\n", + " params[\"mse_mag\"] = True\n", + " if gp_multiply:\n", + " params[\"mse_mag_multiply\"] = True\n", + " #params[\"mse_mag_target\"] = 1.0\n", + " else:\n", + " params[\"mse_mag_multiply\"] = False\n", + " #params[\"mse_mag_target\"] = 0.1\n", + "else:\n", + " params[\"gradient_penalty_mode\"] = \"NONE\"\n", + " params[\"mse_mag\"] = False\n", + "params[\"single_model\"] = False\n", + "if models:\n", + " params[\"models\"] = models\n", + "if single_model:\n", + " params[\"fixed_role_model\"] = single_model\n", + " params[\"single_model\"] = True\n", + " params[\"models\"] = [single_model]\n", + "# if params[\"fixed_role_model\"] == \"realtabformer\" and dataset_name == \"treatment\":\n", + "# params[\"batch_size\"] = 2\n", + "params[\"max_seconds\"] = 3600\n", + "params[\"patience\"] = 10\n", + "params[\"epochs\"] = 100\n", + "if debug:\n", + " params[\"epochs\"] = 2\n", + "with open(\"params.json\", \"w\") as f:\n", + " json.dump(params, f)\n", + "params = map_parameters(params, param_space=param_space)\n", + "params" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a48bd9e9", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:46:43.815452Z", + "iopub.status.busy": "2024-07-23T12:46:43.815089Z", + "iopub.status.idle": "2024-07-23T12:48:45.384213Z", + "shell.execute_reply": "2024-07-23T12:48:45.383251Z" + }, + "papermill": { + "duration": 121.585044, + "end_time": "2024-07-23T12:48:45.386300", + "exception": false, + "start_time": "2024-07-23T12:46:43.801256", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../../../../ml-utility-loss/ synthetics iris\n", + "Caching in ../../../../iris/_cache_aug_train/realtabformer/all inf False\n", + "split df ratio is 0\n", + "../../../../ml-utility-loss/aug_train/iris [0, 0]\n", + "Caching in ../../../../iris/_cache_aug_val/realtabformer/all inf False\n", + "split df ratio is 1\n", + "../../../../ml-utility-loss/aug_val/iris [0, 0]\n", + "Caching in ../../../../iris/_cache_bs_train/realtabformer/all inf False\n", + "split df ratio is 0\n", + "../../../../ml-utility-loss/bs_train/iris [0, 0]\n", + "Caching in ../../../../iris/_cache_bs_val/realtabformer/all inf False\n", + "split df ratio is 1\n", + "../../../../ml-utility-loss/bs_val/iris [0, 0]\n", + "Caching in ../../../../iris/_cache_synth/realtabformer/all inf False\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/ml_utility_loss/loss_learning/estimator/data.py:174: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.\n", + " index = pd.Series(self.index)\n", + "/opt/conda/lib/python3.10/site-packages/ml_utility_loss/loss_learning/estimator/data.py:174: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.\n", + " index = pd.Series(self.index)\n", + "/opt/conda/lib/python3.10/site-packages/ml_utility_loss/loss_learning/estimator/data.py:174: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.\n", + " index = pd.Series(self.index)\n", + "/opt/conda/lib/python3.10/site-packages/ml_utility_loss/loss_learning/estimator/data.py:174: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.\n", + " index = pd.Series(self.index)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Splitting without random!\n", + "Split with reverse index!\n", + "../../../../ml-utility-loss/synthetics/iris [800, 200]\n", + "Caching in ../../../../iris/_cache_real/realtabformer/all inf False\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "split df ratio is 0\n", + "../../../../ml-utility-loss/synthetics/iris [5, 0]\n", + "[805, 200]\n", + "[805, 200]\n" + ] + } + ], + "source": [ + "train_set, val_set = datasetsn(model=params[\"fixed_role_model\"], synth_data=params[\"synth_data\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2fcb1418", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "execution": { + "iopub.execute_input": "2024-07-23T12:48:45.415034Z", + "iopub.status.busy": "2024-07-23T12:48:45.414177Z", + "iopub.status.idle": "2024-07-23T12:48:45.720175Z", + "shell.execute_reply": "2024-07-23T12:48:45.719307Z" + }, + "executionInfo": { + "elapsed": 396850, + "status": "error", + "timestamp": 1696841446059, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "_bt1MQc5kpSk", + "outputId": "01c1d3e5-ac64-461d-835a-b76f4a66e6d6", + "papermill": { + "duration": 0.322403, + "end_time": "2024-07-23T12:48:45.722079", + "exception": false, + "start_time": "2024-07-23T12:48:45.399676", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating model of type \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[*] Embedding True True\n", + "['realtabformer'] 1\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.model.pipeline import remove_non_model_params\n", + "from ml_utility_loss.loss_learning.estimator.pipeline import create_model\n", + "from ml_utility_loss.util import filter_dict, clear_memory\n", + "\n", + "clear_memory()\n", + "\n", + "params2 = remove_non_model_params(params)\n", + "adapters = filter_dict(preprocessor.adapter_sizes, params[\"models\"])\n", + "\n", + "model = create_model(\n", + " adapters=adapters,\n", + " #Body=\"twin_encoder\",\n", + " **params2,\n", + ")\n", + "#cf.apply_weight_standardization(model, n_last_layers_ignore=0)\n", + "print(model.models, len(model.adapters))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "938f94fc", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:48:45.750042Z", + "iopub.status.busy": "2024-07-23T12:48:45.749697Z", + "iopub.status.idle": "2024-07-23T12:48:45.753969Z", + "shell.execute_reply": "2024-07-23T12:48:45.753137Z" + }, + "papermill": { + "duration": 0.020209, + "end_time": "2024-07-23T12:48:45.755855", + "exception": false, + "start_time": "2024-07-23T12:48:45.735646", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "study_name=f\"{model_name}_{dataset_name}\"" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "12fb613e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:48:45.782171Z", + "iopub.status.busy": "2024-07-23T12:48:45.781896Z", + "iopub.status.idle": "2024-07-23T12:48:45.788943Z", + "shell.execute_reply": "2024-07-23T12:48:45.788139Z" + }, + "papermill": { + "duration": 0.022664, + "end_time": "2024-07-23T12:48:45.790807", + "exception": false, + "start_time": "2024-07-23T12:48:45.768143", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1391744" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def count_parameters(model):\n", + " return sum(p.numel() for p in model.parameters() if p.requires_grad)\n", + "\n", + "count_parameters(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "bd386e57", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:48:45.817101Z", + "iopub.status.busy": "2024-07-23T12:48:45.816855Z", + "iopub.status.idle": "2024-07-23T12:48:45.921423Z", + "shell.execute_reply": "2024-07-23T12:48:45.920537Z" + }, + "papermill": { + "duration": 0.120097, + "end_time": "2024-07-23T12:48:45.923292", + "exception": false, + "start_time": "2024-07-23T12:48:45.803195", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "========================================================================================================================\n", + "Layer (type:depth-idx) Output Shape Param #\n", + "========================================================================================================================\n", + "MLUtilitySingle [2, 120, 26784] --\n", + "├─Adapter: 1-1 [2, 120, 26784] --\n", + "│ └─Embedding: 2-1 [2, 120, 31, 864] (76,896)\n", + "│ └─TensorInductionPoint: 2-2 [31, 1] 31\n", + "│ └─Sequential: 2-3 [2, 120, 128] --\n", + "│ │ └─FeedForward: 3-1 [2, 120, 64] --\n", + "│ │ │ └─Linear: 4-1 [2, 120, 64] 55,360\n", + "│ │ │ └─ReLU: 4-2 [2, 120, 64] --\n", + "│ │ └─FeedForward: 3-2 [2, 120, 64] --\n", + "│ │ │ └─Linear: 4-3 [2, 120, 64] 4,160\n", + "│ │ │ └─ReLU: 4-4 [2, 120, 64] --\n", + "│ │ └─FeedForward: 3-3 [2, 120, 64] --\n", + "│ │ │ └─Linear: 4-5 [2, 120, 64] 4,160\n", + "│ │ │ └─ReLU: 4-6 [2, 120, 64] --\n", + "│ │ └─FeedForward: 3-4 [2, 120, 64] --\n", + "│ │ │ └─Linear: 4-7 [2, 120, 64] 4,160\n", + "│ │ │ └─ReLU: 4-8 [2, 120, 64] --\n", + "│ │ └─FeedForward: 3-5 [2, 120, 64] --\n", + "│ │ │ └─Linear: 4-9 [2, 120, 64] 4,160\n", + "│ │ │ └─ReLU: 4-10 [2, 120, 64] --\n", + "│ │ └─FeedForward: 3-6 [2, 120, 128] --\n", + "│ │ │ └─Linear: 4-11 [2, 120, 128] 8,320\n", + "│ │ │ └─LeakyHardtanh: 4-12 [2, 120, 128] --\n", + "├─Adapter: 1-2 [2, 30, 26784] (recursive)\n", + "│ └─Embedding: 2-4 [2, 30, 31, 864] (recursive)\n", + "│ └─TensorInductionPoint: 2-5 [31, 1] (recursive)\n", + "│ └─Sequential: 2-6 [2, 30, 128] (recursive)\n", + "│ │ └─FeedForward: 3-7 [2, 30, 64] (recursive)\n", + "│ │ │ └─Linear: 4-13 [2, 30, 64] (recursive)\n", + "│ │ │ └─ReLU: 4-14 [2, 30, 64] --\n", + "│ │ └─FeedForward: 3-8 [2, 30, 64] (recursive)\n", + "│ │ │ └─Linear: 4-15 [2, 30, 64] (recursive)\n", + "│ │ │ └─ReLU: 4-16 [2, 30, 64] --\n", + "│ │ └─FeedForward: 3-9 [2, 30, 64] (recursive)\n", + "│ │ │ └─Linear: 4-17 [2, 30, 64] (recursive)\n", + "│ │ │ └─ReLU: 4-18 [2, 30, 64] --\n", + "│ │ └─FeedForward: 3-10 [2, 30, 64] (recursive)\n", + "│ │ │ └─Linear: 4-19 [2, 30, 64] (recursive)\n", + "│ │ │ └─ReLU: 4-20 [2, 30, 64] --\n", + "│ │ └─FeedForward: 3-11 [2, 30, 64] (recursive)\n", + "│ │ │ └─Linear: 4-21 [2, 30, 64] (recursive)\n", + "│ │ │ └─ReLU: 4-22 [2, 30, 64] --\n", + "│ │ └─FeedForward: 3-12 [2, 30, 128] (recursive)\n", + "│ │ │ └─Linear: 4-23 [2, 30, 128] (recursive)\n", + "│ │ │ └─LeakyHardtanh: 4-24 [2, 30, 128] --\n", + "├─TwinEncoder: 1-3 [2, 512] --\n", + "│ └─Encoder: 2-7 [2, 4, 128] --\n", + "│ │ └─ModuleList: 3-14 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-25 [2, 120, 128] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 120, 128] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 32, 128] 4,096\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 32, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-1 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-2 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-3 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 32, 32, 120] --\n", + "│ │ │ │ │ │ └─Linear: 7-5 [2, 32, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-6 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 120, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-7 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-8 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-9 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 32, 120, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 32, 120, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-11 [2, 120, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-12 [2, 120, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-2 [2, 120, 128] --\n", + "│ │ │ │ │ └─Linear: 6-4 [2, 120, 32] 4,128\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-5 [2, 120, 32] --\n", + "│ │ │ │ │ └─Linear: 6-6 [2, 120, 128] 4,224\n", + "│ │ │ └─EncoderLayer: 4-26 [2, 120, 128] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 120, 128] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 32, 128] 4,096\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 32, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-13 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-14 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-15 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 32, 32, 120] --\n", + "│ │ │ │ │ │ └─Linear: 7-17 [2, 32, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-18 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 120, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-19 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-20 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-21 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 32, 120, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 32, 120, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-23 [2, 120, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-24 [2, 120, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-4 [2, 120, 128] --\n", + "│ │ │ │ │ └─Linear: 6-10 [2, 120, 32] 4,128\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-11 [2, 120, 32] --\n", + "│ │ │ │ │ └─Linear: 6-12 [2, 120, 128] 4,224\n", + "│ │ │ └─EncoderLayer: 4-27 [2, 120, 128] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 120, 128] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 32, 128] 4,096\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 32, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-25 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-26 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-27 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 32, 32, 120] --\n", + "│ │ │ │ │ │ └─Linear: 7-29 [2, 32, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-30 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 120, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-31 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-32 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-33 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 32, 120, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 32, 120, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-35 [2, 120, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-36 [2, 120, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-6 [2, 120, 128] --\n", + "│ │ │ │ │ └─Linear: 6-16 [2, 120, 32] 4,128\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-17 [2, 120, 32] --\n", + "│ │ │ │ │ └─Linear: 6-18 [2, 120, 128] 4,224\n", + "│ │ │ └─EncoderLayer: 4-28 [2, 120, 128] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-7 [2, 120, 128] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 32, 128] 4,096\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-20 [2, 32, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-37 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-38 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-39 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 32, 32, 120] --\n", + "│ │ │ │ │ │ └─Linear: 7-41 [2, 32, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-42 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-21 [2, 120, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-43 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-44 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-45 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 32, 120, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 32, 120, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-47 [2, 120, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-48 [2, 120, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-8 [2, 120, 128] --\n", + "│ │ │ │ │ └─Linear: 6-22 [2, 120, 32] 4,128\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-23 [2, 120, 32] --\n", + "│ │ │ │ │ └─Linear: 6-24 [2, 120, 128] 4,224\n", + "│ │ │ └─EncoderLayer: 4-29 [2, 4, 128] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-9 [2, 120, 128] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-25 [2, 32, 128] 4,096\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-26 [2, 32, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-49 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-50 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-51 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 32, 32, 120] --\n", + "│ │ │ │ │ │ └─Linear: 7-53 [2, 32, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-54 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-27 [2, 120, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-55 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-56 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-57 [2, 32, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 32, 120, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 32, 120, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-59 [2, 120, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-60 [2, 120, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-10 [2, 120, 128] --\n", + "│ │ │ │ │ └─Linear: 6-28 [2, 120, 32] 4,128\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-29 [2, 120, 32] --\n", + "│ │ │ │ │ └─Linear: 6-30 [2, 120, 128] 4,224\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-11 [2, 4, 128] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-31 [2, 4, 128] 512\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-32 [2, 4, 128] --\n", + "│ │ │ │ │ │ └─Linear: 7-61 [2, 4, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-62 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─Linear: 7-63 [2, 120, 128] 16,384\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 32, 4, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 32, 4, 120] --\n", + "│ │ │ │ │ │ └─Linear: 7-65 [2, 4, 128] 16,512\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-66 [2, 4, 128] --\n", + "│ └─Encoder: 2-8 [2, 4, 128] (recursive)\n", + "│ │ └─ModuleList: 3-14 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-30 [2, 30, 128] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-12 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-33 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-34 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-67 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-68 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-69 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 32, 32, 30] --\n", + "│ │ │ │ │ │ └─Linear: 7-71 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-72 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-35 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-73 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-74 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-75 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 32, 30, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 32, 30, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-77 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-78 [2, 30, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-13 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-36 [2, 30, 32] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-37 [2, 30, 32] --\n", + "│ │ │ │ │ └─Linear: 6-38 [2, 30, 128] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-31 [2, 30, 128] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-14 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-39 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-40 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-79 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-80 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-81 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 32, 32, 30] --\n", + "│ │ │ │ │ │ └─Linear: 7-83 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-84 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-41 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-85 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-86 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-87 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-88 [2, 32, 30, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-15 [2, 32, 30, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-89 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-90 [2, 30, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-15 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-42 [2, 30, 32] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-43 [2, 30, 32] --\n", + "│ │ │ │ │ └─Linear: 6-44 [2, 30, 128] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-32 [2, 30, 128] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-16 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-45 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-46 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-91 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-92 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-93 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-94 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-16 [2, 32, 32, 30] --\n", + "│ │ │ │ │ │ └─Linear: 7-95 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-96 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-47 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-97 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-98 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-99 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-100 [2, 32, 30, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-17 [2, 32, 30, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-101 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-102 [2, 30, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-17 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-48 [2, 30, 32] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-49 [2, 30, 32] --\n", + "│ │ │ │ │ └─Linear: 6-50 [2, 30, 128] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-33 [2, 30, 128] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-18 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-51 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-52 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-103 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-104 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-105 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-106 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-18 [2, 32, 32, 30] --\n", + "│ │ │ │ │ │ └─Linear: 7-107 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-108 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-53 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-109 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-110 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-111 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-112 [2, 32, 30, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-19 [2, 32, 30, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-113 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-114 [2, 30, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-19 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-54 [2, 30, 32] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-55 [2, 30, 32] --\n", + "│ │ │ │ │ └─Linear: 6-56 [2, 30, 128] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-34 [2, 4, 128] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-20 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-57 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-58 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-115 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-116 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-117 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-118 [2, 32, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-20 [2, 32, 32, 30] --\n", + "│ │ │ │ │ │ └─Linear: 7-119 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-120 [2, 32, 128] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-59 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-121 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-122 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-123 [2, 32, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-124 [2, 32, 30, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-21 [2, 32, 30, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-125 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-126 [2, 30, 128] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-21 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-60 [2, 30, 32] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-61 [2, 30, 32] --\n", + "│ │ │ │ │ └─Linear: 6-62 [2, 30, 128] (recursive)\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-22 [2, 4, 128] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-63 [2, 4, 128] (recursive)\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-64 [2, 4, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-127 [2, 4, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-128 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-129 [2, 30, 128] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-130 [2, 32, 4, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-22 [2, 32, 4, 30] --\n", + "│ │ │ │ │ │ └─Linear: 7-131 [2, 4, 128] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-132 [2, 4, 128] --\n", + "├─Head: 1-4 [2] --\n", + "│ └─Sequential: 2-9 [2, 1] --\n", + "│ │ └─FeedForward: 3-15 [2, 256] --\n", + "│ │ │ └─Linear: 4-35 [2, 256] 131,328\n", + "│ │ │ └─ReLU6: 4-36 [2, 256] --\n", + "│ │ └─FeedForward: 3-16 [2, 256] --\n", + "│ │ │ └─Linear: 4-37 [2, 256] 65,792\n", + "│ │ │ └─ReLU6: 4-38 [2, 256] --\n", + "│ │ └─FeedForward: 3-17 [2, 256] --\n", + "│ │ │ └─Linear: 4-39 [2, 256] 65,792\n", + "│ │ │ └─ReLU6: 4-40 [2, 256] --\n", + "│ │ └─FeedForward: 3-18 [2, 256] --\n", + "│ │ │ └─Linear: 4-41 [2, 256] 65,792\n", + "│ │ │ └─ReLU6: 4-42 [2, 256] --\n", + "│ │ └─FeedForward: 3-19 [2, 256] --\n", + "│ │ │ └─Linear: 4-43 [2, 256] 65,792\n", + "│ │ │ └─ReLU6: 4-44 [2, 256] --\n", + "│ │ └─FeedForward: 3-20 [2, 256] --\n", + "│ │ │ └─Linear: 4-45 [2, 256] 65,792\n", + "│ │ │ └─ReLU6: 4-46 [2, 256] --\n", + "│ │ └─FeedForward: 3-21 [2, 256] --\n", + "│ │ │ └─Linear: 4-47 [2, 256] 65,792\n", + "│ │ │ └─ReLU6: 4-48 [2, 256] --\n", + "│ │ └─FeedForward: 3-22 [2, 1] --\n", + "│ │ │ └─Linear: 4-49 [2, 1] 257\n", + "│ │ │ └─LeakyHardsigmoid: 4-50 [2, 1] --\n", + "========================================================================================================================\n", + "Total params: 1,468,640\n", + "Trainable params: 1,391,744\n", + "Non-trainable params: 76,896\n", + "Total mult-adds (M): 4.74\n", + "========================================================================================================================\n", + "Input size (MB): 0.04\n", + "Forward/backward pass size (MB): 77.39\n", + "Params size (MB): 5.87\n", + "Estimated Total Size (MB): 83.30\n", + "========================================================================================================================" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from torchinfo import summary\n", + "\n", + "role_model = params[\"fixed_role_model\"]\n", + "s = train_set[0][role_model]\n", + "summary(model[role_model], input_size=((2, *s[0].shape), (2, *s[1].shape)), depth=9) # 8 max" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "0f42c4d1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:48:45.953746Z", + "iopub.status.busy": "2024-07-23T12:48:45.953069Z", + "iopub.status.idle": "2024-07-23T12:59:06.279790Z", + "shell.execute_reply": "2024-07-23T12:59:06.278752Z" + }, + "papermill": { + "duration": 620.344556, + "end_time": "2024-07-23T12:59:06.281971", + "exception": false, + "start_time": "2024-07-23T12:48:45.937415", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 datasets [805, 200, 200]\n", + "Creating model of type \n", + "[*] Embedding True True\n", + "g_loss_mul 0.2\n", + "Epoch 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.262053121478291, 'avg_role_model_std_loss': 42.03971320394283, 'avg_role_model_mean_pred_loss': 0.15260134892572896, 'avg_role_model_g_mag_loss': 4.023151628127009, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.27091049326132544, 'n_size': 805, 'n_batch': 26, 'duration': 25.825392961502075, 'duration_batch': 0.9932843446731567, 'duration_size': 0.03208123349254916, 'avg_pred_std': 0.12801932762018764}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.03481296509504318, 'avg_role_model_std_loss': 11.007993800299507, 'avg_role_model_mean_pred_loss': 0.000801574794750195, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.03481296509504318, 'n_size': 200, 'n_batch': 7, 'duration': 5.622534990310669, 'duration_batch': 0.8032192843300956, 'duration_size': 0.028112674951553344, 'avg_pred_std': 0.11246319966656822}\n", + "Epoch 1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.034984138779203346, 'avg_role_model_std_loss': 3.026425369237796, 'avg_role_model_mean_pred_loss': 0.0010741519947067735, 'avg_role_model_g_mag_loss': 2.1780750276139065, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.035656031355354355, 'n_size': 805, 'n_batch': 26, 'duration': 25.652106046676636, 'duration_batch': 0.9866194633337168, 'duration_size': 0.0318659702443188, 'avg_pred_std': 0.22230032172340614}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01774320624768734, 'avg_role_model_std_loss': 0.06842918456199445, 'avg_role_model_mean_pred_loss': 0.0003401846648193896, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01774320624768734, 'n_size': 200, 'n_batch': 7, 'duration': 5.526260137557983, 'duration_batch': 0.7894657339368548, 'duration_size': 0.027631300687789916, 'avg_pred_std': 0.2535323479345867}\n", + "Epoch 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.04949562128239907, 'avg_role_model_std_loss': 1.1212227566813033, 'avg_role_model_mean_pred_loss': 0.007996068239032712, 'avg_role_model_g_mag_loss': 2.008302690403432, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.05031982440478313, 'n_size': 805, 'n_batch': 26, 'duration': 25.32590961456299, 'duration_batch': 0.9740734467139611, 'duration_size': 0.03146075728517141, 'avg_pred_std': 0.2314279844554571}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.018901596069335936, 'avg_role_model_std_loss': 0.06630353892355093, 'avg_role_model_mean_pred_loss': 0.0007084914449058033, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.018901596069335936, 'n_size': 200, 'n_batch': 7, 'duration': 5.525216817855835, 'duration_batch': 0.7893166882651192, 'duration_size': 0.027626084089279176, 'avg_pred_std': 0.2823398347411837}\n", + "Epoch 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.02409061085178245, 'avg_role_model_std_loss': 1.216978319347478, 'avg_role_model_mean_pred_loss': 0.0008497662318766303, 'avg_role_model_g_mag_loss': 0.741790370596862, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.024469380737831874, 'n_size': 805, 'n_batch': 26, 'duration': 25.316158771514893, 'duration_batch': 0.9736984142890344, 'duration_size': 0.031448644436664466, 'avg_pred_std': 0.22752147941635206}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.043339898884296416, 'avg_role_model_std_loss': 0.7571008886609759, 'avg_role_model_mean_pred_loss': 0.004266127767041325, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.043339898884296416, 'n_size': 200, 'n_batch': 7, 'duration': 5.542306423187256, 'duration_batch': 0.7917580604553223, 'duration_size': 0.02771153211593628, 'avg_pred_std': 0.40473173771585735}\n", + "Epoch 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.020230659346171416, 'avg_role_model_std_loss': 0.9529166943214548, 'avg_role_model_mean_pred_loss': 0.0007750360249622685, 'avg_role_model_g_mag_loss': 0.5286644693487179, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.020741140796160847, 'n_size': 805, 'n_batch': 26, 'duration': 25.564849138259888, 'duration_batch': 0.9832634283946111, 'duration_size': 0.03175757656926694, 'avg_pred_std': 0.23694497576126686}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.02167721152305603, 'avg_role_model_std_loss': 1.9218286908414615, 'avg_role_model_mean_pred_loss': 0.0003455080660933163, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.02167721152305603, 'n_size': 200, 'n_batch': 7, 'duration': 5.491510629653931, 'duration_batch': 0.7845015185219901, 'duration_size': 0.027457553148269653, 'avg_pred_std': 0.198296063712665}\n", + "Epoch 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.019746097273436253, 'avg_role_model_std_loss': 2.2252418456348377, 'avg_role_model_mean_pred_loss': 0.0005238168416495987, 'avg_role_model_g_mag_loss': 0.24918978849182957, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.020108103607087077, 'n_size': 805, 'n_batch': 26, 'duration': 25.22130036354065, 'duration_batch': 0.9700500139823327, 'duration_size': 0.031330807905019444, 'avg_pred_std': 0.20685191051318094}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01568814365193248, 'avg_role_model_std_loss': 3.9867110635553087, 'avg_role_model_mean_pred_loss': 0.00012256629364856052, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01568814365193248, 'n_size': 200, 'n_batch': 7, 'duration': 5.431295156478882, 'duration_batch': 0.7758993080684117, 'duration_size': 0.02715647578239441, 'avg_pred_std': 0.15675999862807138}\n", + "Epoch 6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.014242643395566051, 'avg_role_model_std_loss': 0.8401105975269905, 'avg_role_model_mean_pred_loss': 0.00023192750485809174, 'avg_role_model_g_mag_loss': 0.22217477223147516, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.014493430692771947, 'n_size': 805, 'n_batch': 26, 'duration': 25.72674012184143, 'duration_batch': 0.9894900046862088, 'duration_size': 0.03195868338116948, 'avg_pred_std': 0.21621203193297753}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.014185816459357738, 'avg_role_model_std_loss': 0.9034678495871569, 'avg_role_model_mean_pred_loss': 9.851353324847878e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.014185816459357738, 'n_size': 200, 'n_batch': 7, 'duration': 5.769970655441284, 'duration_batch': 0.8242815222058978, 'duration_size': 0.02884985327720642, 'avg_pred_std': 0.20022195151873998}\n", + "Epoch 7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.011760767369374911, 'avg_role_model_std_loss': 0.6726950361377686, 'avg_role_model_mean_pred_loss': 0.00014136829851641038, 'avg_role_model_g_mag_loss': 0.18792922052537434, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011980177557547085, 'n_size': 805, 'n_batch': 26, 'duration': 26.071171522140503, 'duration_batch': 1.0027373662361732, 'duration_size': 0.0323865484747087, 'avg_pred_std': 0.21536388935951087}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.013416027016937733, 'avg_role_model_std_loss': 0.0549252780495278, 'avg_role_model_mean_pred_loss': 0.00036648985391366293, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.013416027016937733, 'n_size': 200, 'n_batch': 7, 'duration': 5.792346954345703, 'duration_batch': 0.8274781363351005, 'duration_size': 0.028961734771728517, 'avg_pred_std': 0.2482785646404539}\n", + "Epoch 8\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.011222473407592278, 'avg_role_model_std_loss': 0.29053532354317635, 'avg_role_model_mean_pred_loss': 0.00021427089243657093, 'avg_role_model_g_mag_loss': 0.17988548101105306, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011425864025487663, 'n_size': 805, 'n_batch': 26, 'duration': 26.029921054840088, 'duration_batch': 1.0011508098015418, 'duration_size': 0.032335305658186445, 'avg_pred_std': 0.22455547749996185}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009740338027477265, 'avg_role_model_std_loss': 1.0211102825456433, 'avg_role_model_mean_pred_loss': 0.00013113710596371675, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009740338027477265, 'n_size': 200, 'n_batch': 7, 'duration': 5.780109405517578, 'duration_batch': 0.8257299150739398, 'duration_size': 0.02890054702758789, 'avg_pred_std': 0.19439016708305903}\n", + "Epoch 9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.009785023380232894, 'avg_role_model_std_loss': 0.6471839001258979, 'avg_role_model_mean_pred_loss': 0.00011955478023636438, 'avg_role_model_g_mag_loss': 0.18390542050326092, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009953600068732818, 'n_size': 805, 'n_batch': 26, 'duration': 27.051364421844482, 'duration_batch': 1.0404370931478648, 'duration_size': 0.03360417940601799, 'avg_pred_std': 0.2196023017168045}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.010303158052265645, 'avg_role_model_std_loss': 0.37253495334139836, 'avg_role_model_mean_pred_loss': 0.00036531296410430514, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010303158052265645, 'n_size': 200, 'n_batch': 7, 'duration': 5.837303638458252, 'duration_batch': 0.8339005197797503, 'duration_size': 0.02918651819229126, 'avg_pred_std': 0.2303677499294281}\n", + "Epoch 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00921949804384516, 'avg_role_model_std_loss': 0.3312310958202803, 'avg_role_model_mean_pred_loss': 0.00015767824511032634, 'avg_role_model_g_mag_loss': 0.17671728371092993, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009374944888842033, 'n_size': 805, 'n_batch': 26, 'duration': 25.234273672103882, 'duration_batch': 0.9705489873886108, 'duration_size': 0.03134692381627811, 'avg_pred_std': 0.21830723921840006}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009038241431117058, 'avg_role_model_std_loss': 0.19912816490978003, 'avg_role_model_mean_pred_loss': 0.0001807974881012342, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009038241431117058, 'n_size': 200, 'n_batch': 7, 'duration': 5.608002424240112, 'duration_batch': 0.8011432034628732, 'duration_size': 0.028040012121200563, 'avg_pred_std': 0.2248043715953827}\n", + "Epoch 11\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.008441703940122764, 'avg_role_model_std_loss': 0.21612058305198353, 'avg_role_model_mean_pred_loss': 0.00014240713286038027, 'avg_role_model_g_mag_loss': 0.18279523103503706, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.008577339318783387, 'n_size': 805, 'n_batch': 26, 'duration': 25.226746559143066, 'duration_batch': 0.9702594830439641, 'duration_size': 0.03133757336539511, 'avg_pred_std': 0.22684718038027102}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009298504171893, 'avg_role_model_std_loss': 0.6596417664799706, 'avg_role_model_mean_pred_loss': 0.00012014204570732545, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009298504171893, 'n_size': 200, 'n_batch': 7, 'duration': 5.577890634536743, 'duration_batch': 0.7968415192195347, 'duration_size': 0.027889453172683716, 'avg_pred_std': 0.20590212515422276}\n", + "Epoch 12\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.007844212994858716, 'avg_role_model_std_loss': 0.20350377502696715, 'avg_role_model_mean_pred_loss': 0.00014020851614410693, 'avg_role_model_g_mag_loss': 0.15811452143680976, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.007975891054324481, 'n_size': 805, 'n_batch': 26, 'duration': 25.306915521621704, 'duration_batch': 0.9733429046777579, 'duration_size': 0.031437162138660504, 'avg_pred_std': 0.22834612314517683}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007574599292129278, 'avg_role_model_std_loss': 0.11346036035476052, 'avg_role_model_mean_pred_loss': 0.00019232832368302422, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.007574599292129278, 'n_size': 200, 'n_batch': 7, 'duration': 5.568081855773926, 'duration_batch': 0.7954402651105609, 'duration_size': 0.02784040927886963, 'avg_pred_std': 0.23240527723516738}\n", + "Epoch 13\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.007856522089373668, 'avg_role_model_std_loss': 0.3197678499754707, 'avg_role_model_mean_pred_loss': 0.00011898457411255815, 'avg_role_model_g_mag_loss': 0.18232270686060006, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.007994596117540546, 'n_size': 805, 'n_batch': 26, 'duration': 25.34485673904419, 'duration_batch': 0.9748021822709304, 'duration_size': 0.03148429408576918, 'avg_pred_std': 0.23052497265430597}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009356324281543493, 'avg_role_model_std_loss': 0.2850514717449966, 'avg_role_model_mean_pred_loss': 0.00034416652171330496, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009356324281543493, 'n_size': 200, 'n_batch': 7, 'duration': 5.576940298080444, 'duration_batch': 0.7967057568686349, 'duration_size': 0.02788470149040222, 'avg_pred_std': 0.22938926730837142}\n", + "Epoch 14\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.008321552020815774, 'avg_role_model_std_loss': 0.3747452772849311, 'avg_role_model_mean_pred_loss': 0.0001253042608550741, 'avg_role_model_g_mag_loss': 0.15760444722930836, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.008464072195246168, 'n_size': 805, 'n_batch': 26, 'duration': 25.33328127861023, 'duration_batch': 0.9743569722542396, 'duration_size': 0.03146991463181395, 'avg_pred_std': 0.2267896538743606}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009856255240738392, 'avg_role_model_std_loss': 0.15701400799610252, 'avg_role_model_mean_pred_loss': 0.0002124845949401788, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009856255240738392, 'n_size': 200, 'n_batch': 7, 'duration': 5.592310190200806, 'duration_batch': 0.7989014557429722, 'duration_size': 0.027961550951004027, 'avg_pred_std': 0.22606208281857626}\n", + "Epoch 15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.007768653050030333, 'avg_role_model_std_loss': 0.32547449464506756, 'avg_role_model_mean_pred_loss': 0.00013297631684401482, 'avg_role_model_g_mag_loss': 0.1682190112168004, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.007906112581294793, 'n_size': 805, 'n_batch': 26, 'duration': 25.185524225234985, 'duration_batch': 0.968674008662884, 'duration_size': 0.031286365497186316, 'avg_pred_std': 0.22503775988633817}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00927560092881322, 'avg_role_model_std_loss': 0.9194349545453276, 'avg_role_model_mean_pred_loss': 0.0001129324381679453, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00927560092881322, 'n_size': 200, 'n_batch': 7, 'duration': 5.617547035217285, 'duration_batch': 0.802506719316755, 'duration_size': 0.028087735176086426, 'avg_pred_std': 0.19207145486559188}\n", + "Epoch 16\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.006970763741124722, 'avg_role_model_std_loss': 0.2939171365458003, 'avg_role_model_mean_pred_loss': 8.314201257741922e-05, 'avg_role_model_g_mag_loss': 0.15292116774257666, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0070910498593870245, 'n_size': 805, 'n_batch': 26, 'duration': 25.20391869544983, 'duration_batch': 0.9693814882865319, 'duration_size': 0.03130921577074513, 'avg_pred_std': 0.22355326666281775}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00958359906449914, 'avg_role_model_std_loss': 0.8046079389750957, 'avg_role_model_mean_pred_loss': 0.00015062226586735506, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00958359906449914, 'n_size': 200, 'n_batch': 7, 'duration': 5.593451499938965, 'duration_batch': 0.7990644999912807, 'duration_size': 0.027967257499694823, 'avg_pred_std': 0.19694859428065165}\n", + "Epoch 17\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.007007337359260328, 'avg_role_model_std_loss': 0.2535157364962314, 'avg_role_model_mean_pred_loss': 9.974229465821189e-05, 'avg_role_model_g_mag_loss': 0.15179737287093392, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.007126074664074904, 'n_size': 805, 'n_batch': 26, 'duration': 25.76202368736267, 'duration_batch': 0.9908470648985642, 'duration_size': 0.03200251389734493, 'avg_pred_std': 0.2254649091225404}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006277609076350927, 'avg_role_model_std_loss': 0.14356680174491235, 'avg_role_model_mean_pred_loss': 0.00013798014311760197, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.006277609076350927, 'n_size': 200, 'n_batch': 7, 'duration': 5.7300498485565186, 'duration_batch': 0.8185785497937884, 'duration_size': 0.028650249242782592, 'avg_pred_std': 0.22262855087007796}\n", + "Epoch 18\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.007534695684823774, 'avg_role_model_std_loss': 0.3208546875018958, 'avg_role_model_mean_pred_loss': 0.00010450999359942362, 'avg_role_model_g_mag_loss': 0.19085259715222425, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.007654703085409095, 'n_size': 805, 'n_batch': 26, 'duration': 25.956060647964478, 'duration_batch': 0.9983100249217107, 'duration_size': 0.03224355359995587, 'avg_pred_std': 0.22178831610542077}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009184504207223654, 'avg_role_model_std_loss': 1.1635616980493069, 'avg_role_model_mean_pred_loss': 0.00015264103557683484, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009184504207223654, 'n_size': 200, 'n_batch': 7, 'duration': 5.710332632064819, 'duration_batch': 0.8157618045806885, 'duration_size': 0.028551663160324096, 'avg_pred_std': 0.19095393376691}\n", + "Stopped False\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Eval loss {'role_model': 'realtabformer', 'n_size': 200, 'n_batch': 7, 'role_model_metrics': {'avg_loss': 0.009664139151573181, 'avg_g_mag_loss': 0.04072767317295074, 'avg_g_cos_loss': 0.0, 'pred_duration': 0.22153377532958984, 'grad_duration': 0.10915565490722656, 'total_duration': 0.3306894302368164, 'pred_std': 0.2070867419242859, 'std_loss': 0.024736102670431137, 'mean_pred_loss': 6.53390889056027e-05, 'pred_rmse': 0.09830635040998459, 'pred_mae': 0.07334895431995392, 'pred_mape': 0.15602120757102966, 'grad_rmse': 0.44130414724349976, 'grad_mae': 0.171650692820549, 'grad_mape': 1.914702296257019}, 'non_role_model_metrics': {'avg_loss': 0, 'avg_g_mag_loss': 0, 'avg_g_cos_loss': 0, 'avg_pred_duration': 0, 'avg_grad_duration': 0, 'avg_total_duration': 0, 'avg_pred_std': 0, 'avg_std_loss': 0, 'avg_mean_pred_loss': 0}, 'avg_metrics': {'avg_loss': 0.009664139151573181, 'avg_g_mag_loss': 0.04072767317295074, 'avg_g_cos_loss': 0.0, 'avg_pred_duration': 0.22153377532958984, 'avg_grad_duration': 0.10915565490722656, 'avg_total_duration': 0.3306894302368164, 'avg_pred_std': 0.2070867419242859, 'avg_std_loss': 0.024736102670431137, 'avg_mean_pred_loss': 6.53390889056027e-05}, 'min_metrics': {'avg_loss': 0.009664139151573181, 'avg_g_mag_loss': 0.04072767317295074, 'avg_g_cos_loss': 0.0, 'pred_duration': 0.22153377532958984, 'grad_duration': 0.10915565490722656, 'total_duration': 0.3306894302368164, 'pred_std': 0.2070867419242859, 'std_loss': 0.024736102670431137, 'mean_pred_loss': 6.53390889056027e-05, 'pred_rmse': 0.09830635040998459, 'pred_mae': 0.07334895431995392, 'pred_mape': 0.15602120757102966, 'grad_rmse': 0.44130414724349976, 'grad_mae': 0.171650692820549, 'grad_mape': 1.914702296257019}, 'model_metrics': {'realtabformer': {'avg_loss': 0.009664139151573181, 'avg_g_mag_loss': 0.04072767317295074, 'avg_g_cos_loss': 0.0, 'pred_duration': 0.22153377532958984, 'grad_duration': 0.10915565490722656, 'total_duration': 0.3306894302368164, 'pred_std': 0.2070867419242859, 'std_loss': 0.024736102670431137, 'mean_pred_loss': 6.53390889056027e-05, 'pred_rmse': 0.09830635040998459, 'pred_mae': 0.07334895431995392, 'pred_mape': 0.15602120757102966, 'grad_rmse': 0.44130414724349976, 'grad_mae': 0.171650692820549, 'grad_mape': 1.914702296257019}}}\n" + ] + } + ], + "source": [ + "import torch\n", + "from ml_utility_loss.loss_learning.estimator.pipeline import train, train_2\n", + "from ml_utility_loss.loss_learning.estimator.process_simple import train_epoch, eval as _eval\n", + "from ml_utility_loss.params import GradientPenaltyMode\n", + "from ml_utility_loss.util import clear_memory\n", + "import time\n", + "#torch.autograd.set_detect_anomaly(True)\n", + "\n", + "del model\n", + "clear_memory()\n", + "\n", + "#opt = params[\"Optim\"](model.parameters())\n", + "loss = train_2(\n", + " [train_set, val_set, test_set],\n", + " preprocessor=preprocessor,\n", + " #whole_model=model,\n", + " #optim=opt,\n", + " log_dir=\"logs\",\n", + " checkpoint_dir=None,\n", + " verbose=True,\n", + " allow_same_prediction=allow_same_prediction,\n", + " wandb=wandb if log_wandb else None,\n", + " study_name=study_name,\n", + " **params\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9b514a07", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:06.319324Z", + "iopub.status.busy": "2024-07-23T12:59:06.319000Z", + "iopub.status.idle": "2024-07-23T12:59:06.323680Z", + "shell.execute_reply": "2024-07-23T12:59:06.322662Z" + }, + "papermill": { + "duration": 0.025746, + "end_time": "2024-07-23T12:59:06.325706", + "exception": false, + "start_time": "2024-07-23T12:59:06.299960", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "model = loss[\"whole_model\"]\n", + "opt = loss[\"optim\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "331a49e1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:06.360637Z", + "iopub.status.busy": "2024-07-23T12:59:06.360325Z", + "iopub.status.idle": "2024-07-23T12:59:06.403330Z", + "shell.execute_reply": "2024-07-23T12:59:06.402584Z" + }, + "papermill": { + "duration": 0.063145, + "end_time": "2024-07-23T12:59:06.405513", + "exception": false, + "start_time": "2024-07-23T12:59:06.342368", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import torch\n", + "from copy import deepcopy\n", + "\n", + "torch.save(deepcopy(model.state_dict()), \"model.pt\")\n", + "#torch.save(deepcopy(opt.state_dict()), \"optim.pt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "123b4b17", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:06.443018Z", + "iopub.status.busy": "2024-07-23T12:59:06.442693Z", + "iopub.status.idle": "2024-07-23T12:59:06.744573Z", + "shell.execute_reply": "2024-07-23T12:59:06.743643Z" + }, + "papermill": { + "duration": 0.323158, + "end_time": "2024-07-23T12:59:06.746729", + "exception": false, + "start_time": "2024-07-23T12:59:06.423571", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/K8W7wukhkZtOUPqloqLizl27Bi///3vmTBhAoMHD+ann35yKHPPPfdQXV1NZmYmGzduZObMmfbXBg4cSF1dHfv377c/d+LEiZ/to60GDx7MwYMHqaiosD/39ddfo9FoGDhwoP25UaNGsWTJEnbs2MH111/Pxo0b7a/Fx8fzxBNP8Mknn3Dffffx2muvtfq5er0ei8XSpjru2LGDmJgYfve73zFmzBgGDBhgb1T3NN4XSNLt360FBwcTEhLCK6+8wokTJ/jss89ITU11KOPv709KSgpLly7l6NGjzJgxw/7aoEGDSExMZP78+ezevZv9+/czf/58fH192zUXa+bMmRiNRmbPns23337L9u3b+Y//+A8eeughwsPDyc3NZcmSJeTk5HD69Gk++eQTjh8/zuDBg6mqqmLRokVkZ2dz+vRpvv76a7755huHNqbmxMbGUl5eTlZWFkVFRVRWVjZbdsCAAeTl5bF582ZOnjzJiy++2OGzsKulXYG0du1aYmNjMRqNJCQksHv37mbLrl+/nvHjxxMcHExwcDCJiYk/Kz9nzhx792XDlpyc3J6qtaqxDUku2bojjUbD5s2b2bt3L9dffz1PPPEEq1at+lm5mTNncvDgQcaPH8+1117r8Nqbb75JeHg4t956K/fee6+9x8loNLpcHz8/Pz7++GMuXbrEjTfeyP3338+ECRN46aWX7K9///33TJ06lfj4eObPn8/ChQv59a9/jVarpbi4mFmzZhEfH8+DDz7IpEmT+MMf/tDq59500008+uijTJs2jT59+rBy5cpmy95999088cQTLFq0iJEjR7Jjxw6WLl3q8rF2CdVFmzdvVvV6vbphwwb1u+++U+fNm6cGBQWphYWFTsv/6le/UteuXavu379fPXr0qDpnzhzVZDKpZ86csZeZPXu2mpycrJ4/f96+Xbp0qc11KikpUQG1pKSk1bJFZdVqzNMfqDFPf6DW1lna/Bk9TVVVlXrkyBG1qqrK3VVxu/z8fBVQt23b5u6qdGst/Ztq63fU5V62F154gXnz5jF37lwA1q1bx4cffsiGDRv47W9/+7Pyb731lsPPr776Ku+99x5ZWVnMmjXL/rzBYHDahelMTU0NNTU19p9LS0vbXP8AY2NDXVl1HcH+rY9iFT3LZ599Rnl5OcOGDeP8+fM89dRTxMbGcuutt7q7al7PpUs2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "history = loss[\"history\"]\n", + "history.to_csv(\"history.csv\")\n", + "history[[\"avg_loss_train\", \"avg_loss_test\"]].plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "2586ba0a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:06.783475Z", + "iopub.status.busy": "2024-07-23T12:59:06.783175Z", + "iopub.status.idle": "2024-07-23T12:59:13.816694Z", + "shell.execute_reply": "2024-07-23T12:59:13.815649Z" + }, + "papermill": { + "duration": 7.054441, + "end_time": "2024-07-23T12:59:13.819169", + "exception": false, + "start_time": "2024-07-23T12:59:06.764728", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "from ml_utility_loss.loss_learning.estimator.pipeline import eval\n", + "#eval_loss = loss[\"eval_loss\"]\n", + "\n", + "batch_size = params[\"batch_size_low\"] if \"batch_size_low\" in params else params[\"batch_size\"]\n", + "\n", + "eval_loss = eval(\n", + " test_set, model,\n", + " batch_size=batch_size,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "187137f6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:13.857230Z", + "iopub.status.busy": "2024-07-23T12:59:13.856483Z", + "iopub.status.idle": "2024-07-23T12:59:13.876622Z", + "shell.execute_reply": "2024-07-23T12:59:13.875735Z" + }, + "papermill": { + "duration": 0.041145, + "end_time": "2024-07-23T12:59:13.878556", + "exception": false, + "start_time": "2024-07-23T12:59:13.837411", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
avg_g_cos_lossavg_g_mag_lossavg_lossgrad_durationgrad_maegrad_mapegrad_rmsemean_pred_losspred_durationpred_maepred_mapepred_rmsepred_stdstd_losstotal_duration
realtabformer0.00.0432170.0096640.1067580.1716511.9147020.4413040.0000650.2210370.0733490.1560210.0983060.2070870.0247360.327795
\n", + "
" + ], + "text/plain": [ + " avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration \\\n", + "realtabformer 0.0 0.043217 0.009664 0.106758 \n", + "\n", + " grad_mae grad_mape grad_rmse mean_pred_loss pred_duration \\\n", + "realtabformer 0.171651 1.914702 0.441304 0.000065 0.221037 \n", + "\n", + " pred_mae pred_mape pred_rmse pred_std std_loss \\\n", + "realtabformer 0.073349 0.156021 0.098306 0.207087 0.024736 \n", + "\n", + " total_duration \n", + "realtabformer 0.327795 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "metrics = pd.DataFrame(eval_loss[\"model_metrics\"]).T\n", + "metrics.to_csv(\"eval.csv\")\n", + "metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "123d305b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:13.914679Z", + "iopub.status.busy": "2024-07-23T12:59:13.914402Z", + "iopub.status.idle": "2024-07-23T12:59:14.207392Z", + "shell.execute_reply": "2024-07-23T12:59:14.206407Z" + }, + "papermill": { + "duration": 0.313594, + "end_time": "2024-07-23T12:59:14.209573", + "exception": false, + "start_time": "2024-07-23T12:59:13.895979", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ml_utility_loss.util import clear_memory\n", + "clear_memory()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "a3eecc2a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:14.247720Z", + "iopub.status.busy": "2024-07-23T12:59:14.247394Z", + "iopub.status.idle": "2024-07-23T12:59:20.990069Z", + "shell.execute_reply": "2024-07-23T12:59:20.989232Z" + }, + "papermill": { + "duration": 6.764225, + "end_time": "2024-07-23T12:59:20.992364", + "exception": false, + "start_time": "2024-07-23T12:59:14.228139", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Caching in ../../../../iris/_cache_aug_test/realtabformer/all inf False\n", + "Caching in ../../../../iris/_cache_bs_test/realtabformer/all inf False\n", + "Caching in ../../../../iris/_cache_synth_test/realtabformer/all inf False\n" + ] + } + ], + "source": [ + "#\"\"\"\n", + "from ml_utility_loss.loss_learning.estimator.process import pred, pred_2\n", + "from ml_utility_loss.util import stack_samples\n", + "\n", + "#samples = test_set[list(range(len(test_set)))]\n", + "#y = {m: pred(model[m], s) for m, s in samples.items()}\n", + "y = pred_2(model, test_set, batch_size=batch_size)\n", + "#\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "6ab51db8", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:21.031647Z", + "iopub.status.busy": "2024-07-23T12:59:21.030689Z", + "iopub.status.idle": "2024-07-23T12:59:21.045173Z", + "shell.execute_reply": "2024-07-23T12:59:21.044266Z" + }, + "papermill": { + "duration": 0.036286, + "end_time": "2024-07-23T12:59:21.047098", + "exception": false, + "start_time": "2024-07-23T12:59:21.010812", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "from ml_utility_loss.util import transpose_dict\n", + "\n", + "os.makedirs(\"pred\", exist_ok=True)\n", + "y2 = transpose_dict(y)\n", + "for k, v in y2.items():\n", + " df = pd.DataFrame(v)\n", + " df.to_csv(f\"pred/{k}.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "d81a30f1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:21.083449Z", + "iopub.status.busy": "2024-07-23T12:59:21.082752Z", + "iopub.status.idle": "2024-07-23T12:59:21.088005Z", + "shell.execute_reply": "2024-07-23T12:59:21.087143Z" + }, + "papermill": { + "duration": 0.025707, + "end_time": "2024-07-23T12:59:21.090084", + "exception": false, + "start_time": "2024-07-23T12:59:21.064377", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'realtabformer': 0.749708737283945}\n" + ] + } + ], + "source": [ + "print({k: sum(v[\"pred\"])/len(v[\"pred\"]) for k, v in y.items()})" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "3b3ff322", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:21.126510Z", + "iopub.status.busy": "2024-07-23T12:59:21.125823Z", + "iopub.status.idle": "2024-07-23T12:59:21.449061Z", + "shell.execute_reply": "2024-07-23T12:59:21.448156Z" + }, + "papermill": { + "duration": 0.343728, + "end_time": "2024-07-23T12:59:21.451089", + "exception": false, + "start_time": "2024-07-23T12:59:21.107361", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from ml_utility_loss.loss_learning.visualization import plot_pred_density_2\n", + "\n", + "_ = plot_pred_density_2(y)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "e79e4b0f", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:21.490309Z", + "iopub.status.busy": "2024-07-23T12:59:21.489643Z", + "iopub.status.idle": "2024-07-23T12:59:21.839666Z", + "shell.execute_reply": "2024-07-23T12:59:21.838265Z" + }, + "papermill": { + "duration": 0.372859, + "end_time": "2024-07-23T12:59:21.842835", + "exception": false, + "start_time": "2024-07-23T12:59:21.469976", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from ml_utility_loss.loss_learning.visualization import plot_density_3\n", + "\n", + "_ = plot_density_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "745adde1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:21.895211Z", + "iopub.status.busy": "2024-07-23T12:59:21.894501Z", + "iopub.status.idle": "2024-07-23T12:59:22.149899Z", + "shell.execute_reply": "2024-07-23T12:59:22.148836Z" + }, + "papermill": { + "duration": 0.281171, + "end_time": "2024-07-23T12:59:22.151989", + "exception": false, + "start_time": "2024-07-23T12:59:21.870818", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from ml_utility_loss.loss_learning.visualization import plot_box_3\n", + "\n", + "_ = plot_box_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "eabe1bab", + "metadata": { + "execution": { + "iopub.execute_input": "2024-07-23T12:59:22.194569Z", + "iopub.status.busy": "2024-07-23T12:59:22.193720Z", + "iopub.status.idle": "2024-07-23T12:59:22.490825Z", + "shell.execute_reply": "2024-07-23T12:59:22.489830Z" + }, + "papermill": { + "duration": 0.320852, + "end_time": "2024-07-23T12:59:22.493204", + "exception": false, + "start_time": "2024-07-23T12:59:22.172352", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#\"\"\"\n", + "from ml_utility_loss.loss_learning.visualization import plot_grad, plot_grad_2, plot_grad_3\n", + "import matplotlib.pyplot as plt\n", + "\n", + "#plot_grad_2(y, model.models)\n", + "for m in model.models:\n", + " ym = y[m]\n", + " fig, ax = plt.subplots()\n", + " plot_grad_3(ym[\"error\"], ym[\"grad\"], name=f\"{m}_grad\", fig=fig, ax=ax)\n", + "#\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54c0e9f3", + "metadata": { + "papermill": { + "duration": 0.020611, + "end_time": "2024-07-23T12:59:22.534220", + "exception": false, + "start_time": "2024-07-23T12:59:22.513609", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "accelerator": "GPU", + "celltoolbar": "Tags", + "colab": { + "authorship_tag": "ABX9TyOOVfelovKP9fLGU7SvvRie", + "gpuType": "T4", + "mount_file_id": "17POSGAvge8y9DW9WGs2jLkibaRjToayg", + "provenance": [] + }, + "kaggle": { + "accelerator": "gpu", + "dataSources": [], + "dockerImageVersionId": 30648, + "isGpuEnabled": true, + "isInternetEnabled": true, + "language": "python", + "sourceType": "notebook" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.13" + }, + "papermill": { + "default_parameters": {}, + "duration": 805.459966, + "end_time": "2024-07-23T12:59:25.085354", + "environment_variables": {}, + "exception": null, + "input_path": "eval/iris/realtabformer/4/mlu-eval.ipynb", + "output_path": "eval/iris/realtabformer/4/mlu-eval.ipynb", + "parameters": { + "allow_same_prediction": true, + "dataset": "iris", + "dataset_name": "iris", + "debug": false, + "folder": "eval", + "gp": true, + "gp_multiply": true, + "log_wandb": false, + "param_index": 0, + "path": "eval/iris/realtabformer/4", + "path_prefix": "../../../../", + "random_seed": 4, + "single_model": "realtabformer" + }, + "start_time": "2024-07-23T12:45:59.625388", + "version": "2.5.0" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/iris/realtabformer/4/model.pt b/iris/realtabformer/4/model.pt new file mode 100644 index 0000000000000000000000000000000000000000..66eebd7f99fc626521622f79a5c27fbf09b9e7fe --- /dev/null +++ b/iris/realtabformer/4/model.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8a6e502ef39920e65156d5876cf1f0378f2b8445dc67c53ea031c0200614201 +size 5937089 diff --git a/iris/realtabformer/4/params.json b/iris/realtabformer/4/params.json new file mode 100644 index 0000000000000000000000000000000000000000..e2772763438c022a440e8056c3c96ab80af1e383 --- /dev/null +++ b/iris/realtabformer/4/params.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93f4067dc41f38d7dee1638127bed1a3069508a4d882394f1ec70bb6e1ec4d8c +size 1924 diff --git a/iris/realtabformer/4/pred/error.csv b/iris/realtabformer/4/pred/error.csv new file mode 100644 index 0000000000000000000000000000000000000000..3cca63711b7be14c9e0511e33c526e5ed3c130e3 --- /dev/null +++ b/iris/realtabformer/4/pred/error.csv @@ -0,0 +1,201 @@ +,realtabformer +0,0.07273631 +1,0.16791707 +2,-0.056459725 +3,-0.06329006 +4,0.0316927 +5,0.28284696 +6,-0.046721518 +7,-0.068413794 +8,0.083873495 +9,-0.09433907 +10,-0.0494017 +11,0.0020919442 +12,0.117674604 +13,-0.073815346 +14,0.042366505 +15,-0.01249063 +16,0.047340706 +17,0.08905876 +18,-0.018413365 +19,-0.042131245 +20,0.09017818 +21,0.25968677 +22,-0.08742857 +23,-0.04488206 +24,0.0245945 +25,0.119111 +26,-0.030123353 +27,-0.064974904 +28,0.08261846 +29,0.10204345 +30,0.019614339 +31,-0.04652375 +32,0.12693395 +33,0.13765639 +34,-0.11075854 +35,-0.116363525 +36,0.021684721 +37,0.19562316 +38,0.039360285 +39,-0.08157611 +40,-0.1077908 +41,-0.06282121 +42,-0.11503208 +43,0.10617775 +44,0.029250398 +45,0.052922845 +46,-0.0658021 +47,-0.06259096 +48,0.07336126 +49,0.08301926 +50,-0.05645144 +51,0.08811307 +52,0.13255931 +53,0.06728715 +54,-0.123322606 +55,-0.061995804 +56,0.034270182 +57,0.18796617 +58,-0.10659802 +59,0.047028065 +60,0.05463952 +61,-0.01746434 +62,-0.105608225 +63,-0.028479338 +64,-0.048826516 +65,0.061823428 +66,0.0012177825 +67,-0.061427236 +68,-0.02549547 +69,0.0035728812 +70,0.0032759905 +71,0.11087692 +72,-0.19371188 +73,-0.12439412 +74,-0.06922424 +75,-0.13615459 +76,0.03745219 +77,0.021527588 +78,0.01760757 +79,-0.020166993 +80,-0.005640328 +81,-0.030020833 +82,-0.120929 +83,-0.037450314 +84,0.09154895 +85,0.026661158 +86,-0.008529246 +87,-0.028757334 +88,0.23010688 +89,-0.043801486 +90,-0.016349673 +91,-0.029981196 +92,-0.20377383 +93,-0.08987218 +94,-0.11269921 +95,-0.15969342 +96,0.121005386 +97,-0.040359616 +98,-0.0028357506 +99,-0.06847018 +100,0.012531906 +101,0.0036471486 +102,-0.10245657 +103,-0.03992462 +104,0.3614546 +105,0.045286357 +106,-0.07730085 +107,-0.018081665 +108,0.24588151 +109,0.083223104 +110,0.013738453 +111,-0.0064417124 +112,0.03197068 +113,-0.035369873 +114,-0.11893517 +115,-0.12177217 +116,0.326719 +117,0.025750875 +118,0.0045832396 +119,-0.06565666 +120,0.005896628 +121,-0.0010988712 +122,-0.12122393 +123,-0.0294348 +124,0.021861434 +125,0.064774275 +126,0.029894888 +127,0.03203398 +128,-0.0043988824 +129,-0.034789026 +130,-0.048286617 +131,-0.074730694 +132,0.05317539 +133,-0.0628131 +134,-0.10617399 +135,-0.1198796 +136,0.012140453 +137,0.00874871 +138,0.0045129657 +139,0.14900798 +140,0.03979951 +141,0.098175585 +142,-0.039175868 +143,-0.054842055 +144,-0.02766633 +145,0.02414304 +146,-0.034208834 +147,0.107334316 +148,0.2580328 +149,0.014326394 +150,-0.04615462 +151,-0.07073593 +152,0.029474318 +153,-0.12554961 +154,-0.108077586 +155,-0.1544953 +156,0.15274337 +157,-0.0116965175 +158,0.017214537 +159,0.006405771 +160,0.05208981 +161,0.11003095 +162,-0.10287058 +163,-0.036248982 +164,-0.011628866 +165,0.013323963 +166,-0.074260294 +167,-0.023923874 +168,0.2460104 +169,0.09336877 +170,-0.039006412 +171,-0.0914191 +172,0.037143588 +173,-0.06725931 +174,-0.13453388 +175,-0.11955309 +176,0.22557256 +177,-0.0045555234 +178,-0.051120102 +179,-0.002792716 +180,0.15200323 +181,0.19919455 +182,-0.08043957 +183,-0.043110907 +184,-0.028988063 +185,0.05083865 +186,-0.06437695 +187,0.015814781 +188,0.021084398 +189,0.005019009 +190,-0.049223065 +191,-0.13462472 +192,0.012274861 +193,-0.11302626 +194,-0.017697692 +195,-0.03208196 +196,-0.30412662 +197,-0.048974693 +198,-0.054974258 +199,0.018745184 diff --git a/iris/realtabformer/4/pred/g.csv b/iris/realtabformer/4/pred/g.csv new file mode 100644 index 0000000000000000000000000000000000000000..4a001178c29a5a960c2f47048127dfca16b47df9 --- /dev/null +++ b/iris/realtabformer/4/pred/g.csv @@ -0,0 +1,201 @@ +,realtabformer +0,0.07273631 +1,0.16791707 +2,0.056459725 +3,0.06329006 +4,0.0316927 +5,0.28284696 +6,0.046721518 +7,0.068413794 +8,0.083873495 +9,0.09433907 +10,0.0494017 +11,0.0020919442 +12,0.117674604 +13,0.073815346 +14,0.042366505 +15,0.01249063 +16,0.047340706 +17,0.08905876 +18,0.018413365 +19,0.042131245 +20,0.09017818 +21,0.25968677 +22,0.08742857 +23,0.04488206 +24,0.0245945 +25,0.119111 +26,0.030123353 +27,0.064974904 +28,0.08261846 +29,0.10204345 +30,0.019614339 +31,0.04652375 +32,0.12693395 +33,0.13765639 +34,0.11075854 +35,0.116363525 +36,0.021684721 +37,0.19562316 +38,0.039360285 +39,0.08157611 +40,0.1077908 +41,0.06282121 +42,0.11503208 +43,0.10617775 +44,0.029250398 +45,0.052922845 +46,0.0658021 +47,0.06259096 +48,0.07336126 +49,0.08301926 +50,0.05645144 +51,0.08811307 +52,0.13255931 +53,0.06728715 +54,0.123322606 +55,0.061995804 +56,0.034270182 +57,0.18796617 +58,0.10659802 +59,0.047028065 +60,0.05463952 +61,0.01746434 +62,0.105608225 +63,0.028479338 +64,0.048826516 +65,0.061823428 +66,0.0012177825 +67,0.061427236 +68,0.02549547 +69,0.0035728812 +70,0.0032759905 +71,0.11087692 +72,0.19371188 +73,0.12439412 +74,0.06922424 +75,0.13615459 +76,0.03745219 +77,0.021527588 +78,0.01760757 +79,0.020166993 +80,0.005640328 +81,0.030020833 +82,0.120929 +83,0.037450314 +84,0.09154895 +85,0.026661158 +86,0.008529246 +87,0.028757334 +88,0.23010688 +89,0.043801486 +90,0.016349673 +91,0.029981196 +92,0.20377383 +93,0.08987218 +94,0.11269921 +95,0.15969342 +96,0.121005386 +97,0.040359616 +98,0.0028357506 +99,0.06847018 +100,0.012531906 +101,0.0036471486 +102,0.10245657 +103,0.03992462 +104,0.3614546 +105,0.045286357 +106,0.07730085 +107,0.018081665 +108,0.24588151 +109,0.083223104 +110,0.013738453 +111,0.0064417124 +112,0.03197068 +113,0.035369873 +114,0.11893517 +115,0.12177217 +116,0.326719 +117,0.025750875 +118,0.0045832396 +119,0.06565666 +120,0.005896628 +121,0.0010988712 +122,0.12122393 +123,0.0294348 +124,0.021861434 +125,0.064774275 +126,0.029894888 +127,0.03203398 +128,0.0043988824 +129,0.034789026 +130,0.048286617 +131,0.074730694 +132,0.05317539 +133,0.0628131 +134,0.10617399 +135,0.1198796 +136,0.012140453 +137,0.00874871 +138,0.0045129657 +139,0.14900798 +140,0.03979951 +141,0.098175585 +142,0.039175868 +143,0.054842055 +144,0.02766633 +145,0.02414304 +146,0.034208834 +147,0.107334316 +148,0.2580328 +149,0.014326394 +150,0.04615462 +151,0.07073593 +152,0.029474318 +153,0.12554961 +154,0.108077586 +155,0.1544953 +156,0.15274337 +157,0.0116965175 +158,0.017214537 +159,0.006405771 +160,0.05208981 +161,0.11003095 +162,0.10287058 +163,0.036248982 +164,0.011628866 +165,0.013323963 +166,0.074260294 +167,0.023923874 +168,0.2460104 +169,0.09336877 +170,0.039006412 +171,0.0914191 +172,0.037143588 +173,0.06725931 +174,0.13453388 +175,0.11955309 +176,0.22557256 +177,0.0045555234 +178,0.051120102 +179,0.002792716 +180,0.15200323 +181,0.19919455 +182,0.08043957 +183,0.043110907 +184,0.028988063 +185,0.05083865 +186,0.06437695 +187,0.015814781 +188,0.021084398 +189,0.005019009 +190,0.049223065 +191,0.13462472 +192,0.012274861 +193,0.11302626 +194,0.017697692 +195,0.03208196 +196,0.30412662 +197,0.048974693 +198,0.054974258 +199,0.018745184 diff --git a/iris/realtabformer/4/pred/grad.csv b/iris/realtabformer/4/pred/grad.csv new file mode 100644 index 0000000000000000000000000000000000000000..dac3818834f3f3896a7d057e20c2d2ffb15dbec7 --- /dev/null +++ b/iris/realtabformer/4/pred/grad.csv @@ -0,0 +1,201 @@ +,realtabformer +0,0.10333325 +1,0.97974294 +2,0.1607016 +3,0.11905476 +4,0.08757826 +5,2.2492523 +6,0.051493976 +7,0.09517407 +8,0.081030734 +9,0.34086144 +10,0.13475554 +11,0.0030108008 +12,0.09000517 +13,0.26090896 +14,0.064383216 +15,0.027928708 +16,0.055567842 +17,0.4335492 +18,0.091711655 +19,0.08710449 +20,0.14365664 +21,4.3176627 +22,0.23724051 +23,0.0936322 +24,0.07011745 +25,0.1674481 +26,0.018300325 +27,0.07234237 +28,0.13643083 +29,0.57219785 +30,0.05626611 +31,0.09373829 +32,0.18087856 +33,1.253483 +34,0.1746572 +35,0.26613748 +36,0.026330385 +37,2.5857506 +38,0.18032181 +39,0.3368969 +40,0.21121173 +41,0.6332964 +42,0.3197147 +43,0.2237296 +44,0.06337989 +45,0.1803647 +46,0.037761383 +47,0.08713336 +48,0.12177601 +49,0.5015108 +50,0.13940734 +51,0.16846892 +52,0.16112888 +53,0.7658201 +54,0.28636426 +55,0.12318515 +56,0.066487215 +57,0.95336044 +58,0.48685348 +59,0.15232836 +60,0.1710149 +61,0.08591924 +62,0.34590444 +63,0.037980724 +64,0.113563545 +65,0.12385973 +66,0.0005555288 +67,0.070415504 +68,0.054328885 +69,0.008854537 +70,0.007431594 +71,0.2134022 +72,0.18077964 +73,1.0900888 +74,0.12460668 +75,0.33431697 +76,0.10874401 +77,0.091798976 +78,0.042354867 +79,0.052162685 +80,0.012004449 +81,0.10486326 +82,0.37141225 +83,0.062966585 +84,0.16895531 +85,0.06649927 +86,0.004759941 +87,0.04382909 +88,0.41021097 +89,0.11778978 +90,0.043524157 +91,0.058423728 +92,0.22155583 +93,1.0177252 +94,0.20249827 +95,0.38269922 +96,0.32399595 +97,0.4657627 +98,0.012282524 +99,0.117549285 +100,0.035428416 +101,0.0037434178 +102,0.34400198 +103,0.052407302 +104,1.937885 +105,0.094126135 +106,0.07724394 +107,0.021813957 +108,0.3087038 +109,0.0955827 +110,0.03058854 +111,0.008757994 +112,0.06948762 +113,0.29770926 +114,0.3881264 +115,0.23188904 +116,0.7985934 +117,0.080053486 +118,0.013023743 +119,0.098373465 +120,0.017156849 +121,0.0016966832 +122,0.32403034 +123,0.03707892 +124,0.062806726 +125,0.056838922 +126,0.040127996 +127,0.041798297 +128,0.012390213 +129,0.032206595 +130,0.13007842 +131,0.13577779 +132,0.1443402 +133,0.36574575 +134,0.2125064 +135,0.1973481 +136,0.02832674 +137,0.027169866 +138,0.016893642 +139,0.37701118 +140,0.10050014 +141,0.1246273 +142,0.09746847 +143,0.06771256 +144,0.08462907 +145,0.03243602 +146,0.015505119 +147,0.10865178 +148,0.2757824 +149,0.055051293 +150,0.13372657 +151,0.15871285 +152,0.08328014 +153,0.9666837 +154,0.24553539 +155,0.40883952 +156,0.39508712 +157,0.085275985 +158,0.050115157 +159,0.009641225 +160,0.1381885 +161,0.18681088 +162,0.2487222 +163,0.05583731 +164,0.03506404 +165,0.026255688 +166,0.0749371 +167,0.038149796 +168,0.7538125 +169,0.13358736 +170,0.07402925 +171,0.19707869 +172,0.09452383 +173,0.6084204 +174,0.20324516 +175,0.19757831 +176,0.56618524 +177,0.017617878 +178,0.18380062 +179,0.0041415826 +180,0.4770148 +181,0.36812633 +182,0.2012826 +183,0.07842097 +184,0.08136565 +185,0.051237687 +186,0.041981064 +187,0.023989467 +188,0.033352043 +189,0.015873713 +190,0.14283574 +191,0.2882969 +192,0.036247835 +193,0.819297 +194,0.028752077 +195,0.05252818 +196,0.982257 +197,0.49072072 +198,0.24434383 +199,0.025759418 diff --git a/iris/realtabformer/4/pred/pred.csv b/iris/realtabformer/4/pred/pred.csv new file mode 100644 index 0000000000000000000000000000000000000000..f0d72120f545d5576423b20f912af792cde0a7e2 --- /dev/null +++ b/iris/realtabformer/4/pred/pred.csv @@ -0,0 +1,201 @@ +,realtabformer +0,0.2515981 +1,0.51876247 +2,0.8459212 +3,0.8696919 +4,0.21055448 +5,0.6923708 +6,0.9198616 +7,0.8974856 +8,0.25054017 +9,0.5643656 +10,0.84851617 +11,0.8484316 +12,0.28434128 +13,0.55408126 +14,0.76091725 +15,0.77322364 +16,0.21400738 +17,0.53278345 +18,0.8475799 +19,0.8603388 +20,0.26903996 +21,0.7728181 +22,0.81567436 +23,0.8574989 +24,0.20345628 +25,0.94860804 +26,0.9381306 +27,0.89954424 +28,0.24928513 +29,0.90795976 +30,0.8854165 +31,0.83417803 +32,0.29360062 +33,0.7327561 +34,0.76884013 +35,0.7836193 +36,0.1883514 +37,0.86228985 +38,0.8711257 +39,0.85574585 +40,0.30887586 +41,0.8495597 +42,0.82688713 +43,0.85342574 +44,0.20811218 +45,0.94625616 +46,0.9341979 +47,0.9039922 +48,0.24002793 +49,0.88893557 +50,0.8722285 +51,0.8619636 +52,0.299226 +53,0.78633475 +54,0.772516 +55,0.77398306 +56,0.2564924 +57,0.9121831 +58,0.83072394 +59,0.85241526 +60,0.47130617 +61,0.8949166 +62,0.836311 +63,0.90450263 +64,0.52106595 +65,0.9568238 +66,0.93446755 +67,0.9051559 +68,0.34501734 +69,0.9242078 +70,0.86907816 +71,0.84390116 +72,0.37771672 +73,0.7613202 +74,0.7667546 +75,0.7888454 +76,0.4790735 +77,0.89930534 +78,0.88360083 +79,0.8887357 +80,0.47584116 +81,0.8823601 +82,0.8209902 +83,0.9044689 +84,0.5377028 +85,0.9593211 +86,0.92568684 +87,0.9039026 +88,0.4523291 +89,0.9146845 +90,0.8815682 +91,0.84224105 +92,0.36765477 +93,0.7897265 +94,0.75946784 +95,0.7714177 +96,0.5019578 +97,0.8685431 +98,0.8613037 +99,0.87092376 +100,0.4940134 +101,0.9160281 +102,0.83946264 +103,0.9019946 +104,0.5281213 +105,0.94028676 +106,0.92269915 +107,0.9131353 +108,0.46810374 +109,0.9258157 +110,0.8795406 +111,0.8642136 +112,0.6033993 +113,0.8503444 +114,0.77690345 +115,0.77406645 +116,0.48358172 +117,0.8959981 +118,0.8687227 +119,0.8737373 +120,0.51140386 +121,0.91128206 +122,0.8206953 +123,0.9124844 +124,0.5917539 +125,0.9597747 +126,0.92805696 +127,0.9270344 +128,0.50144905 +129,0.92369694 +130,0.8803933 +131,0.88375527 +132,0.624604 +133,0.79052025 +134,0.76599306 +135,0.7709265 +136,0.4817628 +137,0.9176514 +138,0.8747602 +139,0.84757257 +140,0.521281 +141,0.9156718 +142,0.8236835 +143,0.91617244 +144,0.54222614 +145,0.95536 +146,0.93404514 +147,0.9224419 +148,0.48025504 +149,0.89667934 +150,0.8825253 +151,0.85998666 +152,0.6009029 +153,0.8003763 +154,0.76408947 +155,0.7705047 +156,0.4762728 +157,0.8972062 +158,0.881354 +159,0.8727239 +160,0.5335713 +161,0.9071324 +162,0.8390486 +163,0.9056702 +164,0.5582636 +165,0.9413543 +166,0.9257397 +167,0.9040437 +168,0.518525 +169,0.91322774 +170,0.88967353 +171,0.86706686 +172,0.6085722 +173,0.818455 +174,0.7562722 +175,0.7804297 +176,0.51128685 +177,0.9043472 +178,0.8448075 +179,0.8635254 +180,0.54156846 +181,0.91122735 +182,0.86147964 +183,0.8988083 +184,0.5409044 +185,0.94583905 +186,0.93562305 +187,0.9108152 +188,0.48247248 +189,0.9029369 +190,0.8794569 +191,0.8653753 +192,0.58370346 +193,0.81289965 +194,0.7641205 +195,0.76818156 +196,0.49481517 +197,0.88834727 +198,0.84095335 +199,0.8558625 diff --git a/iris/realtabformer/4/pred/y.csv b/iris/realtabformer/4/pred/y.csv new file mode 100644 index 0000000000000000000000000000000000000000..3f72bd3490b0bdb70028cf46af93594d7b81f18d --- /dev/null +++ b/iris/realtabformer/4/pred/y.csv @@ -0,0 +1,201 @@ +,realtabformer +0,0.17886178 +1,0.3508454 +2,0.90238094 +3,0.93298197 +4,0.17886178 +5,0.40952381 +6,0.96658313 +7,0.9658994 +8,0.16666667 +9,0.6587047 +10,0.89791787 +11,0.84633964 +12,0.16666667 +13,0.6278966 +14,0.71855074 +15,0.78571427 +16,0.16666667 +17,0.4437247 +18,0.86599326 +19,0.90247005 +20,0.17886178 +21,0.5131313 +22,0.90310293 +23,0.90238094 +24,0.17886178 +25,0.82949704 +26,0.96825397 +27,0.96451914 +28,0.16666667 +29,0.8059163 +30,0.86580217 +31,0.8807018 +32,0.16666667 +33,0.5950997 +34,0.8795987 +35,0.8999828 +36,0.16666667 +37,0.6666667 +38,0.8317654 +39,0.93732196 +40,0.41666666 +41,0.91238093 +42,0.9419192 +43,0.747248 +44,0.17886178 +45,0.8933333 +46,1.0 +47,0.96658313 +48,0.16666667 +49,0.8059163 +50,0.92867994 +51,0.77385056 +52,0.16666667 +53,0.7190476 +54,0.8958386 +55,0.83597887 +56,0.22222222 +57,0.72421694 +58,0.93732196 +59,0.8053872 +60,0.41666666 +61,0.91238093 +62,0.9419192 +63,0.93298197 +64,0.56989247 +65,0.8950004 +66,0.9332498 +67,0.96658313 +68,0.3705128 +69,0.9206349 +70,0.86580217 +71,0.73302424 +72,0.5714286 +73,0.8857143 +74,0.83597887 +75,0.925 +76,0.4416213 +77,0.87777776 +78,0.86599326 +79,0.9089027 +80,0.4814815 +81,0.91238093 +82,0.9419192 +83,0.9419192 +84,0.44615385 +85,0.9326599 +86,0.9342161 +87,0.9326599 +88,0.22222222 +89,0.95848596 +90,0.89791787 +91,0.87222224 +92,0.5714286 +93,0.8795987 +94,0.87216705 +95,0.9311111 +96,0.3809524 +97,0.9089027 +98,0.86413944 +99,0.93939394 +100,0.4814815 +101,0.91238093 +102,0.9419192 +103,0.9419192 +104,0.16666667 +105,0.8950004 +106,1.0 +107,0.93121696 +108,0.22222222 +109,0.8425926 +110,0.86580217 +111,0.8706553 +112,0.5714286 +113,0.8857143 +114,0.8958386 +115,0.8958386 +116,0.15686275 +117,0.87024724 +118,0.86413944 +119,0.93939394 +120,0.50550723 +121,0.91238093 +122,0.9419192 +123,0.9419192 +124,0.56989247 +125,0.8950004 +126,0.89816207 +127,0.8950004 +128,0.50584793 +129,0.95848596 +130,0.92867994 +131,0.95848596 +132,0.5714286 +133,0.85333335 +134,0.87216705 +135,0.8908061 +136,0.46962234 +137,0.9089027 +138,0.87024724 +139,0.6985646 +140,0.4814815 +141,0.81749624 +142,0.86285937 +143,0.9710145 +144,0.56989247 +145,0.93121696 +146,0.96825397 +147,0.8151076 +148,0.22222222 +149,0.88235295 +150,0.92867994 +151,0.9307226 +152,0.5714286 +153,0.9259259 +154,0.87216705 +155,0.925 +156,0.32352942 +157,0.9089027 +158,0.86413944 +159,0.8663181 +160,0.4814815 +161,0.79710144 +162,0.9419192 +163,0.9419192 +164,0.56989247 +165,0.9280303 +166,1.0 +167,0.92796755 +168,0.2725146 +169,0.81985897 +170,0.92867994 +171,0.95848596 +172,0.5714286 +173,0.8857143 +174,0.8908061 +175,0.8999828 +176,0.2857143 +177,0.9089027 +178,0.8959276 +179,0.8663181 +180,0.38956523 +181,0.7120328 +182,0.9419192 +183,0.9419192 +184,0.56989247 +185,0.8950004 +186,1.0 +187,0.8950004 +188,0.46138808 +189,0.89791787 +190,0.92867994 +191,1.0 +192,0.5714286 +193,0.9259259 +194,0.7818182 +195,0.8002635 +196,0.7989418 +197,0.93732196 +198,0.8959276 +199,0.8371173 diff --git a/iris/realtabformer/4/pred/y_real.csv b/iris/realtabformer/4/pred/y_real.csv new file mode 100644 index 0000000000000000000000000000000000000000..69282ce96ed463b85e970d319dd0a33dac8483df --- /dev/null +++ b/iris/realtabformer/4/pred/y_real.csv @@ -0,0 +1,201 @@ +,realtabformer +0,0.9419192 +1,0.9419192 +2,0.9419192 +3,0.9419192 +4,0.9658994 +5,0.9658994 +6,0.9658994 +7,0.9658994 +8,1.0 +9,1.0 +10,1.0 +11,1.0 +12,0.9259259 +13,0.9259259 +14,0.9259259 +15,0.9259259 +16,0.9073684 +17,0.9073684 +18,0.9073684 +19,0.9073684 +20,0.9419192 +21,0.9419192 +22,0.9419192 +23,0.9419192 +24,0.9658994 +25,0.9658994 +26,0.9658994 +27,0.9658994 +28,1.0 +29,1.0 +30,1.0 +31,1.0 +32,0.9259259 +33,0.9259259 +34,0.9259259 +35,0.9259259 +36,0.9073684 +37,0.9073684 +38,0.9073684 +39,0.9073684 +40,0.9419192 +41,0.9419192 +42,0.9419192 +43,0.9419192 +44,0.9658994 +45,0.9658994 +46,0.9658994 +47,0.9658994 +48,1.0 +49,1.0 +50,1.0 +51,1.0 +52,0.9259259 +53,0.9259259 +54,0.9259259 +55,0.9259259 +56,0.9073684 +57,0.9073684 +58,0.9073684 +59,0.9073684 +60,0.9419192 +61,0.9419192 +62,0.9419192 +63,0.9419192 +64,0.9658994 +65,0.9658994 +66,0.9658994 +67,0.9658994 +68,1.0 +69,1.0 +70,1.0 +71,1.0 +72,0.9259259 +73,0.9259259 +74,0.9259259 +75,0.9259259 +76,0.9073684 +77,0.9073684 +78,0.9073684 +79,0.9073684 +80,0.9419192 +81,0.9419192 +82,0.9419192 +83,0.9419192 +84,0.9658994 +85,0.9658994 +86,0.9658994 +87,0.9658994 +88,1.0 +89,1.0 +90,1.0 +91,1.0 +92,0.9259259 +93,0.9259259 +94,0.9259259 +95,0.9259259 +96,0.9073684 +97,0.9073684 +98,0.9073684 +99,0.9073684 +100,0.9419192 +101,0.9419192 +102,0.9419192 +103,0.9419192 +104,0.9658994 +105,0.9658994 +106,0.9658994 +107,0.9658994 +108,1.0 +109,1.0 +110,1.0 +111,1.0 +112,0.9259259 +113,0.9259259 +114,0.9259259 +115,0.9259259 +116,0.9073684 +117,0.9073684 +118,0.9073684 +119,0.9073684 +120,0.9419192 +121,0.9419192 +122,0.9419192 +123,0.9419192 +124,0.9658994 +125,0.9658994 +126,0.9658994 +127,0.9658994 +128,1.0 +129,1.0 +130,1.0 +131,1.0 +132,0.9259259 +133,0.9259259 +134,0.9259259 +135,0.9259259 +136,0.9073684 +137,0.9073684 +138,0.9073684 +139,0.9073684 +140,0.9419192 +141,0.9419192 +142,0.9419192 +143,0.9419192 +144,0.9658994 +145,0.9658994 +146,0.9658994 +147,0.9658994 +148,1.0 +149,1.0 +150,1.0 +151,1.0 +152,0.9259259 +153,0.9259259 +154,0.9259259 +155,0.9259259 +156,0.9073684 +157,0.9073684 +158,0.9073684 +159,0.9073684 +160,0.9419192 +161,0.9419192 +162,0.9419192 +163,0.9419192 +164,0.9658994 +165,0.9658994 +166,0.9658994 +167,0.9658994 +168,1.0 +169,1.0 +170,1.0 +171,1.0 +172,0.9259259 +173,0.9259259 +174,0.9259259 +175,0.9259259 +176,0.9073684 +177,0.9073684 +178,0.9073684 +179,0.9073684 +180,0.9419192 +181,0.9419192 +182,0.9419192 +183,0.9419192 +184,0.9658994 +185,0.9658994 +186,0.9658994 +187,0.9658994 +188,1.0 +189,1.0 +190,1.0 +191,1.0 +192,0.9259259 +193,0.9259259 +194,0.9259259 +195,0.9259259 +196,0.9073684 +197,0.9073684 +198,0.9073684 +199,0.9073684