File size: 216,885 Bytes
f7a584f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "982e76f5",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T19:40:14.686730Z",
"iopub.status.busy": "2024-03-22T19:40:14.686341Z",
"iopub.status.idle": "2024-03-22T19:40:14.721946Z",
"shell.execute_reply": "2024-03-22T19:40:14.721015Z"
},
"papermill": {
"duration": 0.052769,
"end_time": "2024-03-22T19:40:14.724162",
"exception": false,
"start_time": "2024-03-22T19:40:14.671393",
"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-03-22T19:40:14.752739Z",
"iopub.status.busy": "2024-03-22T19:40:14.752339Z",
"iopub.status.idle": "2024-03-22T19:40:14.760219Z",
"shell.execute_reply": "2024-03-22T19:40:14.759294Z"
},
"papermill": {
"duration": 0.025385,
"end_time": "2024-03-22T19:40:14.762717",
"exception": false,
"start_time": "2024-03-22T19:40:14.737332",
"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-03-22T19:40:14.788860Z",
"iopub.status.busy": "2024-03-22T19:40:14.788607Z",
"iopub.status.idle": "2024-03-22T19:40:14.792716Z",
"shell.execute_reply": "2024-03-22T19:40:14.791871Z"
},
"papermill": {
"duration": 0.019374,
"end_time": "2024-03-22T19:40:14.794678",
"exception": false,
"start_time": "2024-03-22T19:40:14.775304",
"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-03-22T19:40:14.820786Z",
"iopub.status.busy": "2024-03-22T19:40:14.820487Z",
"iopub.status.idle": "2024-03-22T19:40:14.825085Z",
"shell.execute_reply": "2024-03-22T19:40:14.824184Z"
},
"executionInfo": {
"elapsed": 678,
"status": "ok",
"timestamp": 1696841022168,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "ns5hFcVL2yvs",
"papermill": {
"duration": 0.019954,
"end_time": "2024-03-22T19:40:14.827258",
"exception": false,
"start_time": "2024-03-22T19:40:14.807304",
"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-03-22T19:40:14.853649Z",
"iopub.status.busy": "2024-03-22T19:40:14.853326Z",
"iopub.status.idle": "2024-03-22T19:40:14.859023Z",
"shell.execute_reply": "2024-03-22T19:40:14.858209Z"
},
"papermill": {
"duration": 0.021566,
"end_time": "2024-03-22T19:40:14.860965",
"exception": false,
"start_time": "2024-03-22T19:40:14.839399",
"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": "dbf0f552",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T19:40:14.884790Z",
"iopub.status.busy": "2024-03-22T19:40:14.884530Z",
"iopub.status.idle": "2024-03-22T19:40:14.889911Z",
"shell.execute_reply": "2024-03-22T19:40:14.888448Z"
},
"papermill": {
"duration": 0.019283,
"end_time": "2024-03-22T19:40:14.891787",
"exception": false,
"start_time": "2024-03-22T19:40:14.872504",
"status": "completed"
},
"tags": [
"injected-parameters"
]
},
"outputs": [],
"source": [
"# Parameters\n",
"dataset = \"contraceptive\"\n",
"dataset_name = \"contraceptive\"\n",
"single_model = \"lct_gan\"\n",
"gp = True\n",
"gp_multiply = True\n",
"random_seed = 1\n",
"debug = False\n",
"folder = \"eval\"\n",
"path_prefix = \"../../../../\"\n",
"path = \"eval/contraceptive/lct_gan/1\"\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.011443,
"end_time": "2024-03-22T19:40:14.914601",
"exception": false,
"start_time": "2024-03-22T19:40:14.903158",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5f45b1d0",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T19:40:14.938314Z",
"iopub.status.busy": "2024-03-22T19:40:14.938007Z",
"iopub.status.idle": "2024-03-22T19:40:14.947168Z",
"shell.execute_reply": "2024-03-22T19:40:14.946392Z"
},
"executionInfo": {
"elapsed": 7,
"status": "ok",
"timestamp": 1696841022169,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "UdvXYv3c3LXy",
"papermill": {
"duration": 0.023214,
"end_time": "2024-03-22T19:40:14.949039",
"exception": false,
"start_time": "2024-03-22T19:40:14.925825",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/kaggle/working\n",
"/kaggle/working/eval/contraceptive/lct_gan/1\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-03-22T19:40:14.974444Z",
"iopub.status.busy": "2024-03-22T19:40:14.974141Z",
"iopub.status.idle": "2024-03-22T19:40:17.011622Z",
"shell.execute_reply": "2024-03-22T19:40:17.010604Z"
},
"papermill": {
"duration": 2.052564,
"end_time": "2024-03-22T19:40:17.013629",
"exception": false,
"start_time": "2024-03-22T19:40:14.961065",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Set seed to <function seed at 0x7a99ed023370>\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-03-22T19:40:17.038360Z",
"iopub.status.busy": "2024-03-22T19:40:17.037936Z",
"iopub.status.idle": "2024-03-22T19:40:17.050479Z",
"shell.execute_reply": "2024-03-22T19:40:17.049537Z"
},
"papermill": {
"duration": 0.027111,
"end_time": "2024-03-22T19:40:17.052563",
"exception": false,
"start_time": "2024-03-22T19:40:17.025452",
"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-03-22T19:40:17.077482Z",
"iopub.status.busy": "2024-03-22T19:40:17.077181Z",
"iopub.status.idle": "2024-03-22T19:40:17.084578Z",
"shell.execute_reply": "2024-03-22T19:40:17.083643Z"
},
"executionInfo": {
"elapsed": 6,
"status": "ok",
"timestamp": 1696841022169,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "Vrl2QkoV3o_8",
"papermill": {
"duration": 0.022091,
"end_time": "2024-03-22T19:40:17.086602",
"exception": false,
"start_time": "2024-03-22T19:40:17.064511",
"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-03-22T19:40:17.112737Z",
"iopub.status.busy": "2024-03-22T19:40:17.112453Z",
"iopub.status.idle": "2024-03-22T19:40:17.206554Z",
"shell.execute_reply": "2024-03-22T19:40:17.205788Z"
},
"executionInfo": {
"elapsed": 6,
"status": "ok",
"timestamp": 1696841022169,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "TilUuFk9vqMb",
"papermill": {
"duration": 0.110426,
"end_time": "2024-03-22T19:40:17.209013",
"exception": false,
"start_time": "2024-03-22T19:40:17.098587",
"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-03-22T19:40:17.236406Z",
"iopub.status.busy": "2024-03-22T19:40:17.236082Z",
"iopub.status.idle": "2024-03-22T19:40:21.821006Z",
"shell.execute_reply": "2024-03-22T19:40:21.820265Z"
},
"executionInfo": {
"elapsed": 3113,
"status": "ok",
"timestamp": 1696841025277,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "7Abt8nStvr9Z",
"papermill": {
"duration": 4.601926,
"end_time": "2024-03-22T19:40:21.823508",
"exception": false,
"start_time": "2024-03-22T19:40:17.221582",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-03-22 19:40:19.417436: 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-03-22 19:40:19.417493: 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-03-22 19:40:19.419102: 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-03-22T19:40:21.853178Z",
"iopub.status.busy": "2024-03-22T19:40:21.852629Z",
"iopub.status.idle": "2024-03-22T19:40:21.858956Z",
"shell.execute_reply": "2024-03-22T19:40:21.857989Z"
},
"papermill": {
"duration": 0.022425,
"end_time": "2024-03-22T19:40:21.861204",
"exception": false,
"start_time": "2024-03-22T19:40:21.838779",
"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-03-22T19:40:21.886820Z",
"iopub.status.busy": "2024-03-22T19:40:21.885986Z",
"iopub.status.idle": "2024-03-22T19:40:30.509485Z",
"shell.execute_reply": "2024-03-22T19:40:30.508402Z"
},
"executionInfo": {
"elapsed": 20137,
"status": "ok",
"timestamp": 1696841045408,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "tbaguWxAvtPi",
"papermill": {
"duration": 8.639029,
"end_time": "2024-03-22T19:40:30.512044",
"exception": false,
"start_time": "2024-03-22T19:40:21.873015",
"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",
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (4) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n",
" .fit(X)\n",
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (4) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n",
" .fit(X)\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",
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (4) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n",
" .fit(X)\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-03-22T19:40:30.541861Z",
"iopub.status.busy": "2024-03-22T19:40:30.541424Z",
"iopub.status.idle": "2024-03-22T19:40:30.549638Z",
"shell.execute_reply": "2024-03-22T19:40:30.548702Z"
},
"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.025563,
"end_time": "2024-03-22T19:40:30.551664",
"exception": false,
"start_time": "2024-03-22T19:40:30.526101",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'tvae': 46,\n",
" 'realtabformer': (24, 72, Embedding(72, 672), True),\n",
" 'lct_gan': 40,\n",
" 'tab_ddpm_concat': 10}"
]
},
"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-03-22T19:40:30.578204Z",
"iopub.status.busy": "2024-03-22T19:40:30.577937Z",
"iopub.status.idle": "2024-03-22T19:40:30.582780Z",
"shell.execute_reply": "2024-03-22T19:40:30.581947Z"
},
"papermill": {
"duration": 0.020255,
"end_time": "2024-03-22T19:40:30.584737",
"exception": false,
"start_time": "2024-03-22T19:40:30.564482",
"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",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ad1eb833",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T19:40:30.610675Z",
"iopub.status.busy": "2024-03-22T19:40:30.610118Z",
"iopub.status.idle": "2024-03-22T19:40:31.126454Z",
"shell.execute_reply": "2024-03-22T19:40:31.125416Z"
},
"papermill": {
"duration": 0.531769,
"end_time": "2024-03-22T19:40:31.128570",
"exception": false,
"start_time": "2024-03-22T19:40:30.596801",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caching in ../../../../contraceptive/_cache_aug_test/lct_gan/all inf False\n",
"../../../../ml-utility-loss/aug_test/contraceptive [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
"Caching in ../../../../contraceptive/_cache_bs_test/lct_gan/all inf False\n",
"../../../../ml-utility-loss/bs_test/contraceptive [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
"Caching in ../../../../contraceptive/_cache_synth_test/lct_gan/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"../../../../ml-utility-loss/synthetics/contraceptive [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
"1050\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",
")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "14ff8b40",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T19:40:31.157774Z",
"iopub.status.busy": "2024-03-22T19:40:31.157137Z",
"iopub.status.idle": "2024-03-22T19:40:31.488158Z",
"shell.execute_reply": "2024-03-22T19:40:31.487052Z"
},
"executionInfo": {
"elapsed": 588,
"status": "ok",
"timestamp": 1696841049215,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "NgahtU1q9uLO",
"papermill": {
"duration": 0.348027,
"end_time": "2024-03-22T19:40:31.490454",
"exception": false,
"start_time": "2024-03-22T19:40:31.142427",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'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",
" 'tf_pma_low': 16,\n",
" 'dropout': 0,\n",
" 'combine_mode': 'diff_left',\n",
" 'tf_isab_mode': 'separate',\n",
" 'grad_loss_fn': <function torch.nn.functional.l1_loss(input: torch.Tensor, target: torch.Tensor, size_average: Optional[bool] = None, reduce: Optional[bool] = None, reduction: str = 'mean') -> torch.Tensor>,\n",
" 'single_model': True,\n",
" 'bias': True,\n",
" 'bias_final': True,\n",
" 'pma_ffn_mode': 'none',\n",
" 'patience': 10,\n",
" 'inds_init_mode': 'fixnorm',\n",
" 'grad_clip': 0.73,\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",
" 'synth_data': 2,\n",
" 'bias_lr_mul': 1.0,\n",
" 'bias_weight_decay': 0.05,\n",
" 'head_activation': torch.nn.modules.activation.Softsign,\n",
" 'loss_balancer_beta': 0.67,\n",
" 'loss_balancer_r': 0.943,\n",
" 'tf_activation': torch.nn.modules.activation.Tanh,\n",
" 'dataset_size': 2048,\n",
" 'batch_size': 4,\n",
" 'epochs': 100,\n",
" 'lr_mul': 0.09,\n",
" 'n_warmup_steps': 100,\n",
" 'Optim': functools.partial(<class 'torch.optim.adamw.AdamW'>, amsgrad=True),\n",
" 'fixed_role_model': 'lct_gan',\n",
" 'd_model': 256,\n",
" 'attn_activation': torch.nn.modules.activation.PReLU,\n",
" 'tf_d_inner': 512,\n",
" 'tf_n_layers_enc': 3,\n",
" 'tf_n_head': 32,\n",
" 'tf_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n",
" 'ada_d_hid': 1024,\n",
" 'ada_n_layers': 9,\n",
" 'ada_activation': torch.nn.modules.activation.Softsign,\n",
" 'ada_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n",
" 'head_d_hid': 256,\n",
" 'head_n_layers': 9,\n",
" 'head_n_head': 32,\n",
" 'head_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n",
" 'models': ['lct_gan'],\n",
" 'max_seconds': 3600,\n",
" 'tf_lora': False,\n",
" 'tf_num_inds': 128,\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.65, '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",
"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-03-22T19:40:31.519124Z",
"iopub.status.busy": "2024-03-22T19:40:31.518699Z",
"iopub.status.idle": "2024-03-22T19:40:31.627077Z",
"shell.execute_reply": "2024-03-22T19:40:31.626131Z"
},
"papermill": {
"duration": 0.125528,
"end_time": "2024-03-22T19:40:31.629325",
"exception": false,
"start_time": "2024-03-22T19:40:31.503797",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caching in ../../../../contraceptive/_cache_aug_train/lct_gan/all inf False\n",
"split df ratio is 0\n",
"../../../../ml-utility-loss/aug_train/contraceptive [400, 0]\n",
"Caching in ../../../../contraceptive/_cache_aug_val/lct_gan/all inf False\n",
"split df ratio is 1\n",
"../../../../ml-utility-loss/aug_val/contraceptive [0, 200]\n",
"Caching in ../../../../contraceptive/_cache_bs_train/lct_gan/all inf False\n",
"split df ratio is 0\n",
"../../../../ml-utility-loss/bs_train/contraceptive [100, 0]\n",
"Caching in ../../../../contraceptive/_cache_bs_val/lct_gan/all inf False\n",
"split df ratio is 1\n",
"../../../../ml-utility-loss/bs_val/contraceptive [0, 50]\n",
"Caching in ../../../../contraceptive/_cache_synth/lct_gan/all inf False\n",
"Splitting without random!\n",
"Split with reverse index!\n",
"../../../../ml-utility-loss/synthetics/contraceptive [400, 200]\n",
"[900, 450]\n",
"[900, 450]\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-03-22T19:40:31.658594Z",
"iopub.status.busy": "2024-03-22T19:40:31.658305Z",
"iopub.status.idle": "2024-03-22T19:40:32.106194Z",
"shell.execute_reply": "2024-03-22T19:40:32.105218Z"
},
"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.464659,
"end_time": "2024-03-22T19:40:32.108592",
"exception": false,
"start_time": "2024-03-22T19:40:31.643933",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Creating model of type <class 'ml_utility_loss.loss_learning.estimator.model.models.TwinEncoder'>\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[*] Embedding False True\n",
"['lct_gan'] 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-03-22T19:40:32.140112Z",
"iopub.status.busy": "2024-03-22T19:40:32.139297Z",
"iopub.status.idle": "2024-03-22T19:40:32.144553Z",
"shell.execute_reply": "2024-03-22T19:40:32.143580Z"
},
"papermill": {
"duration": 0.023298,
"end_time": "2024-03-22T19:40:32.146774",
"exception": false,
"start_time": "2024-03-22T19:40:32.123476",
"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-03-22T19:40:32.174755Z",
"iopub.status.busy": "2024-03-22T19:40:32.174472Z",
"iopub.status.idle": "2024-03-22T19:40:32.181541Z",
"shell.execute_reply": "2024-03-22T19:40:32.180624Z"
},
"papermill": {
"duration": 0.023501,
"end_time": "2024-03-22T19:40:32.183627",
"exception": false,
"start_time": "2024-03-22T19:40:32.160126",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"11889160"
]
},
"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-03-22T19:40:32.211912Z",
"iopub.status.busy": "2024-03-22T19:40:32.211585Z",
"iopub.status.idle": "2024-03-22T19:40:32.297306Z",
"shell.execute_reply": "2024-03-22T19:40:32.296393Z"
},
"papermill": {
"duration": 0.102372,
"end_time": "2024-03-22T19:40:32.299408",
"exception": false,
"start_time": "2024-03-22T19:40:32.197036",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"========================================================================================================================\n",
"Layer (type:depth-idx) Output Shape Param #\n",
"========================================================================================================================\n",
"MLUtilitySingle [2, 1179, 40] --\n",
"├─Adapter: 1-1 [2, 1179, 40] --\n",
"│ └─Sequential: 2-1 [2, 1179, 256] --\n",
"│ │ └─FeedForward: 3-1 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-1 [2, 1179, 1024] 41,984\n",
"│ │ │ └─Softsign: 4-2 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-2 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-3 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-4 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-3 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-5 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-6 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-4 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-7 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-8 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-5 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-9 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-10 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-6 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-11 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-12 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-7 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-13 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-14 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-8 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-15 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-16 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-9 [2, 1179, 256] --\n",
"│ │ │ └─Linear: 4-17 [2, 1179, 256] 262,400\n",
"│ │ │ └─LeakyHardsigmoid: 4-18 [2, 1179, 256] --\n",
"├─Adapter: 1-2 [2, 294, 40] (recursive)\n",
"│ └─Sequential: 2-2 [2, 294, 256] (recursive)\n",
"│ │ └─FeedForward: 3-10 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-19 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-20 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-11 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-21 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-22 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-12 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-23 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-24 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-13 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-25 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-26 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-14 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-27 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-28 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-15 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-29 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-30 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-16 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-31 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-32 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-17 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-33 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-34 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-18 [2, 294, 256] (recursive)\n",
"│ │ │ └─Linear: 4-35 [2, 294, 256] (recursive)\n",
"│ │ │ └─LeakyHardsigmoid: 4-36 [2, 294, 256] --\n",
"├─TwinEncoder: 1-3 [2, 4096] --\n",
"│ └─Encoder: 2-3 [2, 16, 256] --\n",
"│ │ └─ModuleList: 3-20 -- (recursive)\n",
"│ │ │ └─EncoderLayer: 4-37 [2, 1179, 256] --\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 1179, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 128, 256] 32,768\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 128, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-1 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-2 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-3 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 32, 128, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-5 [2, 128, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-6 [2, 128, 256] 1\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 1179, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-7 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-8 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-9 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 32, 1179, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 32, 1179, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-11 [2, 1179, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-12 [2, 1179, 256] 1\n",
"│ │ │ │ └─DoubleFeedForward: 5-2 [2, 1179, 256] --\n",
"│ │ │ │ │ └─Linear: 6-4 [2, 1179, 512] 131,584\n",
"│ │ │ │ │ └─Tanh: 6-5 [2, 1179, 512] --\n",
"│ │ │ │ │ └─Linear: 6-6 [2, 1179, 256] 131,328\n",
"│ │ │ └─EncoderLayer: 4-38 [2, 1179, 256] --\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 1179, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 128, 256] 32,768\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 128, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-13 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-14 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-15 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 32, 128, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-17 [2, 128, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-18 [2, 128, 256] 1\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 1179, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-19 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-20 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-21 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 32, 1179, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 32, 1179, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-23 [2, 1179, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-24 [2, 1179, 256] 1\n",
"│ │ │ │ └─DoubleFeedForward: 5-4 [2, 1179, 256] --\n",
"│ │ │ │ │ └─Linear: 6-10 [2, 1179, 512] 131,584\n",
"│ │ │ │ │ └─Tanh: 6-11 [2, 1179, 512] --\n",
"│ │ │ │ │ └─Linear: 6-12 [2, 1179, 256] 131,328\n",
"│ │ │ └─EncoderLayer: 4-39 [2, 16, 256] --\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 1179, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 128, 256] 32,768\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 128, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-25 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-26 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-27 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 32, 128, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-29 [2, 128, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-30 [2, 128, 256] 1\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 1179, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-31 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-32 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-33 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 32, 1179, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 32, 1179, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-35 [2, 1179, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-36 [2, 1179, 256] 1\n",
"│ │ │ │ └─DoubleFeedForward: 5-6 [2, 1179, 256] --\n",
"│ │ │ │ │ └─Linear: 6-16 [2, 1179, 512] 131,584\n",
"│ │ │ │ │ └─LeakyHardtanh: 6-17 [2, 1179, 512] --\n",
"│ │ │ │ │ └─Linear: 6-18 [2, 1179, 256] 131,328\n",
"│ │ │ │ └─PoolingByMultiheadAttention: 5-7 [2, 16, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 16, 256] 4,096\n",
"│ │ │ │ │ └─SimpleMultiHeadAttention: 6-20 [2, 16, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-37 [2, 16, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-38 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-39 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 32, 16, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 32, 16, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-41 [2, 16, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-42 [2, 16, 256] 1\n",
"│ └─Encoder: 2-4 [2, 16, 256] (recursive)\n",
"│ │ └─ModuleList: 3-20 -- (recursive)\n",
"│ │ │ └─EncoderLayer: 4-40 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-8 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-21 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-22 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-43 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-44 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-45 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 32, 128, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-47 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-48 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-23 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-49 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-50 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-51 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 32, 294, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 32, 294, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-53 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-54 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─DoubleFeedForward: 5-9 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─Linear: 6-24 [2, 294, 512] (recursive)\n",
"│ │ │ │ │ └─Tanh: 6-25 [2, 294, 512] --\n",
"│ │ │ │ │ └─Linear: 6-26 [2, 294, 256] (recursive)\n",
"│ │ │ └─EncoderLayer: 4-41 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-10 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-27 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-28 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-55 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-56 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-57 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 32, 128, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-59 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-60 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-29 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-61 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-62 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-63 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 32, 294, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 32, 294, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-65 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-66 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─DoubleFeedForward: 5-11 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─Linear: 6-30 [2, 294, 512] (recursive)\n",
"│ │ │ │ │ └─Tanh: 6-31 [2, 294, 512] --\n",
"│ │ │ │ │ └─Linear: 6-32 [2, 294, 256] (recursive)\n",
"│ │ │ └─EncoderLayer: 4-42 [2, 16, 256] (recursive)\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-12 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-33 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-34 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-67 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-68 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-69 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 32, 128, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-71 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-72 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-35 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-73 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-74 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-75 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 32, 294, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 32, 294, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-77 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-78 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─DoubleFeedForward: 5-13 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─Linear: 6-36 [2, 294, 512] (recursive)\n",
"│ │ │ │ │ └─LeakyHardtanh: 6-37 [2, 294, 512] --\n",
"│ │ │ │ │ └─Linear: 6-38 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─PoolingByMultiheadAttention: 5-14 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-39 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ └─SimpleMultiHeadAttention: 6-40 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-79 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-80 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-81 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 32, 16, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 32, 16, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-83 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-84 [2, 16, 256] (recursive)\n",
"├─Head: 1-4 [2] --\n",
"│ └─Sequential: 2-5 [2, 1] --\n",
"│ │ └─FeedForward: 3-21 [2, 256] --\n",
"│ │ │ └─Linear: 4-43 [2, 256] 1,048,832\n",
"│ │ │ └─Softsign: 4-44 [2, 256] --\n",
"│ │ └─FeedForward: 3-22 [2, 256] --\n",
"│ │ │ └─Linear: 4-45 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-46 [2, 256] --\n",
"│ │ └─FeedForward: 3-23 [2, 256] --\n",
"│ │ │ └─Linear: 4-47 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-48 [2, 256] --\n",
"│ │ └─FeedForward: 3-24 [2, 256] --\n",
"│ │ │ └─Linear: 4-49 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-50 [2, 256] --\n",
"│ │ └─FeedForward: 3-25 [2, 256] --\n",
"│ │ │ └─Linear: 4-51 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-52 [2, 256] --\n",
"│ │ └─FeedForward: 3-26 [2, 256] --\n",
"│ │ │ └─Linear: 4-53 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-54 [2, 256] --\n",
"│ │ └─FeedForward: 3-27 [2, 256] --\n",
"│ │ │ └─Linear: 4-55 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-56 [2, 256] --\n",
"│ │ └─FeedForward: 3-28 [2, 256] --\n",
"│ │ │ └─Linear: 4-57 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-58 [2, 256] --\n",
"│ │ └─FeedForward: 3-29 [2, 1] --\n",
"│ │ │ └─Linear: 4-59 [2, 1] 257\n",
"│ │ │ └─LeakyHardsigmoid: 4-60 [2, 1] --\n",
"========================================================================================================================\n",
"Total params: 11,889,160\n",
"Trainable params: 11,889,160\n",
"Non-trainable params: 0\n",
"Total mult-adds (M): 44.13\n",
"========================================================================================================================\n",
"Input size (MB): 0.47\n",
"Forward/backward pass size (MB): 375.40\n",
"Params size (MB): 47.56\n",
"Estimated Total Size (MB): 423.43\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-03-22T19:40:32.330193Z",
"iopub.status.busy": "2024-03-22T19:40:32.329920Z",
"iopub.status.idle": "2024-03-22T20:47:39.843051Z",
"shell.execute_reply": "2024-03-22T20:47:39.841995Z"
},
"papermill": {
"duration": 4027.546289,
"end_time": "2024-03-22T20:47:39.860643",
"exception": false,
"start_time": "2024-03-22T19:40:32.314354",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3 datasets [900, 450, 1050]\n",
"Creating model of type <class 'ml_utility_loss.loss_learning.estimator.model.models.TwinEncoder'>\n",
"[*] Embedding False True\n",
"g_loss_mul 0.1\n",
"Epoch 0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.017401078423782666, 'avg_role_model_std_loss': 1.0339260609464513, 'avg_role_model_mean_pred_loss': 0.0010806548900643828, 'avg_role_model_g_mag_loss': 0.16402181821875275, '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.01764664788174236, 'n_size': 900, 'n_batch': 225, 'duration': 261.55655670166016, 'duration_batch': 1.1624735853407118, 'duration_size': 0.29061839633517794, 'avg_pred_std': 0.1123641776252124}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.016450096456747915, 'avg_role_model_std_loss': 1.6555652437911634, 'avg_role_model_mean_pred_loss': 0.0006544369515005302, '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.016450096456747915, 'n_size': 450, 'n_batch': 113, 'duration': 90.59106540679932, 'duration_batch': 0.8016908443079586, 'duration_size': 0.20131347868177626, 'avg_pred_std': 0.10719071906595697}\n",
"Epoch 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.007544516106006793, 'avg_role_model_std_loss': 0.805866371501884, 'avg_role_model_mean_pred_loss': 0.00011455891246516556, 'avg_role_model_g_mag_loss': 0.05731394776852944, '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.007670205862442446, 'n_size': 900, 'n_batch': 225, 'duration': 262.5022921562195, 'duration_batch': 1.1666768540276422, 'duration_size': 0.29166921350691055, 'avg_pred_std': 0.08921317261954148}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.004202535958288031, 'avg_role_model_std_loss': 0.7761073129848487, 'avg_role_model_mean_pred_loss': 4.496906836265167e-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.004202535958288031, 'n_size': 450, 'n_batch': 113, 'duration': 90.03428149223328, 'duration_batch': 0.796763553028613, 'duration_size': 0.20007618109385172, 'avg_pred_std': 0.058546484567521685}\n",
"Epoch 2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.006512888989463035, 'avg_role_model_std_loss': 0.7518540992810281, 'avg_role_model_mean_pred_loss': 0.0001415838299930615, 'avg_role_model_g_mag_loss': 0.049427424324288344, '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.0066497801841857536, 'n_size': 900, 'n_batch': 225, 'duration': 262.3658037185669, 'duration_batch': 1.1660702387491861, 'duration_size': 0.29151755968729653, 'avg_pred_std': 0.09130782820491327}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0055336219292237525, 'avg_role_model_std_loss': 1.1570013584530916, 'avg_role_model_mean_pred_loss': 6.174433674384281e-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.0055336219292237525, 'n_size': 450, 'n_batch': 113, 'duration': 89.11512207984924, 'duration_batch': 0.788629398936719, 'duration_size': 0.1980336046218872, 'avg_pred_std': 0.04651118999973467}\n",
"Epoch 3\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.006024511704712899, 'avg_role_model_std_loss': 0.4761890591268285, 'avg_role_model_mean_pred_loss': 0.0002143375033454278, 'avg_role_model_g_mag_loss': 0.06465743926004507, '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.0061261716642830935, 'n_size': 900, 'n_batch': 225, 'duration': 260.4550771713257, 'duration_batch': 1.1575781207614475, 'duration_size': 0.2893945301903619, 'avg_pred_std': 0.09767564491679272}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.004724722134932462, 'avg_role_model_std_loss': 0.7707038955945308, 'avg_role_model_mean_pred_loss': 5.621562246012167e-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.004724722134932462, 'n_size': 450, 'n_batch': 113, 'duration': 87.9228572845459, 'duration_batch': 0.7780783830490787, 'duration_size': 0.19538412729899088, 'avg_pred_std': 0.056170098961586444}\n",
"Epoch 4\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.005286015553380518, 'avg_role_model_std_loss': 0.3363608939476823, 'avg_role_model_mean_pred_loss': 7.321617665753689e-05, 'avg_role_model_g_mag_loss': 0.045423433695816334, '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.005374089340039063, 'n_size': 900, 'n_batch': 225, 'duration': 260.1741499900818, 'duration_batch': 1.1563295555114745, 'duration_size': 0.28908238887786863, 'avg_pred_std': 0.09759037269486322}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.007981064757849607, 'avg_role_model_std_loss': 1.2652324522273108, 'avg_role_model_mean_pred_loss': 9.855836417115466e-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.007981064757849607, 'n_size': 450, 'n_batch': 113, 'duration': 88.88254165649414, 'duration_batch': 0.7865711651017181, 'duration_size': 0.19751675923665366, 'avg_pred_std': 0.04572650106969924}\n",
"Epoch 5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.00576256091059703, 'avg_role_model_std_loss': 0.5418789782114618, 'avg_role_model_mean_pred_loss': 7.038583156805957e-05, 'avg_role_model_g_mag_loss': 0.02929313911823556, '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.005917770875255681, 'n_size': 900, 'n_batch': 225, 'duration': 262.8189432621002, 'duration_batch': 1.168084192276001, 'duration_size': 0.29202104806900026, 'avg_pred_std': 0.09744484349257417}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0038669909037222774, 'avg_role_model_std_loss': 1.1829836725373764, 'avg_role_model_mean_pred_loss': 2.4478697872928952e-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.0038669909037222774, 'n_size': 450, 'n_batch': 113, 'duration': 90.46491193771362, 'duration_batch': 0.8005744419266693, 'duration_size': 0.20103313763936362, 'avg_pred_std': 0.047730479976656824}\n",
"Epoch 6\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0038541355246626253, 'avg_role_model_std_loss': 0.3181302580921152, 'avg_role_model_mean_pred_loss': 2.260195795584597e-05, 'avg_role_model_g_mag_loss': 0.02967498921504658, '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.003917783604055229, 'n_size': 900, 'n_batch': 225, 'duration': 261.9046974182129, 'duration_batch': 1.1640208774142795, 'duration_size': 0.2910052193535699, 'avg_pred_std': 0.10003261071940263}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0038603629919493365, 'avg_role_model_std_loss': 1.908042863952322, 'avg_role_model_mean_pred_loss': 1.606306340802302e-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.0038603629919493365, 'n_size': 450, 'n_batch': 113, 'duration': 90.71723699569702, 'duration_batch': 0.8028074070415666, 'duration_size': 0.20159385999043783, 'avg_pred_std': 0.05183640702017706}\n",
"Epoch 7\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.003702066924338902, 'avg_role_model_std_loss': 0.2994743646377197, 'avg_role_model_mean_pred_loss': 2.3150445486223394e-05, 'avg_role_model_g_mag_loss': 0.018106737517001523, '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.0037678834933709974, 'n_size': 900, 'n_batch': 225, 'duration': 260.3814172744751, 'duration_batch': 1.1572507434421115, 'duration_size': 0.2893126858605279, 'avg_pred_std': 0.10073738541454076}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0028049794745553906, 'avg_role_model_std_loss': 1.4249755061280251, 'avg_role_model_mean_pred_loss': 1.3086192913582816e-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.0028049794745553906, 'n_size': 450, 'n_batch': 113, 'duration': 90.54383492469788, 'duration_batch': 0.8012728754398042, 'duration_size': 0.20120852205488418, 'avg_pred_std': 0.054640445479117665}\n",
"Epoch 8\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0033579401259905555, 'avg_role_model_std_loss': 0.3882562007228762, 'avg_role_model_mean_pred_loss': 1.8571260889600453e-05, 'avg_role_model_g_mag_loss': 0.031065790198707772, '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.0034128941754655293, 'n_size': 900, 'n_batch': 225, 'duration': 261.0693860054016, 'duration_batch': 1.1603083822462295, 'duration_size': 0.29007709556155736, 'avg_pred_std': 0.10073215851146314}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.004292678962616871, 'avg_role_model_std_loss': 2.506649698973513, 'avg_role_model_mean_pred_loss': 4.666494623541402e-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.004292678962616871, 'n_size': 450, 'n_batch': 113, 'duration': 89.04813385009766, 'duration_batch': 0.788036582744227, 'duration_size': 0.1978847418891059, 'avg_pred_std': 0.05573896699857}\n",
"Epoch 9\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0032293959062533557, 'avg_role_model_std_loss': 0.4635296431291696, 'avg_role_model_mean_pred_loss': 1.8672718882848967e-05, 'avg_role_model_g_mag_loss': 0.023970585422034167, '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.003291322695731651, 'n_size': 900, 'n_batch': 225, 'duration': 260.9506549835205, 'duration_batch': 1.1597806888156468, 'duration_size': 0.2899451722039117, 'avg_pred_std': 0.10359380051907566}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.002744582254672423, 'avg_role_model_std_loss': 2.2099234429464625, 'avg_role_model_mean_pred_loss': 2.5944116722460305e-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.002744582254672423, 'n_size': 450, 'n_batch': 113, 'duration': 89.43556237220764, 'duration_batch': 0.7914651537363508, 'duration_size': 0.19874569416046142, 'avg_pred_std': 0.05300469076635926}\n",
"Epoch 10\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0026384538486470574, 'avg_role_model_std_loss': 0.23855205940207644, 'avg_role_model_mean_pred_loss': 1.205315517315884e-05, 'avg_role_model_g_mag_loss': 0.024326985160069953, '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.0026762135176815922, 'n_size': 900, 'n_batch': 225, 'duration': 263.52970361709595, 'duration_batch': 1.1712431271870931, 'duration_size': 0.2928107817967733, 'avg_pred_std': 0.10776877377182245}\n",
"Time out: 3785.1640882492065/3600\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Eval loss {'role_model': 'lct_gan', 'n_size': 1050, 'n_batch': 263, 'role_model_metrics': {'avg_loss': 0.002836061065248768, 'avg_g_mag_loss': 0.04869947255703835, 'avg_g_cos_loss': 0.010633710139164967, 'pred_duration': 4.068113565444946, 'grad_duration': 12.533695220947266, 'total_duration': 16.601808786392212, 'pred_std': 0.1082986444234848, 'std_loss': 0.0010494085727259517, 'mean_pred_loss': 9.070246051123831e-06, 'pred_rmse': 0.05325468257069588, 'pred_mae': 0.04161286726593971, 'pred_mape': 0.12254984676837921, 'grad_rmse': 0.1400071233510971, 'grad_mae': 0.03379097580909729, 'grad_mape': 0.8471567034721375}, '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.002836061065248768, 'avg_g_mag_loss': 0.04869947255703835, 'avg_g_cos_loss': 0.010633710139164967, 'avg_pred_duration': 4.068113565444946, 'avg_grad_duration': 12.533695220947266, 'avg_total_duration': 16.601808786392212, 'avg_pred_std': 0.1082986444234848, 'avg_std_loss': 0.0010494085727259517, 'avg_mean_pred_loss': 9.070246051123831e-06}, 'min_metrics': {'avg_loss': 0.002836061065248768, 'avg_g_mag_loss': 0.04869947255703835, 'avg_g_cos_loss': 0.010633710139164967, 'pred_duration': 4.068113565444946, 'grad_duration': 12.533695220947266, 'total_duration': 16.601808786392212, 'pred_std': 0.1082986444234848, 'std_loss': 0.0010494085727259517, 'mean_pred_loss': 9.070246051123831e-06, 'pred_rmse': 0.05325468257069588, 'pred_mae': 0.04161286726593971, 'pred_mape': 0.12254984676837921, 'grad_rmse': 0.1400071233510971, 'grad_mae': 0.03379097580909729, 'grad_mape': 0.8471567034721375}, 'model_metrics': {'lct_gan': {'avg_loss': 0.002836061065248768, 'avg_g_mag_loss': 0.04869947255703835, 'avg_g_cos_loss': 0.010633710139164967, 'pred_duration': 4.068113565444946, 'grad_duration': 12.533695220947266, 'total_duration': 16.601808786392212, 'pred_std': 0.1082986444234848, 'std_loss': 0.0010494085727259517, 'mean_pred_loss': 9.070246051123831e-06, 'pred_rmse': 0.05325468257069588, 'pred_mae': 0.04161286726593971, 'pred_mape': 0.12254984676837921, 'grad_rmse': 0.1400071233510971, 'grad_mae': 0.03379097580909729, 'grad_mape': 0.8471567034721375}}}\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=\"checkpoints\",\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-03-22T20:47:39.896618Z",
"iopub.status.busy": "2024-03-22T20:47:39.896258Z",
"iopub.status.idle": "2024-03-22T20:47:39.900756Z",
"shell.execute_reply": "2024-03-22T20:47:39.899964Z"
},
"papermill": {
"duration": 0.024824,
"end_time": "2024-03-22T20:47:39.902718",
"exception": false,
"start_time": "2024-03-22T20:47:39.877894",
"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-03-22T20:47:39.935797Z",
"iopub.status.busy": "2024-03-22T20:47:39.934952Z",
"iopub.status.idle": "2024-03-22T20:47:40.035705Z",
"shell.execute_reply": "2024-03-22T20:47:40.034557Z"
},
"papermill": {
"duration": 0.119826,
"end_time": "2024-03-22T20:47:40.038220",
"exception": false,
"start_time": "2024-03-22T20:47:39.918394",
"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-03-22T20:47:40.073678Z",
"iopub.status.busy": "2024-03-22T20:47:40.073343Z",
"iopub.status.idle": "2024-03-22T20:47:40.372089Z",
"shell.execute_reply": "2024-03-22T20:47:40.371184Z"
},
"papermill": {
"duration": 0.319285,
"end_time": "2024-03-22T20:47:40.374396",
"exception": false,
"start_time": "2024-03-22T20:47:40.055111",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATYAAAESCAYAAAB3gfmJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABN5klEQVR4nO2deVxU9frHP8PAzLAOCMKAsqXgSmoohGtdSTLKKG+W15TM1ApzocXsqpj9Epe8WWaWlXgrCbXU3FIRl26KG4KCIG4oGAyIyAzrDMw8vz+OjIwMywwzDOD3/Xqd18x8z3O+5zkj8/F7zvN9vg+PiAgMBoPRibAwtwMMBoNhbJiwMRiMTgcTNgaD0elgwsZgMDodTNgYDEangwkbg8HodDBhYzAYnQ5LczvQnlCr1cjPz4e9vT14PJ653WEwGPUgIpSVlcHDwwMWFk2PyZiw1SM/Px+enp7mdoPBYDRBXl4eunfv3qQNE7Z62NvbA+C+OAcHBzN7w2Aw6iOXy+Hp6an5nTYFE7Z61N1+Ojg4MGFjMNopLXlMxIIHDAaj08GEjcFgdDqYsDEYjE4He8bGMApqtRpKpdLcbjA6OFZWVuDz+a3uhwkbo9UolUrk5ORArVab2xVGJ8DR0RESiaRVc0mZsDFaBRGhoKAAfD4fnp6ezU6cZDAag4hQWVmJoqIiAIC7u3urOtObr776iry9vUkoFFJQUBCdOnWqSfutW7dSr169SCgUUv/+/Wnv3r1a+3/77Td66qmnqEuXLgSAUlNTtfbn5OQQAJ3b1q1bNXa69v/yyy8tvi6ZTEYASCaTNWlXJK+mo9lFdKlA3uK+OytKpZIyMzOptLTU3K4wOgnFxcWUmZlJtbW1Wu0t/X0SEen93+uWLVsQHR2NmJgYnDt3DgMGDEBYWJhGZR/kxIkTmDhxIqZNm4bU1FREREQgIiICGRkZGpuKigoMHz4cK1as0NmHp6cnCgoKtLaPP/4YdnZ2GDt2rJZtXFycll1ERIS+l9gs645cReTG0/g1Jc/ofXc0VCoVAEAgEJjZE0ZnwcbGBgBQU1NjeCf6qmlQUBBFRUVpPqtUKvLw8KDY2Fid9hMmTKDw8HCttuDgYJo5c2YD27qR2YMjNl0MHDiQXn/9da02ALRjx47mL6IRWvo/wuaTN8l7/h6a8kPTI9WHgaqqKsrMzKSqqipzu8LoJDT2N2WyEZtSqURKSgpCQ0M1bRYWFggNDUVycrLOY5KTk7XsASAsLKxR+5aQkpKCtLQ0TJs2rcG+qKgouLi4ICgoCBs3bgQ1UatGoVBALpdrbS3Bz80OAHClsMywC2AwGCZFr+BBcXExVCoV3NzctNrd3Nxw6dIlncdIpVKd9lKpVE9X7/PDDz+gT58+GDp0qFb70qVL8Y9//AM2NjY4ePAg3n77bZSXl2P27Nk6+4mNjcXHH3+s9/n9XblctXxZNcqqa2AvstL/IhgMhsnocCGsqqoqxMfH6xytLVq0CMOGDcOgQYMwf/58fPDBB1i1alWjfS1YsAAymUyz5eW17JmZ2MYKrvZCAMDVonLDLoTx0MPj8bBz505zu2FUlixZgoEDB5rbDf2EzcXFBXw+H4WFhVrthYWFkEgkOo+RSCR62TfHr7/+isrKSkyZMqVZ2+DgYNy6dQsKhULnfqFQqEl41zfx3d+NG7VdKWTCxui4bNq0CY6Ojkbr77333kNSUpLR+jMUvYRNIBAgMDBQy3G1Wo2kpCSEhIToPCYkJKTBhSYmJjZq3xw//PADxo0bh65duzZrm5aWBicnJwiFQoPO1RQ9XbnnbJfZczbGQ0BLs0rs7Ozg7OxsYm+aR+9b0ejoaHz33Xf473//i6ysLLz11luoqKjA1KlTAQBTpkzBggULNPZz5szB/v37sXr1aly6dAlLlizB2bNnMWvWLI1NSUkJ0tLSkJmZCQDIzs5GWlpag+dwV69exZ9//ok33nijgV+7d+/G999/j4yMDFy9ehXr16/HsmXL8M477+h7iS2ibsR2md2KakFEqFTWmmVrKlCki/3792P48OFwdHSEs7Mznn32WVy7dg0AMHToUMyfP1/L/vbt27CyssKff/4JACgoKEB4eDisra3h6+uL+Ph4+Pj4YM2aNQZ9d+np6fjHP/4Ba2trODs7Y8aMGSgvv//3dfToUQQFBcHW1haOjo4YNmwYbt68CQA4f/48nnzySdjb28PBwQGBgYE4e/Zsk+c7evQopk6dCplMBh6PBx6PhyVLlgAAfHx88Mknn2DKlClwcHDAjBkzAADz58+Hv78/bGxs8Mgjj2DRokVa0zIevBV97bXXEBERgc8++wzu7u5wdnZGVFRU66ZytAC9Mw9efvll3L59G4sXL4ZUKsXAgQOxf/9+TYAgNzdXa/b50KFDER8fj4ULF+Kjjz6Cn58fdu7cif79+2tsdu3apRFGAHjllVcAADExMZovGgA2btyI7t27Y8yYMQ38srKywrp16zBv3jwQEXr27In//Oc/mD59ur6X2CL870VGr7IRmxZVNSr0XXzALOfOXBoGG0HL/6QrKioQHR2NRx99FOXl5Vi8eDFeeOEFpKWlYdKkSVi5ciWWL1+uSe3ZsmULPDw8MGLECADcf+LFxcU4evQorKysEB0d3eh8zpb4EhYWhpCQEJw5cwZFRUV44403MGvWLGzatAm1tbWIiIjA9OnT8csvv0CpVOL06dMa3yZNmoRBgwZh/fr14PP5SEtLg5VV00GtoUOHYs2aNVi8eDGys7MBcCOuOj777DMsXrwYMTExmjZ7e3ts2rQJHh4eSE9Px/Tp02Fvb48PPvig0fMcOXIE7u7uOHLkCK5evYqXX34ZAwcONNlvEwB4pO9/c50YuVwOsVgMmUzW7PM2WWUNBiw9CABIXzLmoY2MVldXIycnB76+vhCJRKhU1nYYYXuQ4uJidO3aFenp6XBzc4OHhwcOHz6sEbKhQ4di5MiRWL58OS5duoQ+ffrgzJkzGDx4MADujsLPzw+ff/455s6d2+z5eDweduzYgYiICHz33XeYP38+8vLyYGtrCwDYt28fnnvuOeTn58PKygrOzs44evQoRo0a1aAvBwcHrF27FpGRkXpd86ZNmzB37lyUlpZqtfv4+GDQoEHYsWNHk8d/9tlnSEhI0IwOlyxZgp07dyItLQ0AN2I7evQorl27pklunzBhAiwsLJCQkKCzzwf/purQ5/fJckUNpC4yWlSmwJWicjzm5WRul9oF1lZ8ZC4NM9u59eHKlStYvHgxTp06heLiYk0Sf25uLvr3748xY8Zg8+bNGDFiBHJycpCcnIxvv/0WAPe4xNLSEo899pimv549e8LJybC/g6ysLAwYMEAjagAwbNgwqNVqZGdnY+TIkXjttdcQFhaGp556CqGhoZgwYYImnzI6OhpvvPEGfvrpJ4SGhuKll15Cjx49DPKljjrBrs+WLVvw5Zdf4tq1aygvL0dtbW2zItOvXz+tFTvc3d2Rnp7eKt+ao8NN92hP3I+MstvROng8HmwElmbZ9F0N4rnnnkNJSQm+++47nDp1CqdOnQJw/0H5pEmT8Ouvv6Kmpgbx8fEICAhAQECA0b+zlhIXF4fk5GQMHToUW7Zsgb+/P06ePAmAGyldvHgR4eHhOHz4MPr27dvsaKs56osswE22nzRpEp555hns2bMHqamp+Pe//91sYOHBW2Iej2fylWCYsLWC+xkILIDQ0bhz5w6ys7OxcOFCjB49Gn369MHdu3e1bJ5//nlUV1dj//79iI+Px6RJkzT7evXqhdraWqSmpmrarl692qCPltKnTx+cP38eFRUVmrbjx4/DwsICvXr10rQNGjQICxYswIkTJ9C/f3/Ex8dr9vn7+2PevHk4ePAgXnzxRcTFxTV7XoFAoMn3bY4TJ07A29sb//73vzF48GD4+flpghftDSZsrYBFRjsuTk5OcHZ2xoYNG3D16lUcPnwY0dHRWja2traIiIjAokWLkJWVhYkTJ2r29e7dG6GhoZgxYwZOnz6N1NRUzJgxA9bW1gatIzZp0iSIRCJERkYiIyMDR44cwTvvvIPJkyfDzc0NOTk5WLBgAZKTk3Hz5k0cPHgQV65cQZ8+fVBVVYVZs2bh6NGjuHnzJo4fP44zZ86gT58+zZ7Xx8cH5eXlSEpKQnFxMSorKxu19fPzQ25uLhISEnDt2jV8+eWXrR4VmgombK3An+WMdljqHl6npKSgf//+mDdvns4slUmTJuH8+fMYMWIEvLy8tPb9+OOPcHNzw8iRI/HCCy9oIoT1H3i3FBsbGxw4cAAlJSUYMmQI/vnPf2L06NH46quvNPsvXbqE8ePHw9/fHzNmzEBUVBRmzpwJPp+PO3fuYMqUKfD398eECRMwduzYFqULDh06FG+++SZefvlldO3aFStXrmzUdty4cZg3bx5mzZqFgQMH4sSJE1i0aJHe19oWsKhoPfSJugCArKoGAz7mIqMXloyBw0MYGW0sgvUwcuvWLXh6euLQoUMYPXq0ud3psLCoqLkouADcOg2xa1+4OQhRKFfgSmE5Ar1ZZPRh4vDhwygvL0dAQAAKCgrwwQcfwMfHByNHjjS3aw897FbUEDJ+Bfa+C1zcoXnOdrWI3Y4+bNTU1OCjjz5Cv3798MILL6Br166aybqbN2+GnZ2dzq1fv35t5uPYsWMb9WPZsmVt5kdbw0ZshuDky72W5MDP1R7/u1KMyywy+tARFhaGsDDdc/bGjRuH4OBgnfuaywgwJt9//z2qqqp07uvSpUub+dHWMGEzhC73hO3uDfj5s2R4RkPs7e1hb29vbjfQrVs3c7tgFtitqCHUjdhKb8K/qzUANpeNwWhPMGEzBHF3wMIKUCnhZ8MJmlReDXm1aVcsYDAYLYMJmyFY8AFHbk6TQ2UeJA5cSJqN2hiM9gETNkNx8uFeS3JYcRcGo53BhM1QNAEELjIKgEVGGYx2AhM2Q3G6HxnVpFaxuWwMPeiMxVzaC0zYDKVLvblsrLALo4Ni7GIuALfkOI/Ha7B4ZVvChM1QnO7fitYVdpHKqyGrYpFRBsPcMGEzlLrgQbUMYirTREYf+tQqIkBZYZ6NFXMxWjEXhUKB9957D926dYOtrS2Cg4Nx9OhRzbE3b97Ec889BycnJ9ja2qJfv37Yt28fbty4gSeffBIAtzQUj8fDa6+9ZtD30RpY5oGhCGwAOzegvJALILjZQSqvvpcM33lTVZqlphJY5mGec3+UDwhsm7e7Byvm0ngxl1mzZiEzMxMJCQnw8PDAjh078PTTTyM9PR1+fn6IioqCUqnEn3/+CVtbW2RmZsLOzg6enp747bffMH78eGRnZ8PBwQHW1tYGfSetgQlba3Dy5YStJAf+bn1ZzmgHY/z48VqfN27ciK5duyIzMxMTJkzA3Llz8ddff2mELD4+HhMnTgSPx8OlS5dw6NAhrWIu33//Pfz8/AzyJT4+HtXV1fjxxx81S3J/9dVXeO6557BixQpYWVlBJpPh2Wef1dQyqL+QZG5uLt5//3307t0bAFrkh0AggFgsBo/H0ypgnpubi7i4OOTm5sLDg/tP6r333sP+/fsRFxeHZcuWITc3F+PHj9cslf7II49ojq/LQXV1dTX687uWwoStNXTxBfJOcjmjrkEAWGQUVjbcyMlc59YDVsxFN+np6VCpVPD399dqVygUmmLIs2fPxltvvYWDBw8iNDQU48ePx6OPPmrQ+UwBe8bWGuoFEOoiow99MjyPx90OmmNjxVyMUsylvLwcfD4fKSkpSEtL02xZWVn44osvAABvvPEGrl+/jsmTJyM9PR2DBw/G2rVrjXatrYUJW2vQTPm4ock+KJQrWGS0A8CKuXDoKuYyaNAgqFQqFBUVoWfPnlpb/VtWT09PvPnmm9i+fTveffddfPfdd5o+AbS4SIwpMEjY1q1bBx8fH4hEIgQHB+P06dNN2m/btg29e/eGSCRCQEAA9u3bp7V/+/btGDNmDJydncHj8TTFVuvzxBNPaCI3ddubb76pZZObm4vw8HDY2NjA1dUV77//Pmpraw25xJZRb8TmILKCu5hFRjsKrJgLh65iLv7+/pg0aRKmTJmC7du3IycnB6dPn0ZsbCz27t0LAJg7dy4OHDiAnJwcnDt3DkeOHNGcz9vbGzweD3v27MHt27e1IrttBulJQkICCQQC2rhxI128eJGmT59Ojo6OVFhYqNP++PHjxOfzaeXKlZSZmUkLFy4kKysrSk9P19j8+OOP9PHHH9N3331HACg1NbVBP6NGjaLp06dTQUGBZpPJZJr9tbW11L9/fwoNDaXU1FTat28fubi40IIFC1p8bTKZjABo9dskZUVEMQ5EMWIiZRVN/uEUec/fQ/Gnbrb4nB2dqqoqyszMpKqqKnO7ojeJiYnUp08fEgqF9Oijj9LRo0cJAO3YsUNjs2/fPgJAI0eObHB8fn4+jR07loRCIXl7e1N8fDy5urrSN99806LzP3iuCxcu0JNPPkkikYi6dOlC06dPp7KyMiIikkqlFBERQe7u7iQQCMjb25sWL15MKpWKFAoFvfLKK+Tp6UkCgYA8PDxo1qxZLf43efPNN8nZ2ZkAUExMDBERKZVKWrx4Mfn4+JCVlRW5u7vTCy+8QBcuXCAiolmzZlGPHj1IKBRS165dafLkyVRcXKzpc+nSpSSRSIjH41FkZGSL/Kijsb8pfX6fegtbUFAQRUVFaT6rVCry8PCg2NhYnfYTJkyg8PBwrbbg4GCaOXNmA9ucnJwmhW3OnDmN+rVv3z6ysLAgqVSqaVu/fj05ODiQQqFo5qo49BY2tZroUw9O3Iou0dLdF8l7/h5asiujZcd3AjqysBmbvLw8AkCHDh0ytysdGmMIm163okqlEikpKQgNDdW0WVhYIDQ0FMnJyTqPSU5O1rIHuCWVG7Nvis2bN8PFxQX9+/fHggULtGogJicnIyAgAG5ublrnkcvluHjxos7+FAoF5HK51qYXPJ7unFE25eOh4PDhw9i1axdycnJw4sQJvPLKK6yYSztBL2ErLi6GSqXSEg8AcHNzg1Qq1XmMVCrVy74x/vWvf+Hnn3/GkSNHsGDBAvz000949dVXmz1P3T5dxMbGQiwWazZPT0+9fAIAdPHhXuvnjLJnbA8FrJhL+6XDzGObMWOG5n1AQADc3d0xevRoXLt2zeD5OgsWLNB6YCyXy/UXt/pTPgZqR0bF1g9fndGHCVbMpf2il7C5uLiAz+ejsLBQq72wsFArDFwfiUSil31LqfujuXr1Knr06AGJRNIgOlt33sbOJRQKIRQKW+VH/VU+7O9FRgtk1bhSWIbBPp33D4fRNKyYi3nR61ZUIBAgMDAQSUlJmja1Wo2kpCSEhIToPCYkJETLHgASExMbtW8pdVNC6mZeh4SEID09XStXLzExEQ4ODujbt2+rztUkdcnwd3MAoN5E3YfrORvpmYDOYDSGMf6W9L4VjY6ORmRkJAYPHoygoCCsWbMGFRUVmDp1KgAuMbhbt26IjY0FAMyZMwejRo3C6tWrER4ejoSEBJw9exYbNmzQ9FlSUoLc3Fzk53OpOHUJuRKJBBKJBNeuXUN8fDyeeeYZODs748KFC5g3bx5GjhypSeMYM2YM+vbti8mTJ2PlypWQSqVYuHAhoqKiWj8qawrNrehNQK2Gv6sd/rx8+6F5zsbn8wFwgSVzJDszOh91QcHW3LLrLWwvv/wybt++jcWLF0MqlWLgwIHYv3+/5kF9bm4uLCzuDwSHDh2K+Ph4LFy4EB999BH8/Pywc+dO9O/fX2Oza9cujTACwCuvvAIAiImJwZIlSyAQCHDo0CGNiHp6emL8+PFYuHCh5hg+n489e/bgrbfeQkhICGxtbREZGYmlS5fq/63og9gTsLAEVAqgrEBTGf5hiYxaWlrCxsZGs6RP/X97BkMfiAiVlZUoKiqCo6Oj5j9NQ+ARu4fQIJfLIRaLIZPJ4ODg0PIDvxjI3Yq+thfnLPrhxa9PwNVeiNP/Dm320M6AUqlETk6OJomcwWgNjo6OkEgkDTI49Pl9dpioaLumiy8nbCU58OvLBTWKyhSQVdZAbNP5I6MCgQB+fn6a5HEGw1CsrKxaNVKrgwmbMag35cNeZAUPsQj5smpcKXp4IqMWFhYQiUTmdoPBAMBW9zAO9WqMAg9vZJTBaC8wYTMG9WqMAoDfveIuD/3abAyGmWDCZgzq5YsCuB8ZfUimfDAY7Q0mbMag7la06i5QVapZdPJhmfLBYLQ3mLAZA6EdYOvKva+3THhdZJTBYLQtTNiMRb2cUTuhJbo5crPwL7PbUQajzWHCZiweyBntyQIIDIbZYMJmLJzuj9gAsEUnGQwzwoTNWHTRjoyyRScZDPPBhM1YNDLlg03SZTDaHiZsxqJuxCa7BdQqNM/YbpcpUFrJcigZjLaECZuxsO0KWNkCIKA0VzsyykZtDEabwoTNWPB4OnJG7wUQ2HM2BqNNYcJmTB7IGX3YFp1kMNoLTNiMiWYu2w0AbC4bg2EumLAZky4PzmVjkVEGwxwwYTMmTrqXLyouV+BuBYuMMhhtBRM2Y1J/kq5aDdt6kdErRWzUxmC0FUzYjInYE+DxgdpqoFwK4H5klD1nYzDaDiZsxoRvBYi7c+9LHoyMMmFjMNoKJmzG5sGcUde6uWzsVpTBaCuYsBkbJ91z2VhklMFoO5iwGZsHpnz0ZJFRBqPNMUjY1q1bBx8fH4hEIgQHB+P06dNN2m/btg29e/eGSCRCQEAA9u3bp7V/+/btGDNmDJydncHj8ZCWlqa1v6SkBO+88w569eoFa2treHl5Yfbs2ZDJZFp2PB6vwZaQkGDIJRrOAyM2W62cUfacjcFoC/QWti1btiA6OhoxMTE4d+4cBgwYgLCwMBQVFem0P3HiBCZOnIhp06YhNTUVERERiIiIQEZGhsamoqICw4cPx4oVK3T2kZ+fj/z8fHz22WfIyMjApk2bsH//fkybNq2BbVxcHAoKCjRbRESEvpfYOh7IFwXuLzp5mT1nYzDaBtKToKAgioqK0nxWqVTk4eFBsbGxOu0nTJhA4eHhWm3BwcE0c+bMBrY5OTkEgFJTU5v1Y+vWrSQQCKimpkbTBoB27NjRsgshourqapLJZJotLy+PAJBMJmtxHw07lRPFOHBbVSkRES3bm0ne8/fQ4p3phvfLYDzkyGSyFv8+9RqxKZVKpKSkIDQ0VNNmYWGB0NBQJCcn6zwmOTlZyx4AwsLCGrVvKTKZDA4ODrC0tNRqj4qKgouLC4KCgrBx40YQUaN9xMbGQiwWazZPT89W+QQAENoDNi7c+wdW02UBBAajbdBL2IqLi6FSqeDm5qbV7ubmBqlUqvMYqVSql31L/fjkk08wY8YMrfalS5di69atSExMxPjx4/H2229j7dq1jfazYMECyGQyzZaXl2ewT1o8EEC4P+WDPWNjMNoCy+ZN2hdyuRzh4eHo27cvlixZorVv0aJFmveDBg1CRUUFVq1ahdmzZ+vsSygUQigUGt9JJ1/g1pkGFauKy5UoqVCii63A+OdkMBga9Bqxubi4gM/no7CwUKu9sLAQEolE5zESiUQv+6YoKyvD008/DXt7e+zYsQNWVlZN2gcHB+PWrVtQKBR6n6tVPDBisxVaorvTvZxRFhllMEyOXsImEAgQGBiIpKQkTZtarUZSUhJCQkJ0HhMSEqJlDwCJiYmN2jeGXC7HmDFjIBAIsGvXLohEomaPSUtLg5OTk2lGZU3xQI1RoN5EXRYZZTBMjt63otHR0YiMjMTgwYMRFBSENWvWoKKiAlOnTgUATJkyBd26dUNsbCwAYM6cORg1ahRWr16N8PBwJCQk4OzZs9iwYYOmz5KSEuTm5iI/Px8AkJ2dDYAb7UkkEo2oVVZW4ueff4ZcLodcLgcAdO3aFXw+H7t370ZhYSEef/xxiEQiJCYmYtmyZXjvvfda9w0ZwgMVqwDuOdvhS0VsxMZgtAWGhF3Xrl1LXl5eJBAIKCgoiE6ePKnZN2rUKIqMjNSy37p1K/n7+5NAIKB+/frR3r17tfbHxcURgAZbTEwMEREdOXJE534AlJOTQ0REf/zxBw0cOJDs7OzI1taWBgwYQN988w2pVKoWX5c+4eQmkRdw0z2WOBLVKIiIaNvZPPKev4de/vZE6/pmMB5S9Pl98oiamA/xkCGXyyEWizVTSQyGCFjmAdRUAu+cA5x74MKtUoz76jhc7AQ4u/Ap4znNYDwk6PP7ZLmipkBHxaoHI6MMBsN0MGEzFQ/kjNoI7kdGWc4og2FamLCZCp05o2zRSQajLWDCZiq66IiMurFFJxmMtoAJm6l44FYUAPxd63JG2YiNwTAlTNhMRf0R273As2bExpLhGQyTwoTNVIg9AZ4FN+WjnEspq4uM3qlQ4k55G6d5MRgPEUzYTIWloEHFKhuBJTy7sDqjDIapYcJmSnTljLqyyCiDYWqYsJkSXTmjbNFJBsPkMGEzJQ8sXwTcX3SSRUYZDNPBhM2U6JryUTdJlz1jYzBMBhM2U6JjxNbT1Q48HlDCIqMMhslgwmZK6oIHlcWAgrv1tBbw4elkA4A9Z2MwTAUTNlMiEgPWXbj3Op6zseIuDIZpYMJmanTmjLLUKgbDlDBhMzU6AwgstYrBMCVM2EyNjgACi4wyGKaFCZup0TFi69H1fmS0mEVGGQyjw4TN1OgYsWlHRtlzNgbD2DBhMzV1Uz5ktwBVjaa57jnbVXY7ymAYHSZspsZOAliKAFIBsjxNM4uMMhimgwmbqbGw0Fn/4H7OKBuxMRjGhglbW9BUzmhhGVhpVwbDuBgkbOvWrYOPjw9EIhGCg4Nx+vTpJu23bduG3r17QyQSISAgAPv27dPav337dowZMwbOzs7g8XhIS0tr0Ed1dTWioqLg7OwMOzs7jB8/HoWFhVo2ubm5CA8Ph42NDVxdXfH++++jtrbWkEs0LjoCCHWR0buVNbjD6owyGEZFb2HbsmULoqOjERMTg3PnzmHAgAEICwtDUVGRTvsTJ05g4sSJmDZtGlJTUxEREYGIiAhkZGRobCoqKjB8+HCsWLGi0fPOmzcPu3fvxrZt23Ds2DHk5+fjxRdf1OxXqVQIDw+HUqnEiRMn8N///hebNm3C4sWL9b1E46NjXTZrAR9eXVhklMEwCaQnQUFBFBUVpfmsUqnIw8ODYmNjddpPmDCBwsPDtdqCg4Np5syZDWxzcnIIAKWmpmq1l5aWkpWVFW3btk3TlpWVRQAoOTmZiIj27dtHFhYWJJVKNTbr168nBwcHUigULbo2mUxGAEgmk7XIvsVkHyCKcSBaF6LVPG3TGfKev4c2Hc8x7vkYjE6IPr9PvUZsSqUSKSkpCA0N1bRZWFggNDQUycnJOo9JTk7WsgeAsLCwRu11kZKSgpqaGq1+evfuDS8vL00/ycnJCAgIgJubm9Z55HI5Ll68qLNfhUIBuVyutZkEHRWrgPtVq9iIjcEwLnoJW3FxMVQqlZZ4AICbmxukUqnOY6RSqV72jfUhEAjg6OjYaD+Nnaduny5iY2MhFos1m6enZ4t90gtHLwA8oKYCqLitaWY5owyGaXioo6ILFiyATCbTbHl5ec0fZAiWwgYVqwDAr66AchGLjDIYxkQvYXNxcQGfz28QjSwsLIREItF5jEQi0cu+sT6USiVKS0sb7aex89Tt04VQKISDg4PWZjJ0VKyqW023tLIGxeUsMspgGAu9hE0gECAwMBBJSUmaNrVajaSkJISEhOg8JiQkRMseABITExu110VgYCCsrKy0+snOzkZubq6mn5CQEKSnp2tFZxMTE+Hg4IC+ffu2+FwmQ8eUD5HV/cgoK8fHYBgPS30PiI6ORmRkJAYPHoygoCCsWbMGFRUVmDp1KgBgypQp6NatG2JjYwEAc+bMwahRo7B69WqEh4cjISEBZ8+exYYNGzR9lpSUIDc3F/n5+QA40QK4kZZEIoFYLMa0adMQHR2NLl26wMHBAe+88w5CQkLw+OOPAwDGjBmDvn37YvLkyVi5ciWkUikWLlyIqKgoCIXC1n1LxkDHiA3gbkdv3qnE5cIyDO3p0vZ+MRidEUPCrmvXriUvLy8SCAQUFBREJ0+e1OwbNWoURUZGatlv3bqV/P39SSAQUL9+/Wjv3r1a++Pi4ghAgy0mJkZjU1VVRW+//TY5OTmRjY0NvfDCC1RQUKDVz40bN2js2LFkbW1NLi4u9O6771JNTU2Lr8tk0z2IiNJ/46Z8fP+UVvOKP7LIe/4e+mj7BeOfk8HoROjz++QRsafWdcjlcojFYshkMuM/b8tPBTY8Adi6Au9f0TTvTP0bc7ekIcinC7a+2fLbcwbjYUOf3+dDHRVtU+qyDyqKAMX96R0965LhWWSUwTAaTNjaCmtHwNqJe18vtaqnqx0s7kVGb7PVdBkMo8CErS3RscpH/cjoVTZRl8EwCkzY2hId67IBbNFJBsPYMGFrS3TUGAXqLTrJlglnMIwCE7a2RMetKKC96CSDwWg9TNjaEh3ZB0D9VT7KWWSUwTACTNjakroRmywPUN1f2bdHVy4yKqtikVEGwxgwYWtL7N0BvhBQ12pVrNLOGWXP2RiM1sKErS2xsACcvLn3D+aMssgog2E0mLC1NTrqHwD3F51k5fgYjNbDhK2taSSAUBcZvVrERmwMRmthwtbWNDLlQ7OaLouMMhithglbW6MZsd3Qan6kq+39yGgZi4wyGK2BCVtbU3/EVm9kJrLiw9vZFgB7zsZgtBYmbG1NXcUqZTlQeUdrV11q1RX2nI3BaBVM2NoaKxHg4MG9bySAwEZsDEbrYMJmDhoLIGjqjLIRG4PRGpiwmYMuPtzrgzmjrvcn6bLIKINhOEzYzEEjI7a6yKi8upZFRhmMVsCEzRw0MklXZMWHD4uMNk5aPPBJVyBzl7k9YbRzmLCZA02N0RsNdmmKu7DnbNooyoGDiwCVEji2UmuqDIPxIEzYzEHdrWi5FFBWau3SLDrJpnxoc3oDUFnMvS9MB/5OMa8/jHYNEzZzYNMFEIm59w8uE66JjLJbUQ3VMuD4F9x7h+7c69mN5vOH0e4xSNjWrVsHHx8fiEQiBAcH4/Tp003ab9u2Db1794ZIJEJAQAD27duntZ+IsHjxYri7u8Pa2hqhoaG4cuV+UeGjR4+Cx+Pp3M6cOQMAuHHjhs79J0+eNOQSTU8zy4RnF5ahrLqmrb1qn5xcD1SXAi7+wPjvubaM34Cqu2Z1i9F+0VvYtmzZgujoaMTExODcuXMYMGAAwsLCUFRUpNP+xIkTmDhxIqZNm4bU1FREREQgIiICGRkZGpuVK1fiyy+/xDfffINTp07B1tYWYWFhqK6uBgAMHToUBQUFWtsbb7wBX19fDB48WOt8hw4d0rILDAzU9xLbhkYCCL4utnAQWaKsuhajVx/D7vP5D/fUj8oSIHkd9/6JDwGvxwG3/kBtNXB+i3l9Y7RfSE+CgoIoKipK81mlUpGHhwfFxsbqtJ8wYQKFh4drtQUHB9PMmTOJiEitVpNEIqFVq1Zp9peWlpJQKKRffvlFZ59KpZK6du1KS5cu1bTl5OQQAEpNTdX3kjTIZDICQDKZzOA+WkziEqIYB6I90Q12nbp+h55YdYS85+8h7/l76NXvT9L12+Wm96k9cuhj7ntaF0KkUnFtp7/j2tYOIVKrzesfo83Q5/ep14hNqVQiJSUFoaGhmjYLCwuEhoYiOTlZ5zHJycla9gAQFhamsc/JyYFUKtWyEYvFCA4ObrTPXbt24c6dO5g6dWqDfePGjYOrqyuGDx+OXbuanhagUCggl8u1tjajichokG8X/DFnBOaF+kNgaYH/XSlG2Od/4j+Jl1Fdo2o7H81NRTFw8hvu/ZMLuBWIASBgAmBlCxRnAzdPmM8/RrtFL2ErLi6GSqWCm5ubVrubmxukUqnOY6RSaZP2da/69PnDDz8gLCwM3bt317TZ2dlh9erV2LZtG/bu3Yvhw4cjIiKiSXGLjY2FWCzWbJ6eno3aGp1GbkXrEFnxMSfUD4nzRmKUf1coVWp8mXQFYWv+xNFs3bf9nY7ja4CaCsB9AND72fvtIgcg4J/cexZEYOigw0VFb926hQMHDmDatGla7S4uLoiOjkZwcDCGDBmC5cuX49VXX8WqVasa7WvBggWQyWSaLS8vr1Fbo1MXPCjNBdSNj8K8nW2xaeoQfD3pMUgcRLh5pxKvxZ3B25tTIJVVt5GzZqCsEDh9L1Dw5L8BHk97/+B7o/WsXdzIjsGoh17C5uLiAj6fj8LCQq32wsJCSCQSncdIJJIm7eteW9pnXFwcnJ2dMW7cuGb9DQ4OxtWrVxvdLxQK4eDgoLW1GQ4eAF8AqGsA2a0mTXk8Hp4JcMehd0fhjeG+4FvwsC9ditGrj+L7/11HrUrdRk63IX/9B6itAroNBvzGNNzvMYjbVEogbXPb+8do1+glbAKBAIGBgUhKStK0qdVqJCUlISQkROcxISEhWvYAkJiYqLH39fWFRCLRspHL5Th16lSDPokIcXFxmDJlCqysrJr1Ny0tDe7u7i2+vjbFgg846q5Y1Rh2QkssfLYvds8ajse8HFGhVOH/9mbh2bV/IeVmiQmdbWNkf9+/xfyHjtFaHYNf517PxgHqTijuDMPRNzKRkJBAQqGQNm3aRJmZmTRjxgxydHQkqVRKRESTJ0+mDz/8UGN//PhxsrS0pM8++4yysrIoJiaGrKysKD09XWOzfPlycnR0pN9//50uXLhAzz//PPn6+lJVVZXWuQ8dOkQAKCsrq4FfmzZtovj4eMrKyqKsrCz69NNPycLCgjZu3Njia2vTqCgR0c//5KJ7Z1ruYx0qlZp+OXWTBnx8QBM9nf/reSopV5jA0TZm91zue/nh6aajnopyomXdOdurh9vOP4ZZ0Of3qbewERGtXbuWvLy8SCAQUFBQEJ08eVKzb9SoURQZGallv3XrVvL39yeBQED9+vWjvXv3au1Xq9W0aNEicnNzI6FQSKNHj6bs7OwG5504cSINHTpUp0+bNm2iPn36kI2NDTk4OFBQUBBt27ZNr+tqc2Hb+x73ozy42OAu7pQr6P1taRpxG/jxAdpyOpdUqg46DaLkBtHHztz3kvO/5u3rvsOEV03vG8Os6PP75BE9zLM/tZHL5RCLxZDJZG3zvC35a+DAAqDv88CEH1vV1ZkbJVi4IwPZ95LnB3s74f9e6I/ekjZ8bmgMfo8CUn8GfEcBkS1YxaMwE1gfAvD4QHQmYK/7WS+j46PP77PDRUU7Fc1M+dCHIT5dsGf2cHz0TG/YCPg4e/Muwr/8C5/uzUSForbV/bcJd64Bab9w7/+xsGXHuPUFPB8HSAWk/mQ63xgdCiZs5qR+VXgjDJyt+BaYMbIHDkWPwtP9JFCpCd/9Lweh/zmG/RkF7T8169gKTqB6PgV4BrX8uLogQsp/m5w6w3h4YMJmTpzuRUUVci4n0kh4OFrjm8mBiHttCDy7WKNAVo03fz6H1zedQe6dyuY7MAe3s4ELW7n3T36k37F9nwesnQBZHnD1kPF9Y3Q4mLCZEytrwP5exaoWTvnQhyd7uyJx3ii884+esOLzcCT7Np76/Bi+TLoCWVU7WznkaCwAAnqFA90e0+9YKxEwcBL3nmUiMMCEzfw0kTNqDERWfLw7phf2zx2JoT2coahV4z+JlxH4SSIm/3AKP528iUK5mTMYpBnAxR3ce31Ha3UEvsa9XjkIlLZhBgmjXcKEzdwYMYDQFD262mHzG8H44pWB8HO1Q62a8L8rxVi0MwPBy5IQse44vj56Fddum2GBy6Ox3GvfCEDS37A+XPwAnxEAqYFzrYswMzo+luZ24KGnkQUnTQGPx8PzA7vh+YHdcP12OQ5mFuLgRSnO5ZYiLY/bVu7PRo+uthjTT4KwfhI82k0MC4tGZv4bg/xU4NIeADzgiQWt62vw68CN/3HCNuoDgN98dgqjc8KEzdy00YjtQR7paoc3R9nhzVE9UCSvRmJWIQ5eLMSJa8W4drsC649ew/qj1yBxEOGpvm4Y088Njz/iDCu+kQf5R5ZxrwEvAa69W9dX72cB265cLYnL+4E+z7XeP0aHhAmbuWnDEVtjuDqIMCnYG5OCvSGvrsHR7Ns4cFGKo5eKIJVX46eTN/HTyZuwF1lidG9XjOknwSj/rrAVtvLPJ+8090yMx+dWx20tlgJg0GQugf7sRiZsDzFM2MxN3YitrACoqeIipWbEQWSFcQM8MG6ABxS1Kpy4egcHM6VIzCxEcbkSO9PysTMtHwJLC4zo6YKwfhKM7uMKZzuh/ic78in3OmAi4NzDOBcQGAn89Tlw7TBQch3o8ohx+mV0KFhKVT3aPKUK4CbmLvfi5rK9far1t2MmQqUmpObexcHMQhy4KMXNevPhLHjAYO8uGNPPDWH9JPDsYtN8hzeOA5ueASwsgXdS7keHjcHP47n5bMPmAk99bLx+GWZFn98nE7Z6mEXYAOCbEYD0AjAxAeg1tu3OayBEhMuF5ThwUYqDmVJk/K29pPoAT0e8MdwXY/tLYKnrmRwRsCkcuHkcCJwKPLfGuA5e2gsk/AuwceHyRy0NGE0y2h36/D7ZrWh7oIsvJ2xtHEAwFB6Ph14Se/SS2GP2aD/culuJxEwu+HD6RgnO55XinV9S0c3RGq8P98XLQzxhV/953PWjnKjxBcDI94zvoF8YN/G5LB/I2n1/GXHGQwObx9YeaAcBhNbQ3ckGU4f54pcZj+PUR6MxL9QfzrYC/F1ahU/2ZCIkNgmxf2RxS5kT3X+2FjgVEHdvunND4FsCj03h3p+NM37/jHYPE7b2gJmmfJgCFzsh5oT64fiH/0DsiwF4pKstyqpr8e2x6xi+4jC+2/gtcOsMYCkCRkSbzpHHpgA8C+DmX8Dty42aqdWEMzdK8PHuixix8jBe2ZDccVZDYTQKuxVtD3TwEZsuRFZ8TAzywsuDPXEkuwgb/ryOUzl3EHzzG8AC2Ct6Frb5FhjlT+A1tvR3axB3A/yfBrL3ASlxwNOxml21KjVO55Tgjwwp9l+U4naZQrMvr6QK87ak4ZtXA007MZlhUljwoB5mCx7cvQl88Sj3zOnfUq4eQifkxl9b4HNoBipIiBGKL1ACB/Rys8cbI3wxbqAHhJZGvu4ricDmfwIiMWrmZuFEbiX+SC/AwcxClFQoNWb2Iks81ccNAzwd8eneLChVakQ92QPvh7XPCPXDCgsedDTE3QELK67ikjwfcGzD+qZthVoNnwtfAABUQ2bgBQxAwulcZBeW4f1fL2DlgWy8NtQHk4K94GgjMMopq71GgWy7w7riFpYs/xSbq4dp9jnaWGFMXzeMDXDHsB4uEFhyT2XsRZaI3noe645cg5+rPSIGdTOKL4y2hY3Y6mG2ERsAfPkYUHINiNwN+I5s23O3BRnbgV+nAkIHYM55wKYLZFU1SDidi7jjNyC9t8KItRUfEwZ3x7Thj8DLuQXz4R6gSqnCsctF2JcuxeFLRZhS+xs+sNqCFLUfZgpiEdZPgrH93RH8SJdG08NW7L+E9UevQWBpgYQZj+MxL6dWXTrDOLB5bAZiVmGrm1T63Jfc7HlTcfcmkBYP+I8BugWa7jz1UauAr0OA4mwu0f2B9CllrRp70/Ox4c8cZBVwc+IseEBYPwmmj3ykWWEpV9Ti8KUi7M8owJFLt1FVc38V3b72VdhdMwN8qKCa+Rf47gHNu6smzPw5BYmZhXCxE+L3WcPQzdG8GSEMJmwGY1Zh2/secOY7YPg8IHSJac5x7TDw6+tA1V3uc4/R3CoYXo+b5nx1nN8C7JgBiByBuRcAkVinGRHhxLU72PDndRy7fFvTHujthOkjHsFTfd3Av/dAX1ZVg6SsQuxLl+LPK7ehrL1fV7SbozWeCZDg6f7uGOTpCItfXwMydwJD3gDCV7fI5QpFLf75TTKyCuTo4+6AX98MaX1uLKNVMGEzELMKW/I64MBH3JpkE/5r3L6JgONfAEkfc+uVOXpz1efp3sjGZwQ3UdZ3VOPFiQ1FVQusG8LlbY5eDIx4t0WHZUvL8P3/rmNn2t+oUXF/oj7ONogY1A1peaU4frVY0163b2yAO8b2lyCgm1g70nr9GPDjOEBgD7x7CRDatciHv0ur8PxXf6G4XIkxfd1YpNTMMGEzELMKW10akPtAYOYx4/WrrOBK2tWtUDvwVW7UUlYAHF8DpG4G1PeWCe8eBIx8H/B7yngCd+4nYNcsLr1pzvkWi0odRfJq/Df5Bn4+mdtgOXM/VzuM7S/B2AB39JbYNz5thAhYG8g9w3zui/ur7baAlJt3MXHDSRYpbQcwYTMQswpbXX1MkRj4MNc4fZbkAAmTgKKLXLL508u527H6AiC7BRz/Ejj3X6D23hLhkkc5gev9LGDRijnctUpOUGS5wJj/A4a+Y3BXFYpa/JpyC/+7UoxHu4sxtr8Efm72Le/gxFrg4ELAfQAw80+9zr393C1Ebz0PAFjz8kAWKTUTJq8rum7dOvj4+EAkEiE4OBinT59u0n7btm3o3bs3RCIRAgICsG/fPq39RITFixfD3d0d1tbWCA0NxZUrV7RsfHx8wOPxtLbly5dr2Vy4cAEjRoyASCSCp6cnVq5cacjlmYe61S2qZcapWHX1ELDhCU7UbF2ByD1A0PSGIzFxd+CZlcCcC8DQ2YCVLZe3unUysH4okP6r4SXtUn/iRM3ODRg8rVWXYyu0RORQH3wfORizR/vpJ2oAMOBfAF8IFJwH/j6n16EvPtYdbz3BLav0wW8XcC73rn7nZrQ5egvbli1bEB0djZiYGJw7dw4DBgxAWFgYioqKdNqfOHECEydOxLRp05CamoqIiAhEREQgIyNDY7Ny5Up8+eWX+Oabb3Dq1CnY2toiLCwM1dXaRUaWLl2KgoICzfbOO/dHAHK5HGPGjIG3tzdSUlKwatUqLFmyBBs2bND3Es2DwAawu1fFvDUZCETcemSbXwKqS4Fug7lbW++Qpo+zdwPGfALMy+BGa0IH4HYW8Ns04KshXHV2lR6VrWqqgT8/496PeJe7PnNi68yV6QMMqmT1/pheeKqvG5S1asz4MQV/l1YZ2UGGUSE9CQoKoqioKM1nlUpFHh4eFBsbq9N+woQJFB4ertUWHBxMM2fOJCIitVpNEomEVq1apdlfWlpKQqGQfvnlF02bt7c3ff7554369fXXX5OTkxMpFApN2/z586lXr14tvjaZTEYASCaTtfgYo/JDGFGMA9GFbYYdX11GtGUK10eMA9HOKKKaasP6qrxLdGwl0XKf+/39pz/R6e+JlFXNH5+8njtmdZ+W2bcFN05wPv2fhKiqVO/Dy6trKOzzY+Q9fw+NXfMnVShqTOAkozH0+X3qNWJTKpVISUlBaGiops3CwgKhoaFITk7WeUxycrKWPQCEhYVp7HNyciCVSrVsxGIxgoODG/S5fPlyODs7Y9CgQVi1ahVqa+8nKycnJ2PkyJEQCO7PWg8LC0N2djbu3tV966BQKCCXy7U2s9KanNGS68APT3HTGiysgPD/AOPWGr4WmbUjN3Kbmw489Ql3OyvLBfZGA18OBJK/BpSNFF9WVgL/uzetYuR7XN3P9oDX40DXPkBN5f3izHpgK7TE95GD4WInQGaBHPO2pEGtZo+o2yN6CVtxcTFUKhXc3Ny02t3c3CCVSnUeI5VKm7Sve22uz9mzZyMhIQFHjhzBzJkzsWzZMnzwwQfNnqf+OR4kNjYWYrFYs3l6mjmVydAao1fqnqdlcs+zXtsDDJlmnMim0A4YNpubfzZ2FeDQjYuoHlgArAngbnsVZdrHnPkeqCgCHL24KGx7gcfjKlkB3O2oAXGz7k42+HbyYAj4FjhwsRCrE7ON7CTDGHSYZYuio6PxxBNP4NFHH8Wbb76J1atXY+3atVAoFM0f3AgLFiyATCbTbHl5Zi60q1m+6EbL7Im4kdHmf3JBh+5DgBnHTDPh1soaCJ4BzE7lpkw4egOVxcChJcDn/YGjy7mJv4oybhoJAIyazxVYaU88OgGwtOb+E8g7ZVAXgd5OWD6ey2BYd+Qadqb+bUwPGUZAL2FzcXEBn89HYWGhVnthYSEkEonOYyQSSZP2da/69AkAwcHBqK2txY0bN5o8T/1zPIhQKISDg4PWZlb0uRVVlAPbIoGkpQAIeCwSeG0v4OBuUhdhKeTmgb2TAkR8Azj7cUGKo7HA5wHALxOByjtAlx7Ao6+Y1hdDsHYEAsZz71uxCCWLlLZv9BI2gUCAwMBAJCUladrUajWSkpIQEqI76hYSEqJlDwCJiYkae19fX0gkEi0buVyOU6dONdonAKSlpcHCwgKurq6a8/z555+oqbkfuUtMTESvXr3g5NRBkpjrRmzyfC6q2Bh3rgHfhwKZv3PP055dA4z7sm3X9udbAQMnAlGngH/GAa79AGUZV7AY4PJB+e00BanudvTijlZNrWGR0naMvpGJhIQEEgqFtGnTJsrMzKQZM2aQo6MjSaVSIiKaPHkyffjhhxr748ePk6WlJX322WeUlZVFMTExZGVlRenp6Rqb5cuXk6OjI/3+++904cIFev7558nX15eqqrho2okTJ+jzzz+ntLQ0unbtGv3888/UtWtXmjJliqaP0tJScnNzo8mTJ1NGRgYlJCSQjY0Nffvtty2+NrNHRdVqok+7cZG7oku6bS4fJIr15GxW+RHdPNm2PjaGSkWUtYdo4zNEWyOJVLXm9qhx1Gqi9cO57/D42lZ1xSKlbYc+v0+9hY2IaO3ateTl5UUCgYCCgoLo5Mn7P65Ro0ZRZGSklv3WrVvJ39+fBAIB9evXj/bu3au1X61W06JFi8jNzY2EQiGNHj2asrOzNftTUlIoODiYxGIxiUQi6tOnDy1btoyqq7WnMpw/f56GDx9OQqGQunXrRsuXL9fruswubERE64dxP7js/drtajXRsVVEMWJu/3ehRLJ8s7jYKTizkfsev3yM+25bQV5JBQV+cpC85++hGT+eIZWqdf0xdKPP75OlVNXDrClVdWx5laus9PQK4PE3uTZFGbDzLa4d4IqgjF3Bysq1BkUZsLoPd/tshDXwWE6p6TF5ShXDhDwYQKh7npa1m3ue9twXXB1OJmqtQ2gPPPoS996ATIQHYZHS9gUTtvZG/YpVlw8AG54Ebl/i0q2m7tNrZQpGM9QFEbJ2A+W6UwL14cFIaWpnipTqk07XDmDC1t6oG7Hl/AnEvwwoZIBnMJfv6RlkXt86G5IAbu6fupbLhTUC9SOl039MQX5Hj5SqaoDdc4DY7twqMB0EJmztjboRW20VAOJWxYjcA9g3PqeP0QrqRm0pcYBa3bRtC7Cw4GHNywPRW2KP4nIF3vjvWVQqO2idUmUFNy8xZRO3pFXiIm5Cdgd4LM+Erb3h0J1Li+ILuFzPZ//T/mbvdyb6vcCtgVeayy2dbgQ6RU5p+W1g07PA1UQuU2PQZK79r8+BPXMNX8qqjWDC1t7gW3ILIc5O46qZM0yLlTW3VhvAjdqMBJdTGqjJKf1PYuPV6NsdJdeBjWOA/HOAdRcuavz8V1zgCjxuBPfbNG4h0XYKE7b2iL2Eq2TOaBsGT+Ves/8AZMaLZgZ6d9FESr86crVjREr/Pgd8/xQnbo5ewLSDgOcQbl/ga8BLcVx0/uIO4JdXuNvVdgibx1aPdjGPjWEe4p4Bbh4HhkcDIbPur4zC4wHgtep1+f5sfHOMq1M6tIczXOyE9zYButoLtT472QjMVzDmyiFg6xSgpoILrEz6Vfez3atJ3HzLmkousPWvLYC16dMWWc0DA2HC9hCT/it3e2VCykmEONXT+Ko2Agrofm7Kt+Chi60AXe2EcLG/J351wmcvqCeCQnSxFWjKEbaatHhg1ztchPiRJ4AJPwGiJn4Deafvryrj2g+YvN3kAS4mbAbChO0hplYB/DAGKEgz+alKrb2w0/MDnEU/FJcrUFyuRHG5AqWV+s0Vs+ABXWzvi52Piw0GdHfEQE9H9Ohq17KRX93SV4c/4T4/+jIw7quWBawKLwI/vQCUF3LTlKbsvL+moAlgwmYgTNgecojuTWWo91rXDh37mnzVcVxuMrDvA6D83sKng17lVie26QIAqFGpceeeyN0uV6C47L7oabYy7nNJpbLJWRf2QksEdBdjoKejZnN1eGAlY7UK+OMDbmFQABg2Fxgdo19lspIc4MfngdKb3CTyyTsAt74tP14PmLAZCBM2hsmplgGHPgbO/sB9tu3KlUXsP16vFY9rVWqUVCpx+5743S5T4HJhGdJyS5H+twxVNQ2nY3iIRRhQJ3TuIgSefQ+Wl/cB4HG5x8EzDbsmeQHw84vc4p0iR+DV34Dugw3rq6nTMGEzDCZsjDYj9yQ3o//2Je5zz1CuToWTd6u7rlWpcbmwHOdvlSIttxTnb5XicmEZ6qbSiVGO7wWfYYjFZShhiW1ei2HR/wUM9HSEn6sdLPkGTJaoLAHiJwC3znAlHF/ZDPR4stXXUh8mbAbChI3RptQqgeNfAH+uBFRKwMoGePIjIPgtoy/SWa6oRcbfMly9koXRZ9+Ge81NyMkG05Xv4hT10djZCPjo302MQZ6OmtGdu1gEXktGk4pyLlp6/Qg3wXz89/dLHhoBJmwGwoSNYRaKrwC75wI3/+I+uw/gJsN6DDLueaQZXCSzrABw6IbiiM1IqXLH+bxSpOWV4sItGcoVDdO/utoLEdBNDFd7IcQ2VnCyEcDJxgpia+7V0eb+qwA1wPbp3OrOPAvguS+BxyYbxX0mbAbChI1hNoi4RPyDC7kaEjwL4PG3uRGcwLb1/V8/xo2mFHKuBOGrvwLi7lomajXh2u1ypN0TuvO3SnGpoAy1eqSD2Qj4cLbmYyE2IExxEADwh8fbuOj9GhzviaLjA2IotrZq0bQVJmwGwoSNYXbKi4D9HwIZv3GfxV5cvrDfU4b3mf4rsONNQF0DeA8DXonnitq0gOoaFS7my5BVUIbSSiXuVtbgbqUSsnuvpXWfq2qgrX+EDy0T8KYltzjqutpxWFX7MoCGAsbjAU42AqQsDG3ylpcJm4EwYWO0Gy4f5IpTy+6VhOz/T+DpWMDOVb9+ktcBBz7i3vd9Hnhhg0kKWKvVhLLqWk7squpETwnPixsw+OoXAIC/xM9hg/3buFulRmmVEqUVNSi7d+vbxVaAc4uaFm8mbAbChI3RrlCUc2UNT34NkJqbSjHm/7j5b809zFeruWWGkr/iPgfN5ITRgm9ytxtwNg7YMw8AAf1eBF74VjMBuEalhqyqBhWKWng7N33LzYTNQJiwMdol+anArtmA9AL32WcEV3LRpadu+1oFVyOj7nb2qaXA0Nl6zZMzOhnbge0zuNvhnqFcypbARq8uWM0DBqMz4TEImH6Ey1KwtOZqt64fChxb1XDpoGoZ8PN4TtQsLLlbz2FzzCtqAND/ReBfCdyUlquHgJ8igCrTLZ3OhI3B6AjwLYFhs4Gok0CP0YBKARz5P+DbkUDuKc5GXsCtUnLjf4DADpi0DRjwsnn9rk/PUGDyTm5hz7xT3EKWZYUmORW7Fa0HuxVldAiIuEjn/g+BymIAPO652/WjXLDB1pWbzuE+wNye6kaawSXPVxTplTzPbkUZjM4Mj8eVDpx1Bhj4KgACUn/iRM25J/BGYvsVNQCQ9Ade388tZHk3B9j4NFCUZdRTGCRs69atg4+PD0QiEYKDg3H69Okm7bdt24bevXtDJBIhICAA+/bt09pPRFi8eDHc3d1hbW2N0NBQXLlyRbP/xo0bmDZtGnx9fWFtbY0ePXogJiYGSqVSy4bH4zXYTp48acglMhjtH5suQMQ6YMouwC0AeORJ4PWDJl06yGg49wBeP8BNFi4rAOLGcqv2Ggt9y8wnJCSQQCCgjRs30sWLF2n69Onk6OhIhYWFOu2PHz9OfD6fVq5cSZmZmbRw4UKysrKi9PR0jc3y5ctJLBbTzp076fz58zRu3Djy9fWlqqoqIiL6448/6LXXXqMDBw7QtWvX6PfffydXV1d69913NX3k5OQQADp06BAVFBRoNqVS2eJrk8lkBIBkMpm+XwuDwTCEijtEG/5B9Os0IpWqSVN9fp96C1tQUBBFRUVpPqtUKvLw8KDY2Fid9hMmTKDw8HCttuDgYJo5cyYREanVapJIJLRq1SrN/tLSUhIKhfTLL7806sfKlSvJ19dX87lO2FJTU/W9JA1M2BgMM1BdRlTb/ABEn9+nXreiSqUSKSkpCA0N1bRZWFggNDQUycnJOo9JTk7WsgeAsLAwjX1OTg6kUqmWjVgsRnBwcKN9AoBMJkOXLl0atI8bNw6urq4YPnw4du3a1eT1KBQKyOVyrY3BYLQxQjuAb2XULvUStuLiYqhUKri5uWm1u7m5QSqV6jxGKpU2aV/3qk+fV69exdq1azFz5v2F8ezs7LB69Wps27YNe/fuxfDhwxEREdGkuMXGxkIsFms2T0/PRm0ZDEbHwbiLPrUBf//9N55++mm89NJLmD59uqbdxcUF0dHRms9DhgxBfn4+Vq1ahXHjxunsa8GCBVrHyOVyJm4MRidArxGbi4sL+Hw+Cgu1J9UVFhZCItFdoUYikTRpX/fakj7z8/Px5JNPYujQodiwYUOz/gYHB+Pq1auN7hcKhXBwcNDaGAxGx0cvYRMIBAgMDERSUpKmTa1WIykpCSEhITqPCQkJ0bIHgMTERI29r68vJBKJlo1cLsepU6e0+vz777/xxBNPIDAwEHFxcbBoQcGJtLQ0uLu763OJDAajM6BvACMhIYGEQiFt2rSJMjMzacaMGeTo6EhSqZSIiCZPnkwffvihxv748eNkaWlJn332GWVlZVFMTIzO6R6Ojo70+++/04ULF+j555/Xmu5x69Yt6tmzJ40ePZpu3bqlNZ2jjk2bNlF8fDxlZWVRVlYWffrpp2RhYUEbN25s8bWxqCiD0X4x6XQPIqK1a9eSl5cXCQQCCgoKopMnT2r2jRo1iiIjI7Xst27dSv7+/iQQCKhfv360d+9erf1qtZoWLVpEbm5uJBQKafTo0ZSdna3ZHxcXV1cLrcFWx6ZNm6hPnz5kY2NDDg4OFBQURNu2bdPrupiwMRjtF31+nyxXtB4ymQyOjo7Iy8tjz9sYjHZGXXCvtLQUYrG4SdsOFxU1JWVlZQDAIqMMRjumrKysWWFjI7Z6qNVq5Ofnw97evtlyY3X/e3TE0V1H9b2j+g0w340BEaGsrAweHh7NBg/ZiK0eFhYW6N69e/OG9ejI00Q6qu8d1W+A+d5amhup1cGWLWIwGJ0OJmwMBqPTwYTNQIRCIWJiYiAUCs3tit50VN87qt8A872tYcEDBoPR6WAjNgaD0elgwsZgMDodTNgYDEangwkbg8HodDBhYzAYnQ4mbAagb/nB9kBsbCyGDBkCe3t7uLq6IiIiAtnZ2eZ2yyCWL18OHo+HuXPnmtuVFvH333/j1VdfhbOzM6ytrREQEICzZ8+a261mUalUWLRokVbZy08++QQdYSIFEzY92bJlC6KjoxETE4Nz585hwIABCAsLQ1FRkblda5Jjx44hKioKJ0+eRGJiImpqajBmzBhUVFSY2zW9OHPmDL799ls8+uij5nalRdy9exfDhg2DlZUV/vjjD2RmZmL16tVwcnIyt2vNsmLFCqxfvx5fffUVsrKysGLFCqxcuRJr1641t2vNY8Llkzol+pYfbK8UFRURADp27Ji5XWkxZWVl5OfnR4mJiTRq1CiaM2eOuV1qlvnz59Pw4cPN7YZBhIeH0+uvv67V9uKLL9KkSZPM5FHLYSM2PTCk/GB7RSaTAYDOEobtlaioKISHhzco59ie2bVrFwYPHoyXXnoJrq6uGDRoEL777jtzu9Uihg4diqSkJFy+fBkAcP78efz1118YO3asmT1rHra6hx40VX7w0qVLZvJKf9RqNebOnYthw4ahf//+5nanRSQkJODcuXM4c+aMuV3Ri+vXr2P9+vWIjo7GRx99hDNnzmD27NkQCASIjIw0t3tN8uGHH0Iul6N3797g8/lQqVT49NNPMWnSJHO71ixM2B5CoqKikJGRgb/++svcrrSIvLw8zJkzB4mJiRCJROZ2Ry/UajUGDx6MZcuWAQAGDRqEjIwMfPPNN+1e2LZu3YrNmzcjPj4e/fr1Q1paGubOnQsPD4927zt7xqYHCoWC+Hw+7dixQ6t9ypQpNG7cOPM4pSdRUVHUvXt3un79urldaTE7duwgAMTn8zUbAOLxeMTn86m2ttbcLjaKl5cXTZs2Tavt66+/Jg8PDzN51HK6d+9OX331lVbbJ598Qr169TKTRy2HPWPTA0PKD7YXiAizZs3Cjh07cPjwYfj6+prbpRYzevRopKenIy0tTbMNHjwYkyZNQlpaGvh8vrldbJRhw4Y1mFZz+fJleHt7m8mjllNZWdlgpVo+nw+1Wm0mj/TA3Mra0Wiu/GB75a233iKxWExHjx7VKl9YWVlpbtcMoqNERU+fPk2Wlpb06aef0pUrV2jz5s1kY2NDP//8s7lda5bIyEjq1q0b7dmzh3Jycmj79u3k4uJCH3zwgbldaxYmbAbQVPnB9goaKV8YFxdnbtcMoqMIGxHR7t27qX///iQUCql37960YcMGc7vUIuRyOc2ZM4e8vLxIJBLRI488Qv/+979JoVCY27VmYeuxMRiMTgd7xsZgMDodTNgYDEangwkbg8HodDBhYzAYnQ4mbAwGo9PBhI3BYHQ6mLAxGIxOBxM2BoPR6WDCxmAwOh1M2BgMRqeDCRuDweh0/D+cz/5Tn2CldQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"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-03-22T20:47:40.411928Z",
"iopub.status.busy": "2024-03-22T20:47:40.411581Z",
"iopub.status.idle": "2024-03-22T20:51:46.581079Z",
"shell.execute_reply": "2024-03-22T20:51:46.579998Z"
},
"papermill": {
"duration": 246.190558,
"end_time": "2024-03-22T20:51:46.583679",
"exception": false,
"start_time": "2024-03-22T20:47:40.393121",
"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-03-22T20:51:46.621064Z",
"iopub.status.busy": "2024-03-22T20:51:46.620162Z",
"iopub.status.idle": "2024-03-22T20:51:46.642273Z",
"shell.execute_reply": "2024-03-22T20:51:46.641271Z"
},
"papermill": {
"duration": 0.042627,
"end_time": "2024-03-22T20:51:46.644305",
"exception": false,
"start_time": "2024-03-22T20:51:46.601678",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>avg_g_cos_loss</th>\n",
" <th>avg_g_mag_loss</th>\n",
" <th>avg_loss</th>\n",
" <th>grad_duration</th>\n",
" <th>grad_mae</th>\n",
" <th>grad_mape</th>\n",
" <th>grad_rmse</th>\n",
" <th>mean_pred_loss</th>\n",
" <th>pred_duration</th>\n",
" <th>pred_mae</th>\n",
" <th>pred_mape</th>\n",
" <th>pred_rmse</th>\n",
" <th>pred_std</th>\n",
" <th>std_loss</th>\n",
" <th>total_duration</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>lct_gan</th>\n",
" <td>0.005347</td>\n",
" <td>0.080971</td>\n",
" <td>0.002836</td>\n",
" <td>12.467301</td>\n",
" <td>0.033791</td>\n",
" <td>0.847157</td>\n",
" <td>0.140007</td>\n",
" <td>0.000009</td>\n",
" <td>4.109843</td>\n",
" <td>0.041613</td>\n",
" <td>0.12255</td>\n",
" <td>0.053255</td>\n",
" <td>0.108299</td>\n",
" <td>0.001049</td>\n",
" <td>16.577143</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration grad_mae \\\n",
"lct_gan 0.005347 0.080971 0.002836 12.467301 0.033791 \n",
"\n",
" grad_mape grad_rmse mean_pred_loss pred_duration pred_mae \\\n",
"lct_gan 0.847157 0.140007 0.000009 4.109843 0.041613 \n",
"\n",
" pred_mape pred_rmse pred_std std_loss total_duration \n",
"lct_gan 0.12255 0.053255 0.108299 0.001049 16.577143 "
]
},
"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-03-22T20:51:46.679178Z",
"iopub.status.busy": "2024-03-22T20:51:46.678852Z",
"iopub.status.idle": "2024-03-22T20:51:47.043914Z",
"shell.execute_reply": "2024-03-22T20:51:47.043067Z"
},
"papermill": {
"duration": 0.384847,
"end_time": "2024-03-22T20:51:47.046035",
"exception": false,
"start_time": "2024-03-22T20:51:46.661188",
"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-03-22T20:51:47.083119Z",
"iopub.status.busy": "2024-03-22T20:51:47.082278Z",
"iopub.status.idle": "2024-03-22T20:55:57.990842Z",
"shell.execute_reply": "2024-03-22T20:55:57.989788Z"
},
"papermill": {
"duration": 250.930339,
"end_time": "2024-03-22T20:55:57.993924",
"exception": false,
"start_time": "2024-03-22T20:51:47.063585",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caching in ../../../../contraceptive/_cache_aug_test/lct_gan/all inf False\n",
"Caching in ../../../../contraceptive/_cache_bs_test/lct_gan/all inf False\n",
"Caching in ../../../../contraceptive/_cache_synth_test/lct_gan/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-03-22T20:55:58.031362Z",
"iopub.status.busy": "2024-03-22T20:55:58.031011Z",
"iopub.status.idle": "2024-03-22T20:55:58.057419Z",
"shell.execute_reply": "2024-03-22T20:55:58.056562Z"
},
"papermill": {
"duration": 0.047546,
"end_time": "2024-03-22T20:55:58.059612",
"exception": false,
"start_time": "2024-03-22T20:55:58.012066",
"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-03-22T20:55:58.094102Z",
"iopub.status.busy": "2024-03-22T20:55:58.093810Z",
"iopub.status.idle": "2024-03-22T20:55:58.099460Z",
"shell.execute_reply": "2024-03-22T20:55:58.098484Z"
},
"papermill": {
"duration": 0.0258,
"end_time": "2024-03-22T20:55:58.101597",
"exception": false,
"start_time": "2024-03-22T20:55:58.075797",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'lct_gan': 0.3770567048447473}\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-03-22T20:55:58.139403Z",
"iopub.status.busy": "2024-03-22T20:55:58.138694Z",
"iopub.status.idle": "2024-03-22T20:55:58.530094Z",
"shell.execute_reply": "2024-03-22T20:55:58.529245Z"
},
"papermill": {
"duration": 0.412474,
"end_time": "2024-03-22T20:55:58.532159",
"exception": false,
"start_time": "2024-03-22T20:55:58.119685",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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R1FRETQaTYyiHVzUajXkcjmqq6vhdru77WWWjM40deJorRnleXqMG2IUOxziJ2oi6ujowPXXX485c+Zg69atyM7OxtmzZ7vtYdUf9Fe8f1Lp59dhc+PzY43w8QyX2u3I0SuRY0j+5JoKRE1Ezz//PIqKilBRURE81nUbGUJi6WidGT7+8mITh2pMuHlsnogRkQBR/9z97W9/w7XXXos77rgDOTk5mDx5Mt54441ez3e5XLBYLCEfhITrXLMVADCpOA0AUNVqow0WBwhRE9GFCxewceNGlJWVYdu2bfjZz36GRx99NLgtzZXWr18Po9EY/KAJr/1XUlISXBM6lTHGMK00A2MKDPheaSay9EqMyNHB46NENBCIWjXjeR7XXnstfv/73wMAJk+ejGPHjuG//uu/sGzZsm7nr127FqtXrw5+HZhQR8jVcByHcUOMwQbqe783VOSISFeilojy8/MxZsyYkGOjR4/GpUuXejxfqVQGJ7jSRNfL3G632CEQ0i+iJqLrr78ep0+fDjl25syZ4B7o8eL28r1+eH182Od6wjg3GrNnz8YjjzyCRx55BEajEVlZWfjNb34TbM8oKSnBc889h/vuuw8GgwEPPfQQAOBf//oXZs6cCbVajaKiIjz66KOw2WzB6zY3N2Px4sVQq9UoLS3FO++8E1V8yehiqw2NZmfI++vjGTpslMQHAlGrZr/85S9x3XXX4fe//z1+9KMf4ZtvvsFf/vIX/OUvf4nr6/75i3O9PleapcXSyUOCX/9l9/le2xEK09W449rLVcNNe6rgcIdOJfnl90dGFeNbb72FBx54AN988w2+/fZbPPTQQyguLsaDDz4IAHjxxRfx1FNP4emnnwYAnD9/HvPnz8dvf/tbbNq0CS0tLcFkFuiVXL58Oerr6/HFF19ALpfj0UcfRXNzc1TxJZsdJ5pgdXlx59QiFKSpYbZ78NbXFyGVcPj57OE02FVkoiaiqVOn4uOPP8batWvx7LPPorS0FK+++iruueceMcMaEIqKivDKK6+A4ziUl5fj6NGjeOWVV4KJ6KabbsKvfvWr4PkrV67EPffcg8cffxwAUFZWhj/84Q+YNWsWNm7ciEuXLmHr1q345ptvMHXqVADAm2++idGjRyf83hLN6fHB6vICADJ1wlQVrVIKnjH4vAx2tw9apehjewc10X/6t956K2699daE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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"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-03-22T20:55:58.568796Z",
"iopub.status.busy": "2024-03-22T20:55:58.568507Z",
"iopub.status.idle": "2024-03-22T20:55:58.924783Z",
"shell.execute_reply": "2024-03-22T20:55:58.923874Z"
},
"papermill": {
"duration": 0.377324,
"end_time": "2024-03-22T20:55:58.927085",
"exception": false,
"start_time": "2024-03-22T20:55:58.549761",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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oiiyLCt5eXnKz3/+88j+pqYmxWw2K7///e/jcAVd09NrO5dgMKjYbDblxRdfjGxbvHixsmjRolib2it6en3r169XHA5Hl8dLpnv3i1/8QrHZbIrT6YxsS/S9E12zbhKuSjt//vzItvNVpQXYuXNnVHuAa665JtK+rKyM6urqqDYOh4NZs2Z1ecx40JtrOxe3200gECAzM7qmzdatW8nJyWHs2LF8//vfp76+Pqa2d4feXp/T6WT48OEUFhayaNEivvjii8i+ZLp3L7zwArfeeitWa3SdskTeOyFE3eR8VWmrq6s7/Ux1dfV524efe3LMeNCbazuXBx54gIKCgqgvxLXXXstLL73Eli1bePzxx9m2bRvXXXcdoVDoPEeKPb25vrFjx7Ju3Tr+/Oc/8/LLLyPLMpdeeiknT54Ekufeffzxx+zfv5+77747anui792AXn0v6B+sWbOGjRs3snXr1qgB3VtvvTXyetKkSUyePJmRI0eydetW5s2bp4Wp3Wb27NlRtfUuvfRSxo8fz29+8xseffRRDS2LLS+88AKTJk1i5syZUdsTfe+ER9RNelqVFiAvL++87cPPPTlmPOjNtYV54oknWLNmDe+++y6TJ08+b9sRI0YwZMgQjh071mebe0Jfri+M0Whk2rRpEduT4d65XC42btzIXXfddcHzxPveCSHqJr2pSjt79uyo9gCbN2+OtC8pKSEvLy+qTUtLCx999FFCK932tuLuz372Mx599FHeeecdZsyYccHznDx5kvr6evLz82Nid3eJRUXhUCjE559/HrF9oN87UENLfD4f3/nOdy54nrjfu4QNiycBGzduVMxms7JhwwblwIEDyr333qukp6dHpnVvv/125cEHH4y037Fjh2IwGJQnnnhCOXjwoPLQQw91On2fnp6u/PnPf1Y+++wzZdGiRZpNAffk2tasWaOYTCblj3/8Y9QUb2trq6IoitLa2qosX75c2blzp1JWVqb885//VKZPn66MHj1a8Xq9Cb223lzfqlWrlE2bNimlpaXK7t27lVtvvVWxWCzKF198EWkzUO9dmMsvv1y55ZZbOmzX4t4JIeohv/zlL5WioiLFZDIpM2fOVD788MPIviuvvFJZvHhxVPvXXntNGTNmjGIymZSLLrpI+fvf/x61X5Zl5Sc/+YmSm5urmM1mZd68ecrhw4cTcSkd6Mm1DR8+XAE6PB566CFFURTF7XYrV199tZKdna0YjUZl+PDhyj333NMhFieR9OT67r///kjb3NxcZcGCBcqePXuijjdQ752iKMqhQ4cUQHn33Xc7HEuLeyfSgAgEAs0RY0QCgUBzhBAJBALNEUIkEAg0RwiRQCDQHCFEAoFAc4QQCQQCzRFCJBAINEcIkWBAsWHDBtLT0yPvH374YaZOnRp5v2TJEm688caE2yXoG0KIBJ0SThX6ve99r8O+++67D0mSWLJkSVT7WAtAcXExTz/9dNS2W265hSNHjnT5mbVr17Jhw4bI+zlz5nD//ffH1C5B7BFCJOiSwsJCNm7ciMfjiWzzer28+uqrFBUVaWJTSkoKOTk5Xe53OBxRHpNgYCCESNAl06dPp7CwkDfeeCOy7Y033qCoqIhp06b16dideSo33nhjxMuaM2cOFRUV/OhHP4okb4eOXbNzae+ZLVmyhG3btrF27drIMcrKyhg1ahRPPPFE1Of27t2LJEkJT1EiUBFCJDgvS5cuZf369ZH369at484774z7ed944w2GDRvGI488QlVVFVVVVT0+xtq1a5k9ezb33HNP5BhFRUUdrglg/fr1fPnLX2bUqFGxugRBDxBCJDgv3/nOd/jXv/5FRUUFFRUV7Nixo1v5a/pKZmYmer0em81GXl5er5KNORwOTCYTqampkWPo9XqWLFnC4cOHIyV3AoEAr776KkuXLo31ZQi6iUgVKzgv2dnZLFy4kA0bNqAoCgsXLmTIkCFam9UnCgoKWLhwIevWrWPmzJn89a9/xefz8c1vflNr0wYtwiMSXJClS5eyYcMGXnzxxZh5DTqdjnMz0AQCgZgcuzvcfffdkYH49evXc8stt5Campqw8wuiEUIkuCDXXnstfr+fQCDANddcE5NjZmdnR437hEIh9u/fH9XGZDL1uWpEV8dYsGABVquV5557jnfeeUd0yzRGdM0EF0Sv13Pw4MHI665obm5m7969UduysrIoLCzs0Paqq65i2bJl/P3vf2fkyJE89dRTNDU1RbUpLi5m+/bt3HrrrZjN5l51CYuLi/noo48oLy8nLS2NzMxMdDpdZKxoxYoVjB49OqF5pgUdER6RoFvY7Xbsdvt522zdupVp06ZFPVatWtVp26VLl7J48WLuuOMOrrzySkaMGMHcuXOj2jzyyCOUl5czcuRIsrOze2X38uXL0ev1TJgwgezsbE6cOBHZd9ddd+H3+xMyCyg4PyJVrGDQ8sEHHzBv3jwqKys7FCgUJBYhRIJBh8/no7a2lsWLF5OXl8crr7yitUmDHtE1Eww6fv/73zN8+HCampr42c9+prU5AoRHJBAI+gHCIxIIBJojhEggEGiOECKBQKA5QogEAoHmCCESCASaI4RIIBBojhAigUCgOUKIBAKB5gghEggEmvP/Aaq811wy81CFAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"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-03-22T20:55:58.966193Z",
"iopub.status.busy": "2024-03-22T20:55:58.965464Z",
"iopub.status.idle": "2024-03-22T20:55:59.192408Z",
"shell.execute_reply": "2024-03-22T20:55:59.191390Z"
},
"papermill": {
"duration": 0.248328,
"end_time": "2024-03-22T20:55:59.194679",
"exception": false,
"start_time": "2024-03-22T20:55:58.946351",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"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-03-22T20:55:59.232725Z",
"iopub.status.busy": "2024-03-22T20:55:59.232388Z",
"iopub.status.idle": "2024-03-22T20:55:59.521439Z",
"shell.execute_reply": "2024-03-22T20:55:59.520399Z"
},
"papermill": {
"duration": 0.310375,
"end_time": "2024-03-22T20:55:59.523531",
"exception": false,
"start_time": "2024-03-22T20:55:59.213156",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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zc3NMFESo7HoBnvSqfBu89q2bRsWLVqkskajra0tFi5ciG3btvE614kTJ/DEE08gICAADMNg79697R5z7NgxDBkyBEKhEL1790Z8fDzPK+g86OYvsWa8k1dDQwMyMzNbbc/MzIRcLud1rpqaGoSHh+Orr77Sav+cnBxMnDgRY8eORWpqKhYsWICXX34Zf/75J6/37Yy0HfZDBS9iKXj3sJ81axbmzJmDGzduIDIyEgBw/vx5rF69GrNmzeJ1rgkTJmDChAla779582b06NEDa9euBQD069cPp06dwrp16xATE8PrvQkhlo138lqzZg38/Pywdu1abmocf39/vPvuu3jnnXf0HqCys2fPIjo6WmVbTEwMFixYoPEYsVgMsVjMPa+srDRUeFaB2ryIpeBdbbSxscF7772HgoIClJeXo7y8HAUFBXjvvfdU2sEMoaioCL6+virbfH19UVlZibq6OrXHxMXFqdwtFYlEBo3RnFCTF7FmHeqk6ubmZvZ3GJcsWYKKigrukZeXZ+qQTEL7EhUVvYhl0GlWiV9++QW7du1Cbm4uJBKJymvJycl6CUwdPz8/FBcXq2wrLi6Gm5sbHB0d1R4jFAohFAoNFhMhxDR4l7y+/PJLzJo1C76+vkhJSUFkZCS6dOmCmzdv8mp810VUVBQSExNVtiUkJCAqKsqg72upOltXiU52uZ0e7+T19ddfY8uWLdiwYQMEAgHee+89JCQk4M0330RFBb9pSKqrq5GamorU1FQAiq4QqampyM3NBaCo8ilPLT137lzcvHkT7733HjIzM/H1119j165dePvtt/leRqdDlUFibXgnr9zcXIwcORIA4OjoiKqqKgDAtGnT8OOPP/I618WLFxEREYGIiAgAinnDIiIisGzZMgBAYWEhl8gAoEePHvj999+RkJCA8PBwrF27Flu3bqVuEgQAJejOhnebl5+fH8rKyhAcHIygoCCcO3cO4eHhyMnJ4T3/+ZgxY9o8Rl3v+TFjxrQ5p5gpVdRJIbC1gaPAsHddtafDwGzKAMRC8C55Pfzww9i/fz8ARYfVt99+G+PGjcPkyZPVrufYWVSLGzD686N4+uvTpg5FSefKRNTm1bnwLnlt2bKFGwY0b948dOnSBWfOnMGTTz6J1157Te8BWor0ggqU10pRXisFy7JmN6usooTbfkxU8iKWglfyamhowKef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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"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.018137,
"end_time": "2024-03-22T20:55:59.560151",
"exception": false,
"start_time": "2024-03-22T20:55:59.542014",
"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": 4549.120128,
"end_time": "2024-03-22T20:56:02.301034",
"environment_variables": {},
"exception": null,
"input_path": "eval/contraceptive/lct_gan/1/mlu-eval.ipynb",
"output_path": "eval/contraceptive/lct_gan/1/mlu-eval.ipynb",
"parameters": {
"allow_same_prediction": true,
"dataset": "contraceptive",
"dataset_name": "contraceptive",
"debug": false,
"folder": "eval",
"gp": true,
"gp_multiply": true,
"log_wandb": false,
"param_index": 0,
"path": "eval/contraceptive/lct_gan/1",
"path_prefix": "../../../../",
"random_seed": 1,
"single_model": "lct_gan"
},
"start_time": "2024-03-22T19:40:13.180906",
"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
} |