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
|
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "LPphBnKR-aWF"
},
"source": [
"# Step 0: Imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_state": "idle",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ge5QvElvhCOw",
"outputId": "c7cdaefa-d6dc-44ad-c258-e4fb2aca97a5"
},
"outputs": [],
"source": [
"# using tqdm.auto glitches out collaborative editing\n",
"from tqdm import tqdm\n",
"import torch\n",
"import torch.nn as nn\n",
"from torch.utils.data import DataLoader, TensorDataset\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt, mpld3\n",
"\n",
"from math import sqrt\n",
"from collections import deque\n",
"import os\n",
"import random\n",
"from concurrent.futures import ProcessPoolExecutor\n",
"import pickle\n",
"\n",
"torch.manual_seed(42)\n",
"random.seed(42)\n",
"\n",
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
"assert device.type == \"cuda\", \"CUDA is not available. Please check your GPU setup.\""
]
},
{
"cell_type": "code",
"execution_count": 2,
"execution_state": "idle",
"metadata": {
"id": "lylOX2POPwFL"
},
"outputs": [],
"source": [
"# VTXS numbers here are inclusive\n",
"MIN_VTXS = 3\n",
"MAX_VTXS = 15\n",
"MAX_TUNE_VTXS = 7\n",
"AVG_DEG = 2\n",
"SEQ_LEN = MAX_VTXS + 1 # means 32 edges, final token is the target vertex\n",
"PAD_TOKEN = 0\n",
"EPOCH_SIZE = 2**20\n",
"# vertices are labelled 1,2,...,MAX_VTXS\n",
"# we also have a padding token which is 0."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gKt-yIpDebF1"
},
"source": [
"# Step 1: Generate synthetic data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_state": "idle",
"metadata": {},
"outputs": [],
"source": [
"# original task data\n",
"# the data will be edge lists\n",
"# like this: [1 3 1 5 2 4 0 0 0 0 2]\n",
"# this represents edges (1,3), (1,5) (2,4)\n",
"# (the zeros are just padding tokens)\n",
"# the final 2 means which vertex we're going to \n",
"\n",
"# the label is the shortest distance from vtx 1 to vtx 2\n",
"# or \"number of vertices\" if no path exists\n",
"\n",
"def random_graph(n):\n",
" edge_list = []\n",
" adjacencies = [set() for _ in range(n+1)]\n",
" indices = [random.randint(1, n) for _ in range(AVG_DEG * n)]\n",
" for i in range(0, len(indices), 2):\n",
" u = indices[i]\n",
" v = indices[i + 1]\n",
" if u != v:\n",
" if u < v:\n",
" edge_list += [u, v]\n",
" else:\n",
" edge_list += [v, u]\n",
" adjacencies[u].add(v)\n",
" adjacencies[v].add(u)\n",
" edge_list += [PAD_TOKEN]*(2*SEQ_LEN-1-len(edge_list))\n",
" return edge_list, adjacencies\n",
"\n",
"def SSSP(G, target=2, distonly=True):\n",
" dist = [MAX_VTXS] * len(G)\n",
" parent = [-1] * len(G)\n",
" dist[1] = 0\n",
" frontier = deque()\n",
" frontier.append(1)\n",
" while len(frontier) > 0:\n",
" vtx = frontier.popleft()\n",
" for x in G[vtx]:\n",
" if dist[x] == MAX_VTXS:\n",
" parent[x] = vtx\n",
" dist[x] = 1 + dist[vtx]\n",
" frontier.append(x)\n",
" if x == target:\n",
" if distonly:\n",
" return dist[x]\n",
" path = [x]\n",
" while parent[x] != -1:\n",
" x = parent[x]\n",
" path.append(x)\n",
" return list(reversed(path))\n",
" return MAX_VTXS if distonly else []\n",
"\n",
"# large: size up to MAX_VTXS instead of MAX_TUNE_VTXS\n",
"# target: 2, \"onpath\", \"any\"\n",
"# largetarget: whether can go up to MAX_VTXS or just MAX_TUNE_VTXS\n",
"def mkbatch(size, large=True, target=2, largetarget=True):\n",
" graphs = []\n",
" dists = []\n",
" \n",
" for i in range(size):\n",
" n = random.randint(MIN_VTXS, MAX_VTXS if large else MAX_TUNE_VTXS)\n",
" while True:\n",
" edge_list, adj_list = random_graph(n)\n",
" if target == 2:\n",
" # Train data\n",
" dist = SSSP(adj_list)\n",
" # Filter out some short distance graphs\n",
" if 6 <= dist < MAX_VTXS or (dist < 6 and 2 * random.random() < 1 / (6 - dist)) or (dist == MAX_VTXS and random.random() < 1 / MAX_VTXS):\n",
" edge_list[-1] = 2\n",
" break\n",
" elif target == \"onpath\":\n",
" path = SSSP(adj_list, 2, False)\n",
" dist = len(path) - 1\n",
" # Filter out some short distance graphs\n",
" if dist < 1 or (not large and dist < 4 and 3 * random.random() > 1 / (4 - dist)):\n",
" continue\n",
" dist = random.choices(range(1, len(path)), weights=range(1, len(path)))[0]\n",
" if (largetarget or path[dist] <= MAX_TUNE_VTXS):\n",
" edge_list[-1] = path[dist]\n",
" break\n",
" elif target == \"any\":\n",
" edge_list[-1] = random.randint(2, MAX_VTXS if largetarget else MAX_TUNE_VTXS)\n",
" dist = SSSP(adj_list, edge_list[-1])\n",
" break\n",
" graphs.append(edge_list)\n",
" dists.append(dist)\n",
" \n",
" data = torch.tensor(graphs)\n",
" labels = torch.tensor(dists, dtype=torch.float32)\n",
" padding = data == PAD_TOKEN\n",
" return data, labels, padding\n",
"\n",
"def savebatch(size, idx):\n",
" data, labels, padding = mkbatch(size)\n",
" everything = {\n",
" \"data\": data,\n",
" \"labels\": labels,\n",
" \"padding\": padding,\n",
" }\n",
" \n",
" with open(f'data-new/{idx}.pickle', 'wb') as file:\n",
" pickle.dump(everything, file)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"execution_state": "idle",
"metadata": {},
"outputs": [],
"source": [
"# Only need to run this once to generate training data\n",
"# RESTART THE KERNEL BEFORE RUNNING AND ONLY RUN THE CELLS ABOVE\n",
"# Python is slow and awful\n",
"\n",
"# with ProcessPoolExecutor() as executor:\n",
"# for i in range(64):\n",
"# executor.submit(savebatch, EPOCH_SIZE, i)\n",
"# executor.shutdown()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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WlqaduzYodDQUPMszL///W81btzY/EyhQlOmTLG779V+DuW93sTERH3//fdFLvMvTuvWrdW6dWtNmjRJu3fvVteuXbVo0SK99tpr11xDaRS3vm+//VZVq1Y1Q3fNmjWLXEEmy9kfq+utLTAwUJKUkpKixo0bm+25ublKTU1VWFhYidYBlCf2HAGV0DPPPKP8/Hy9+uqrRfry8vLMP1zBwcEKCwszD+teEi8vr2L/wF1N4f+p//H/zOfMmXMDK7lxZ8+eVb9+/ZSfn6+///3vZntx9e7du1eJiYl29y+8+u+PP4vyXO+pU6c0aNAgubm5ady4cVcdZ7PZlJeXZ9fWunVrOTs7Kycnx2wr6XN5LYmJiXb7qU6fPq2PP/5YPXr0MH8md955p7Kzs+3ewvr555+1du3aIvNdb21hYWFyc3PTvHnz7H7mS5YsUXZ2tiIiIspgdUDZ4MwRUAl169ZNL730kmJiYpScnKwePXrI1dVVJ06c0Jo1azR37lw99dRT15wjJCREW7Zs0axZsxQQEKCgoCB17tz5quO9vb113333acaMGbpy5YruuOMObd682fxMporw7bff6sMPP5RhGLLZbOYnZF+4cEGzZs1Sz549zbGPPPKIPvroIz355JOKiIhQamqqFi1apODgYHOvj35/yyk4OFirVq1S06ZNVatWLbVq1UqtWrUqk/UeOHBAH374oQoKCpSVlaX9+/fr//7v/+Tk5KQPPvjA/NiA4mzdulXR0dF6+umn1bRpU+Xl5emDDz5QlSpV1KdPH3NcSZ/La2nVqpXCw8PtLuXX758DVahv376aMGGCnnzySY0cOVKXLl3SwoUL1bRp0yIb1a+3trp162rixImaNm2aevbsqccee0wpKSlasGCBOnbseF1n2IAK4+jL5YBbUeFlzPv377/muMjISMPLy+uq/YsXLzZCQkIMT09Po3r16kbr1q2N8ePHG2fOnPnTGo4fP27cd999hqenpyHJvNy68HLsX375pch9fvzxR+PJJ580atSoYfj4+BhPP/20cebMmSKXwl/tUv6IiIgic3br1s3o1q3bn9ZbeJm5JMPZ2dmoUaOG0a5dO2PUqFHG0aNHi4wvKCgw3njjDSMwMNBwd3c32rVrZ6xfv77Yy9B3795thISEGG5ubnZrud71FqfwUv7Cw8XFxahVq5bRuXNnY+LEicap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6qhKlSrKyMiwa8/IyJC/v3+R8RMnTtTYsWPN2wUFBTp79qxq164tJyenCqm5ODabTQ0aNNDp06fl7e3tsDrK0+2wRt0m62SNtwbWeGu4XddoGIbOnz+vgICAEs11W4QjNzc3hYSEKCEhQU888YT0e+BJSEhQdHR0kfHu7u5yd3e3a6tRo0aF1ftnvL29b9lf7kK3wxp1m6yTNd4aWOOt4XZco4+PT4nnuC3CkSSNHTtWkZGR6tChgzp16qQ5c+bo4sWLev755x1dGgAAqERum3D017/+Vb/88osmT56s9PR0tW3bVhs3biyySRsAANzebptwJEnR0dHFvo12s3B3d9eUKVOKvOV3K7kd1qjbZJ2s8dbAGm8NrLFknIwSX98GAABw67ptPiEbAADgehCOAAAALAhHAAAAFoQjAAAAC8LRTSQ2NlaNGjWSh4eHOnfurH379jm6pDITExOjjh07qnr16vL19dUTTzyhlJQUR5dVrt588005OTlp9OjRji6lTP3000967rnnVLt2bXl6eqp169b66quvHF1WmcnPz9crr7yioKAgeXp66s4779Srr75a8u9uqkR27typRx99VAEBAXJyctK6devs+g3D0OTJk1WvXj15enoqLCxMJ06ccFi9pXWtdV65ckUTJkxQ69at5eXlpYCAAA0cOFBnzpxxaM0l9WfPpdWwYcPk5OSkOXPmVGiNN+p61vjNN9/osccek4+Pj7y8vNSxY0elpaVd92MQjm4Sq1at0tixYzVlyhQdOHBAd999t8LDw5WZmeno0srEjh07FBUVpT179ig+Pl5XrlxRjx49dPHiRUeXVi7279+vf/7zn2rTpo2jSylT586dU9euXeXq6qrPP/9cx44d08yZM1WzZk1Hl1Zm3nrrLS1cuFDz58/XN998o7feekszZszQO++84+jSSu3ixYu6++67FRsbW2z/jBkzNG/ePC1atEh79+6Vl5eXwsPDdfny5Qqv9UZca52XLl3SgQMH9Morr+jAgQP66KOPlJKSoscee8whtZbWnz2XhdauXas9e/aU+Gs1KoM/W+P333+ve+65R82bN9f27dt16NAhvfLKK/Lw8Lj+B7nRL3VFxejUqZMRFRVl3s7PzzcCAgKMmJgYh9ZVXjIzMw1Jxo4dOxxdSpk7f/680aRJEyM+Pt7o1q2bMWrUKEeXVGYmTJhg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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bins = torch.bincount(mkbatch(2**15)[1].to(torch.uint8).cpu())\n",
"plt.bar(range(len(bins)), bins)\n",
"plt.xlabel(\"Label\")\n",
"plt.ylabel(\"Count\")\n",
"plt.title(\"Pre-train Data Distribution\")\n",
"with open(\"plots/train-dist.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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N29Wr169FBsbqx07dig6OlrR0dHavXv3LZo5AAAobWyGYRjOLkKSbDabli1bpujoaLPt8ccf15kzZ/Kdgcrz3XffqWHDhtq6datatWolSVq5cqXuvfde/fTTTwoICNDs2bP1wgsvKC0tTe7u7pKkMWPGKCEhQfv27ZMkPfroo8rKytLy5cvNbbdt21bNmzfXnDlzLNVvt9vl7e2tjIwMeXl5/aFjgWsLGrPC2SUUucOTo5xdAgDctm7m87vE39O0fv16+fj4qH79+nr66af166+/mn3JycmqVKmSGZgkKSIiQi4uLtqyZYs5pn379mZgkqTIyEjt379fp0+fNsdEREQ47DcyMlLJycnFMEMAAFAauDm7gOvp2rWrHnzwQQUHB+v777/X3//+d3Xr1k3JyclydXVVWlqafHx8HF7j5uamKlWqKC0tTZKUlpam4OBghzG+vr5mX+XKlZWWlma2XT0mbxsFyc7OVnZ2trlut9uLZM4AAKBkKtGhqWfPnubfTZo0UdOmTVW7dm2tX79enTt3dmpt8fHxmjBhglNrAAAAxafEX5672h133KFq1arp4MGDkiQ/Pz+dPHnSYczly5d16tQp+fn5mWPS09MdxuSt32hMXn9Bxo4dq4yMDHM5evRoEc0SAACURKUqNP3000/69ddf5e/vL0kKDw/XmTNnlJKSYo5Zu3atcnNzFRYWZo7ZuHGjLl26ZI5JTExU/fr1VblyZXPMmjVrHPaVmJio8PDwa9bi4eEhLy8vhwUAAPx5OTU0ZWZmKjU1VampqZKkQ4cOKTU1VUeOHFFmZqaef/55ff311zp8+LDWrFmjv/3tb6pTp44iIyMlSQ0aNFDXrl01YMAAffPNN/rqq680ePBg9ezZUwEBAZKk3r17y93dXbGxsdqzZ48++OADzZw5UyNGjDDrGDp0qFauXKlp06Zp3759Gj9+vLZt26bBgwc76cgAAICSxqmhadu2bWrRooVatGghSRoxYoRatGihcePGydXVVbt27dL999+vevXqKTY2VqGhofryyy/l4eFhbmPRokUKCQlR586dde+99+qvf/2rwzOYvL29tXr1ah06dEihoaEaOXKkxo0b5/AspzvvvFOLFy/W3Llz1axZM3300UdKSEhQ48aNi/mIAACAkqrEPKeptOM5TcWD5zQBAIrSn+o5TQAAACUBoQkAAMAC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jYcOHVJqaqqqVKmiWrVqObW24hIXF6fFixfrP//5jypWrGje1+bt7a2yZcs6u7xiNXbsWHXr1k21atXS2bNntXjxYq1fv16rVq1ydmnFqmLFivnuaStfvryqVq16W93r9txzz6l79+4KDAzU8ePH9fLLL8vV1VW9evVydmnFbvjw4brzzjv12muv6ZFHHtE333yjuXPnau7cuc4u7dYygCveeusto1atWoa7u7vRpk0b4+uvv3Z2ScVu3bp1hqR8S0xMjLNLKzYFzV+SMX/+fGeXVuyeeOIJIzAw0HB3dzeqV69udO7c2Vi9erWzyyoROnToYAwdOtTZZRSrRx991PD39zfc3d2Nv/zlL8ajjz5qHDx40NllOc1nn31mNG7c2PDw8DBCQkKMuXPnOrukW47nNAEAAFjAPU0AAAAWEJoAAAAsIDQBAABYQGgCAACwgNAEAABgAaEJAADAAkITAACABYQmALiOBQsWqFKlSn94OzabTQkJCUVSEwDnIDQB+NN7/PHHFR0d7ewyAJRyhCYAAAALCE0AbmvTp09XkyZNVL58edWsWVPPPPOMMjMz841LSEhQ3bp15enpqcjISB09etSh/z//+Y9atmwpT09P3XHHHZowYYIuX75cjDMBcKsRmgDc1lxcXPTmm29qz549WrhwodauXatRo0Y5jDl37pxeffVV/fvf/9ZXX32lM2fOqGfPnmb/l19+qX79+mno0KHau3ev/vnPf2rBggV69dVXnTAjALcKP9gL4E/v8ccf15kzZyzdiP3RRx9p0KBB+uWXX6QrN4L3799fX3/9tcLCwiRJ+/btU4MGDbRlyxa1adNGERER6ty5s8aOHWtu5/3339eoUaN0/Phx6cqN4MuWLePeKqAUc3N2AQDgTElJSYqPj9e+fftkt9t1+fJlXbhwQefOnVO5cuUkSW5ubmrdurX5mpCQEFWqVEnfffed2rRpo507d+qrr75yOLOUk5OTbzsASjdCE4Db1uHDh3Xffffp6aef1quvvqoqVapo06ZNio2N1cWLFy2HnczMTE2YMEEPPvhgvj5PT89bUDkAZyA0AbhtpaSkKDc3V9OmTZOLy2+3eH744Yf5xl2+fFnbtm1TmzZtJEn79+/XmTNn1KBBA0lSy5YttX//ftWpU6eYZwCgOBGaANwWMjIylJqa6tBWrVo1Xbp0SW+99Za6d++ur776SnPmzMn32jJlymjIkCF688035ebmpsGDB6tt27ZmiBo3bpzuu+8+1apVSw899JBcXFy0c+dO7d69W6+88kqxzRHArcW35wDcFtavX68WLVo4LO+9956mT5+u119/XY0bN9aiRYsUHx+f77XlypXT6NGj1bt3b911112qUKGCPvjgA7M/MjJSy5cv1+rVq9W6dWu1bdtWM2bMUGBgYDHPEsCtxLfnAAAALOBMEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAs+P851mhBWiK6HwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bins = torch.bincount(mkbatch(2**15, large=False, target=\"onpath\")[1].to(torch.uint8).cpu())\n",
"plt.bar(range(len(bins)), bins)\n",
"plt.xlabel(\"Label\")\n",
"plt.ylabel(\"Count\")\n",
"plt.title(\"Fine-tune Data Distribution\")\n",
"with open(\"plots/tune-dist.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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PXq00tivr+WF+r9U77zzjstzVh988IH+7//+T3feeacx1rRpU23evFmnT582xlatWlVpaYKL6a1v374qKytzWTZCkmbMmCGLxeLy/sDVjjtNQDV3++2366mnnlJycrJyc3PVu3dv+fj46Ntvv9XSpUs1a9YsDRw4UG+//bbeeOMN3XvvvWratKmOHz+uN998U1arVX379pXOfmXUsmVLLV68WH/+859Vr149tW7d2uXrtfP57LPPdOrUKZWVlennn3/Wxo0btXLlStlsNi1btkwhISFGbb9+/fTuu+/KZrOpZcuWys7O1rp16yr9HL1du3aqUaOGpkyZoqKiIvn5+emOO+7QLbfcorp162rQoEEaNmyYLBaL3n333Yv++ueTTz7R3r17debMGeXn5yszM1Pp6ekKCwvTypUr5e/vf8HXTpo0SVlZWYqOjlZYWJgKCgr0xhtv6LrrrtOtt94qnQ0wgYGBSklJUZ06dVSrVi116dJF4eHhF9VnhXr16unWW2/V448/rvz8fM2cOVM33HCDy7IITz75pD744AP16dNHf/3rX/Wf//xH7733nsuD2Rfb21133aWePXvqhRde0IEDB9S2bVutXbtWK1asUGJiYqVjA1c1d/98D0DV+vWSAxXmz5/v7NixozMgIMBZp04dZ5s2bZyjRo1yHjlyxOl0Op3bt293Pvjgg87GjRs7/fz8nEFBQc5+/fo5t23b5nKcTZs2OTt27Oj09fX93eUHKn4OX7H5+Pg4GzZs6Ozevbtz8uTJzoKCgkqvOXbsmPPxxx93NmjQwFm7dm1nVFSUc+/evef9ufybb77pvP766501atRwWX5g48aNzq5duzoDAgKcdrvdOWrUKOeaNWsuuETBuSqWHKjYfH19nSEhIc6//OUvzlmzZrn8rL/Cr5ccyMjIcN5zzz1Ou93u9PX1ddrtdueDDz7o/Oabb1xet2LFCmfLli2d3t7eLj/xv/32252tWrU6b38XWnLg3//+t3Ps2LHOoKAgZ0BAgDM6Otp58ODBSq+fNm2a809/+pPTz8/P2a1bN+e2bdsqHfO3evv1kgNOp9N5/Phx5/Dhw512u93p4+PjvPHGG52vvfaas7y83KVOkjM+Pr5STxdaCgHwNBYnT98BAAD8Lp5pAgAAMIHQBAAAYAKhCQAAwARCEwAAgAmEJgAAABMITQAAACaw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kqTXX39dffv21d///nfZ7XYtXLhQp0+f1ltvvSVfX1+1atVKubm5mj59uku4AgAA166LutM0btw4HT16VH/+8581depUrVixQitWrNCUKVPUrFkzHT16VC+88EKVNXfLLbcoIyND33zzjXT2marPP/9cd955pyRp//79ysvLc1nqwGazqUuXLsrOzpYkZWdnKzAw0AhMkhQZGSkvLy9t2bLFqOnevbt8fX2NmqioKO3bt0/Hjh07b28lJSVyOBwuGwAAqL4u6k5TcHCwNm3apGeeeUZjx441ni2yWCyKiorS3LlzFRwcXGXNjRkzRg6HQ82bN1eNGjVUVlamyZMnKzY2VpKUl5dn9PXrPivm8vLyFBQU5DLv7e2tevXqudSEh4dXOkbFXN26dSv1lpycrIkTJ1bZuQIAAM920YtbhoWF6eOPP9axY8f03Xffyel06sYbbzxvsPijlixZooULF2rRokXGV2aJiYmy2+0aNGhQlb/fxRg7dqxGjBhh7DscDoWGhrq1JwAAcPlc0orgklS3bl117ty5arv5lZEjR2rMmDGKiYmRJLVp00YHDx5UcnKyBg0apJCQEOnsr/rOfQA9Pz9f7dq1kySFhISooKDA5bhnzpzR0aNHjdeHhIQoPz/fpaZiv6Lm1/z8/OTn51el5wsAADzXJf3tuSvl5MmT8vJybbFGjRoqLy+XJIWHhyskJEQZGRnGvMPh0JYtWxQRESFJioiIUGFhocv6UZmZmSovL1eXLl2MmqysLJWWlho16enpatas2WW5gwYAAK4+Hh2a7rrrLk2ePFmrV6/WgQMHtGzZMk2fPl333nuvdPZZqsTERL388stauXKlvv76az366KOy2+3q37+/dPZv4vXp00eDBw/WF198oY0bNyohIUExMTGy2+2SpIceeki+vr6Ki4vTrl27tHjxYs2aNcvl6zcAAHBtu+Sv566E119/XePHj9ff/vY3FRQUyG6366mnnlJSUpJRM2rUKJ04cUJDhgxRYWGhbr31VqWlpbksibBw4UIlJCSoV69e8vLy0oABAzR79mxj3mazae3atYqPj1fHjh3VoEEDJSUlsdwAAAAwWJznLq+NS+ZwOGSz2VRUVHTev813rWoyZrW7W6jkwKvRv1tztfYNALg4F/P57dFfzwEAAHgKQhMAAIAJhCYAAAATCE0AAAAmEJoAAABM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FKScnBx1795dRUVF+te//qVFixbpjjvukCQtWLBALVq00ObNm9W1a1etXbtWu3fv1rp16xQcHKx27drppZde0ujRozVhwgT5+voqJSVF4eHhmjZtmiSpRYsW+vzzzzVjxgxFRUW55dwBAIDn8Pg7Tb9WVFQkSapXr54kKScnR6WlpYqMjDRqmjdvrsaNGys7O1uSlJ2drTZt2ig4ONioiYqKksPh0K5du4yac49RUVNxDAAAcG3z+DtN5yovL1diYqK6deum1q1bS5Ly8vLk6+urwMBAl9rg4GDl5eUZNecGpor5irnfqnE4HPrll18UEBDgMldSUqKSkhJj3+FwVOm5AgAAz3JV3WmKj4/Xzp079f7777u7FSUnJ8tmsxlbaGiou1sCAACX0VUTmhISErRq1SqtX79e1113nTEeEhKi06dPq7Cw0KU+Pz9fISEhRs2vf01Xsf97NVartdJdJkkaO3asioqKjO3w4cNVeLYAAMDTeHxocjqdSkhI0LJly5SZmanw8HCX+Y4dO8rHx0cZGRnG2L59+3To0CFFRERIkiIiIvT111+roKDAqElPT5fValXLli2NmnOPUVFTcYxf8/Pzk9VqddkAAED15fHPNMXHx2vRokVasWKF6tSpYzyDZLPZFBAQIJvNpri4OI0YMUL16tWT1WrV0KFDFRERoa5du0qSevfurZYtW+qRRx7R1KlTlZeXp3Hjxik+Pl5+fn6SpKefflpz5szRqFGj9MQTTygzM1NLlizR6tWr3Xr+AADAM3j8naZ58+apqKhIPXr0UKNGjYxt8eLFRs2MGTPUr18/DRgwQN27d1dISIg+/PBDY75GjRpatWqVatSooYiICD388MN69NFHNWnSJKMmPDxcq1evVnp6utq2batp06bpn//8J8sNAAAA6Wq40+R0On+3xt/fX3PnztXcuXMvWBMWFqaPP/74N4/To0cPffnll5fUJwAAqN48/k4TAACAJyA0AQAAmEBoAgAAMMHjn2kCUP01GeN5v1I98Gq0u1sA4GG40wQAAGACoQkAAMAEQhMAAIAJhCYAAAATCE0AAAAmEJoAAABMIDQBAACYQGgCAAAwgdAEAABgAqEJAADABEITAACACYQmAAAAEwhNAAAAJhCaAAAATCA0AQAAmEBoAgAAMIHQBAAAYAKhCQAAwARCEwAAgAmEJgAAABO8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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bins = torch.bincount(mkbatch(2**15, large=True, target=\"onpath\", largetarget=False)[1].to(torch.uint8).cpu())\n",
"plt.bar(range(len(bins)), bins)\n",
"plt.xlabel(\"Label\")\n",
"plt.ylabel(\"Count\")\n",
"plt.title(\"Test Data Distribution\")\n",
"with open(\"plots/test-dist.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Q3Cg_8UQep8g"
},
"source": [
"# Step 2: Define Transformer Model"
]
},
{
"cell_type": "code",
"execution_count": 4,
"execution_state": "idle",
"metadata": {
"id": "tLOWhg_CeWzH"
},
"outputs": [],
"source": [
"class TransformerModel(nn.Module):\n",
" def __init__(self, input_dim, model_dim, output_dim, num_heads, num_layers, seq_len, dropout):\n",
" super().__init__()\n",
" self.model_dim = model_dim\n",
" self.embedding = nn.Embedding(input_dim, model_dim // 2)\n",
" encoder_layer = nn.TransformerEncoderLayer(d_model=model_dim, nhead=num_heads,\n",
" dim_feedforward=model_dim*4,\n",
" dropout=dropout, batch_first=True)\n",
" self.transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers)\n",
" self.fc_out = nn.Linear(model_dim, output_dim)\n",
"\n",
" def forward(self, src, key_padding_mask):\n",
" batch_sz = src.size(0)\n",
" src = torch.cat((src, torch.full((batch_sz, 1), MAX_VTXS + 1, device=device)), dim=1)\n",
" embed = torch.cat((self.embedding(src[:,::2]), self.embedding(src[:,1::2])), dim=2)\n",
" output = self.transformer_encoder(embed, src_key_padding_mask=key_padding_mask[:, ::2])\n",
" return self.fc_out(output[:, -1, :])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bpIeg86S-hBb"
},
"source": [
"# Step 3: Make Model"
]
},
{
"cell_type": "code",
"execution_count": 5,
"execution_state": "idle",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kWXvJRDYgFVP",
"outputId": "c13adb9d-6565-43b5-8437-20cef3dc0d16"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training data: 104857K\n",
"Trainable parameters in the model: 300513\n"
]
}
],
"source": [
"# PARAMS\n",
"VOCAB_SIZE = 1 + MAX_VTXS + 1 # pad plus max number of vertices plus target token\n",
"MODEL_DIM = 64 # Dimension of model (embedding and transformer)\n",
"NEPOCHS = 100\n",
"BSZ = 2**15 # Batch size\n",
"NHEADS = 2\n",
"NLAYERS = 6\n",
"DROPOUT = 0 # 0.2\n",
"model = TransformerModel(input_dim=VOCAB_SIZE, model_dim=MODEL_DIM,\n",
" output_dim=1, num_heads=NHEADS,\n",
" num_layers=NLAYERS, seq_len=SEQ_LEN,\n",
" dropout=DROPOUT).to(device)\n",
"model = torch.compile(model)\n",
"\n",
"trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)\n",
"print(f\"Training data: {NEPOCHS*EPOCH_SIZE//10**3}K\")\n",
"print(f\"Trainable parameters in the model: {trainable_params}\")\n",
"\n",
"train_err = []\n",
"len1 = []\n",
"len2 = []\n",
"len3 = []\n",
"leninf = []\n",
"epoch = 0\n",
"\n",
"# clear loss file\n",
"open('loss', 'w').close()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"execution_state": "idle",
"metadata": {},
"outputs": [],
"source": [
"# model = TransformerModel(input_dim=VOCAB_SIZE, model_dim=MODEL_DIM,\n",
"# output_dim=1, num_heads=NHEADS,\n",
"# num_layers=NLAYERS, seq_len=SEQ_LEN,\n",
"# dropout=DROPOUT).to(device)\n",
"# model = torch.compile(model)\n",
"# model.load_state_dict(torch.load('model.pth', weights_only=True))\n",
"\n",
"LR = 1e-3\n",
"\n",
"criterion = nn.MSELoss()\n",
"optimizer = torch.optim.Adam(model.parameters(), lr=LR)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "f8Zn33m7CxL5"
},
"source": [
"# Step 4: Train the Model for the first task"
]
},
{
"cell_type": "code",
"execution_count": 8,
"execution_state": "idle",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 486
},
"id": "pvTfzGmCeXU4",
"outputId": "0d3a20f3-23be-4c19-9eb6-46bfe11a48b1"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/sipb/.venv/lib64/python3.12/site-packages/torch/nn/functional.py:6278: UserWarning: Memory Efficient attention on Navi31 GPU is still experimental. Enable it with TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1. (Triggered internally at ../aten/src/ATen/native/transformers/hip/sdp_utils.cpp:269.)\n",
" attn_output = scaled_dot_product_attention(\n",
"/tmp/torchinductor_sipb/p5/cp5ogl77xlvv4lzubyvimmor72gh5qiymvzslhatxqlh2iskkcqu.py:1018: UserWarning: Attempting to use hipBLASLt on an unsupported architecture! Overriding blas backend to hipblas (Triggered internally at ../aten/src/ATen/Context.cpp:296.)\n",
" extern_kernels.mm(reinterpret_tensor(buf1, (524288, 64), (64, 1), 0), reinterpret_tensor(primals_5, (64, 192), (1, 64), 0), out=buf2)\n",
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:31<00:00, 1.03it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/100 \t Train Err: 5.915580503642559 0.4505993718339596 0.6243474127259105 1.5954655343666673 22.043999701738358\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100 \t Train Err: 0.6586012691259384 0.010000545691582374 0.024956375011242926 0.0908401117194444 2.200286313891411\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 2/100 \t Train Err: 0.2822786392644048 0.003877735580317676 0.011804497975390404 0.06714203883893788 0.6882269307971001\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 3/100 \t Train Err: 0.19177303789183497 0.0033735682591213845 0.00941117930051405 0.06364660896360874 0.40807230956852436\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 4/100 \t Train Err: 0.142419709591195 0.0026143487593799364 0.007357882786891423 0.058737545274198055 0.2563177370466292\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 5/100 \t Train Err: 0.11377326445654035 0.002205640936153941 0.006019950611516833 0.0485867268871516 0.19204956525936723\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 6/100 \t Train Err: 0.09546203236095607 0.0019339443933859002 0.0052241795710870065 0.042339954525232315 0.14500665361993015\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 7/100 \t Train Err: 0.08380867214873433 0.0025053542904061032 0.0052922226750524715 0.03802183154039085 0.11907450819853693\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:21<00:00, 1.46it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 8/100 \t Train Err: 0.07723104278557003 0.0029060271444905084 0.0059348611466703005 0.03568730264669284 0.10317586152814329\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 9/100 \t Train Err: 0.06973861914593726 0.0020777636782440823 0.004200900097202975 0.032207064679823816 0.08401392458472401\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:21<00:00, 1.47it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 10/100 \t Train Err: 0.06660757877398282 0.002029255470915814 0.004411700545460917 0.03103881428251043 0.08006043778732419\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 11/100 \t Train Err: 0.0638601048849523 0.0019552546054910636 0.004216364446619991 0.030923083191737533 0.06965454539749771\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 12/100 \t Train Err: 0.06380962789990008 0.004082398601894965 0.005662415154802147 0.030096195463556796 0.06712937023257837\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 13/100 \t Train Err: 0.05648710671812296 0.0015669492140659713 0.003465047884674277 0.027280425652861595 0.0580466557003092\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 14/100 \t Train Err: 0.05479328567162156 0.002785868946375558 0.004651390452636406 0.02628502214793116 0.05516616065870039\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 15/100 \t Train Err: 0.05039948446210474 0.001386107914186141 0.002831360572599806 0.023484625620767474 0.04737765033496544\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 16/100 \t Train Err: 0.0479898703051731 0.001850387139711529 0.0033599310663703363 0.02412145968992263 0.04099923963076435\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:21<00:00, 1.46it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 17/100 \t Train Err: 0.04865480866283178 0.002051993552413478 0.0033408473536837846 0.022620209609158337 0.04534965530910995\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 18/100 \t Train Err: 0.046673479839228094 0.003542559619745589 0.0036264514783397317 0.02171917725354433 0.040135253919288516\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 19/100 \t Train Err: 0.04334549431223422 0.002015004936765763 0.002814352781570051 0.020710892393253744 0.03765762131661177\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 20/100 \t Train Err: 0.04148448130581528 0.0012918650036226609 0.002228728772024624 0.019462902564555407 0.034912509290734306\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 21/100 \t Train Err: 0.04145978135056794 0.001451208453545405 0.0021605480651487596 0.01913026621332392 0.0369064172700746\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 22/100 \t Train Err: 0.041122547117993236 0.0014523757236020174 0.0023905441848910414 0.01923307462129742 0.03851280417438829\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 23/100 \t Train Err: 0.03945205733180046 0.0019882373744621873 0.0024855316842149477 0.018886710691731423 0.03429982590023428\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 24/100 \t Train Err: 0.03960938355885446 0.0014295643559307791 0.001973358819668647 0.018016513844486326 0.033691041855490766\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 25/100 \t Train Err: 0.03732225619023666 0.0008848551324263099 0.0016024388787627686 0.0176690933003556 0.027674593147821724\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 26/100 \t Train Err: 0.03627042338484898 0.001499695326856454 0.002097381031489931 0.01686566128046252 0.028806022281059995\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 27/100 \t Train Err: 0.035848396830260754 0.001287375605897978 0.0019127794657833874 0.01593246089760214 0.026827875160961412\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 28/100 \t Train Err: 0.03657312598079443 0.0015639464845662587 0.0020721888595289784 0.016167674533789977 0.02817649155986146\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 29/100 \t Train Err: 0.03576729737687856 0.0020534898562800663 0.0024041683045652462 0.01594006348750554 0.026180977536569117\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 30/100 \t Train Err: 0.035552564600948244 0.0014864003778711776 0.0017050756123353494 0.016300543153192848 0.02777327578223776\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 31/100 \t Train Err: 0.03428351623006165 0.001444402550077939 0.0018266159950144356 0.015063455561175942 0.02663210871105548\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 32/100 \t Train Err: 0.03501159755978733 0.002936632603450562 0.002198894866523915 0.015069253509864211 0.02531576040200889\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 33/100 \t Train Err: 0.03346483368659392 0.001996557608435978 0.0022031095359125175 0.014728363748872653 0.025125903215666767\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 34/100 \t Train Err: 0.031978628889191896 0.0017423779681848828 0.002208279212936759 0.014501040190225467 0.02167539324000245\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 35/100 \t Train Err: 0.030237189552281052 0.0009807684709812747 0.001220987909618998 0.013532102369936183 0.021276738145388663\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 36/100 \t Train Err: 0.03018926049116999 0.001993048860640556 0.002174867033318151 0.013142088806489483 0.020710692788270535\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 37/100 \t Train Err: 0.03291426139185205 0.0016913060171646066 0.0018038520101981703 0.013622223661513999 0.025715603376738727\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 38/100 \t Train Err: 0.03292314306600019 0.001423079178948683 0.0018923715779237682 0.013977676921058446 0.02660236544215877\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 39/100 \t Train Err: 0.03366135340183973 0.003713737090492941 0.0032114218010974582 0.013475002051563933 0.022797897072450723\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 40/100 \t Train Err: 0.0302321165218018 0.0018661972703739593 0.002139017402441823 0.012839974806411192 0.02126855951064499\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 41/100 \t Train Err: 0.03136210091179237 0.0017414160747648566 0.0018688730087887961 0.012817082926630974 0.021657537272403715\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 42/100 \t Train Err: 0.028969725884962827 0.0014723996041539067 0.0017433645134588005 0.01163470497704111 0.020261481789930258\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 43/100 \t Train Err: 0.02993922942550853 0.0015754283244859835 0.0016384204300265992 0.01222276160842739 0.02234961706381\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 44/100 \t Train Err: 0.0286809160024859 0.0013326343182598066 0.0013536325423046947 0.011975903384154662 0.016841779468450113\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 45/100 \t Train Err: 0.03139403503155336 0.0035768008974628174 0.0029325948753466946 0.012497565156081691 0.020677608052210417\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 46/100 \t Train Err: 0.03304112673504278 0.0030878368820594915 0.0026825040731637273 0.013036122400080785 0.02266561113356147\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 47/100 \t Train Err: 0.036241460358724 0.003998833924924838 0.0027683060870913323 0.013322437211172655 0.02949316889498732\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 48/100 \t Train Err: 0.02795609034365043 0.0010915815259977535 0.0010533893137107952 0.010564433294348419 0.0179318796726875\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 49/100 \t Train Err: 0.02986836590571329 0.001193666770177515 0.001290240723392344 0.01145344074757304 0.0236946784571046\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 50/100 \t Train Err: 0.03164456982631236 0.0013313994736563473 0.0017484278478150372 0.012924699374707416 0.02163192303123651\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 51/100 \t Train Err: 0.030807556468062103 0.0020667458511525183 0.0019197424235244398 0.01282453999738209 0.019454967376077548\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 52/100 \t Train Err: 0.029965722118504345 0.0012791909425686754 0.001596282026184781 0.012344098096946254 0.01784065420361003\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 53/100 \t Train Err: 0.0265352891292423 0.0007964646529217134 0.000907563671717071 0.010262767085805535 0.01773800441151252\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 54/100 \t Train Err: 0.02751670015277341 0.0016817037853797956 0.0014505806020679302 0.009788958472199738 0.020279350777855143\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 55/100 \t Train Err: 0.025883044116199017 0.001346661450497777 0.0012914722201458062 0.009638282572268508 0.016253164734735037\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 56/100 \t Train Err: 0.022739437001291662 0.0008026059808798891 0.0008494512694596779 0.008352860197192058 0.010978442945997813\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 57/100 \t Train Err: 0.022440483327955008 0.0009071951262740185 0.000916149912882247 0.00847361990599893 0.011131145221952465\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 58/100 \t Train Err: 0.025345811736769974 0.0013864098896192445 0.0009498761282884516 0.008939172679674812 0.018441449870806537\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 59/100 \t Train Err: 0.023891851538792253 0.0012925871601510153 0.0011148671910632402 0.008856966407620348 0.012021984035527566\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 60/100 \t Train Err: 0.02362089912639931 0.000830721450256533 0.0009114332578974427 0.008526757796062157 0.015250902635671082\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 61/100 \t Train Err: 0.02107378770597279 0.0006254979271034244 0.0005897696282772813 0.007054049608996138 0.01111846130243066\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 62/100 \t Train Err: 0.022748558258172125 0.0010031351662291854 0.0010334590497222962 0.008041846929700114 0.01214356779382797\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 63/100 \t Train Err: 0.022991930542048067 0.0017326328943454428 0.0016703186793165514 0.0084057802305324 0.012902150609988894\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 64/100 \t Train Err: 0.02534142223885283 0.0012205752486806887 0.0015509294298681198 0.008817054331302643 0.013319303647222114\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 65/100 \t Train Err: 0.02489184361184016 0.0026096420592693903 0.0020677366856034496 0.008033131685806438 0.01523421258025337\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 66/100 \t Train Err: 0.023243437928613275 0.0012699099929704971 0.001188018263746926 0.008441859725280665 0.012707948594652407\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 67/100 \t Train Err: 0.02045453805476427 0.0009292269828620192 0.0007864252675062744 0.00639261981996242 0.010473506097696372\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.43it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 68/100 \t Train Err: 0.023632179712876678 0.0013570280530075252 0.0011699169172061374 0.007411329337628558 0.01571820306344307\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.40it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 69/100 \t Train Err: 0.028572456794790924 0.0024852919050317723 0.0016593521968388814 0.008402477891650051 0.019322560167893243\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:21<00:00, 1.46it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 70/100 \t Train Err: 0.02618635556427762 0.0010985648273162951 0.0009723617358758929 0.00780354329617694 0.019848162693961058\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.44it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 71/100 \t Train Err: 0.025947992515284568 0.0009713285044199438 0.0008430656744167209 0.00737694461713545 0.017320051238129963\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"00%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:22<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 72/100 \t Train Err: 0.021004761045332998 0.0008035176952034817 0.0007906993705546483 0.0062158213258953765 0.01110647956329558\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"16%|███████████████████████████████▎ | 5/32 [00:04<00:22, 1.19it/s]"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[8], line 17\u001b[0m\n\u001b[1;32m 14\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[1;32m 15\u001b[0m optimizer\u001b[38;5;241m.\u001b[39mstep()\n\u001b[0;32m---> 17\u001b[0m train_err\u001b[38;5;241m.\u001b[39mappend(\u001b[43mloss\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitem\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 18\u001b[0m len1\u001b[38;5;241m.\u001b[39mappend(criterion(output[batch_labels \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39msqueeze(\u001b[38;5;241m1\u001b[39m), batch_labels[batch_labels \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m])\u001b[38;5;241m.\u001b[39mitem())\n\u001b[1;32m 19\u001b[0m len2\u001b[38;5;241m.\u001b[39mappend(criterion(output[batch_labels \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39msqueeze(\u001b[38;5;241m1\u001b[39m), batch_labels[batch_labels \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2\u001b[39m])\u001b[38;5;241m.\u001b[39mitem())\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"while epoch < NEPOCHS:\n",
" model.train()\n",
" with open(f\"data-new/{epoch}.pickle\", \"rb\") as f:\n",
" pickled_stuff = pickle.load(f)\n",
" data = pickled_stuff[\"data\"].to(device)\n",
" label = pickled_stuff[\"labels\"].to(device).to(torch.float32)\n",
" padding = pickled_stuff[\"padding\"].to(device)\n",
" dataset = TensorDataset(data, label, padding)\n",
" loader = DataLoader(dataset, batch_size=BSZ)\n",
" for batch_src, batch_labels, batch_padding_mask in tqdm(loader):\n",
" optimizer.zero_grad()\n",
" output = model(batch_src, batch_padding_mask)\n",
" loss = criterion(output.squeeze(1), batch_labels)\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" train_err.append(loss.item())\n",
" len1.append(criterion(output[batch_labels == 1].squeeze(1), batch_labels[batch_labels == 1]).item())\n",
" len2.append(criterion(output[batch_labels == 2].squeeze(1), batch_labels[batch_labels == 2]).item())\n",
" len3.append(criterion(output[batch_labels == 3].squeeze(1), batch_labels[batch_labels == 3]).item())\n",
" leninf.append(criterion(output[batch_labels == MAX_VTXS].squeeze(1), batch_labels[batch_labels == MAX_VTXS]).item())\n",
" \n",
" with open('loss', 'a') as f:\n",
" f.write(f\"{train_err[-1]} {len1[-1]} {len2[-1]} {len3[-1]} {leninf[-1]}\\n\")\n",
" epoch_err = lambda l: sum(l[-EPOCH_SIZE // BSZ:]) / EPOCH_SIZE * BSZ\n",
" print(f\"Epoch {epoch}/{NEPOCHS} \\t Train Err: {epoch_err(train_err)} {epoch_err(len1)} {epoch_err(len2)} {epoch_err(len3)} {epoch_err(leninf)}\")\n",
"\n",
" epoch += 1\n",
" if epoch % 10 == 0:\n",
" torch.save(model.state_dict(), f\"checkpoints/model_weights_{epoch}.pth\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"execution_state": "idle",
"metadata": {},
"outputs": [],
"source": [
"def evaluate(data):\n",
" model.eval()\n",
" test_loss = 0\n",
" with torch.no_grad():\n",
" batch_src, batch_labels, batch_padding_mask = map(lambda x: x.to(device), data)\n",
" output = model(batch_src, batch_padding_mask)\n",
" loss = criterion(output.squeeze(1), batch_labels)\n",
" return output.detach(), batch_labels.detach().to(torch.uint8), loss.item()\n",
"\n",
"def mkhist(data, title):\n",
" y, x, loss = evaluate(data)\n",
" print(loss)\n",
" cnts = torch.bincount(x)\n",
" weights = [1/cnts[i.item()].item() for i in x] # normalize by label count\n",
" fig, ax = plt.subplots()\n",
" h = ax.hist2d(x.cpu().numpy().flatten(), y.cpu().numpy().flatten(), weights=weights, bins=[cnts.shape[0] - 1, 50], norm=mpl.colors.LogNorm())\n",
" ax.set_xlabel(\"Label\")\n",
" ax.set_ylabel(\"Model Output\")\n",
" ax.set_title(title)\n",
" fig.colorbar(h[3], ax=ax)\n",
" return fig"
]
},
{
"cell_type": "code",
"execution_count": 10,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.018195968121290207"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"evaluate(mkbatch(BSZ))[2]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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FAhLl3rWcTskRJo505cRAQCCGQkSCozhwz0bSLJXLzOpOndOSkiQLlzwZXQAgGBCgoQC5dtvpVWrpKgo98qPGCE9+qhUqZJ03XW+jg4AECzcfostzXPPPZflfpvNpmLFiql27dq6//77Vbp0aW/EB3ikeHGpVStzQMkvvnDvnIULzWViorRli3TzzT4NEQAQBDyerPbOO+/U5s2blZKSojp16kiSfvvtNxUpUkR169ZVXFycbDabVq9erXr16vkq7jxhoMjC4/hxqUKFvJ1LB24ACCxBMVnt/fffr3bt2unIkSPatGmTNm3apD///FN33323evToofj4eLVq1UrPPvusbyIG3FC+vPT++3k//9o1sz/T4MHejAoAECw8rkG67rrrtGzZsky1Qzt37lT79u0VHx+vzZs3q3379jp58qS3480XapAKn4MHperVPT9n69b0UbqpUQIAawVFDVJiYqKOHz+eaf+JEyeUlJQkSSpVqpSuXLninQiBfKhWTXr7bc/PyTiFiTsDUQIACpY8NbH17dtX8+fP159//qk///xT8+fP1+OPP64HHnhAkrRhwwbdcMMNvogX8Fj//uYUI3k1apQ3owEABAOPm9jOnz+vZ599Vp988omuXbsmSQoNDVVsbKz+9a9/qXjx4tq6daskqXHjxr6JOo9oYivcSpTI+1hHCQl57/QNAMgfK36/PU6Q0pw/f1779++XJNWsWVMlSpTwdmxeR4JUuF27Jv36q9S0ad7OT02VbDazT5LN5u3oAADZCYo+SGlKlCih0qVLq3Tp0kGRHAGhoVKTJmZNUl4MGiTNni2VKWNOegsAKLg8TpBSU1M1duxYRUVFqVq1aqpWrZpKlSqlcePGKTU11TdRAl5Ut27ezps6VerRQzpzRurc2dtRAQACiccjaY8YMUIffvihJk6cqJYtW0qSVq9erTFjxujy5csaP368L+IEvOapp6TY2Pxd4/JlM1GKjvZWVACAQOJxH6TKlStr2rRpuu+++5z2L1iwQAMHDlR8fLy3Y/Qa+iBBf41rFOKlWQg/+kjq08c71wIAZC0o+iCdPn1adbNoo6hbt65Onz7trbgAn7HZpBUrzKa2997L37X69vVWVACAQOJxE1ujRo309ttv66233nLa//bbb6tRo0bejA3wmTvvlHbvNterVJEqVzYnq23TxvNrzZxpnnvP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dfPNN2vIkCHq2bOnxHP3C38+4+zKePpnEOpRacCHBg0apB07dmj16tVWh1KgHT58WM8884yWLVumYsWKWR1OoZKamqpmzZrptddekyTdfPPN2rFjh6ZNm6bY2FirwyuwvvzyS82cOVOff/656tevr61bt2rIkCGqXLkyzx3ZogYpH8qWLasiRYpkervn2LFjqlixomVxBaPBgwdr4cKFWrlypapUqeLYX7FiRV25ckVnz551Kp/xGVesWDHLP4O0YzmViYyMVHh4uM++VyDatGmTjh8/riZNmig0NFShoaFatWqV3nrrLYWGhqpChQo8cx+pVKmS6tWr57Tvxhtv1KFDh6QMzy6nf1MqVqyo48ePOx2/du2aTp8+7dGfT2HywgsvOGqRGjZsqMcee0zPPvusowaV5+57/nzG2ZXx9M+ABCkfwsLC1LRpUy1fvtyxLzU1VcuXL1eLFi0sjS1YGIahwYMHa/78+VqxYoVq1KjhdLxp06YqWrSo0zOOi4vToUOHHM+4RYsW2r59u9N/WMuWLVNkZKTjx6hFixZO10grUxj/nNq2bavt27dr69atjk+zZs3Us2dPxzrP3DdatmyZaRiL3377TdWqVZMk1ahRQxUrVnR6bklJSVq/fr3Tsz979qw2bdrkKLNixQqlpqaqefPmjjI//fSTrl696iizbNky1alTR9HR0T7/noHm4sWLCglx/rkrUqSIUlNTJZ67X/jzGXvt3x6PunQjk9mzZxt2u92YMWOGsWvXLuOJJ54wSpUq5fR2D7L35JNPGlFRUcaPP/5oHD161PG5ePGio8yAAQOMqlWrGitWrDA2btxotGjRwmjRooXjeNor5+3btze2bt1qLFmyxChXrlyWr5y/8MILxu7du4133nmn0L9ynlHGt9gMnrnPbNiwwQgNDTXGjx9v7N2715g5c6YRERFhfPbZZ44yEydONEqVKmUsWLDA+PXXX437778/y1ehb775ZmP9+vXG6tWrjeuvv97pVeizZ88aFSpUMB577DFjx44dxuzZs42IiIhC87q5q9jYWOO6665zvOY/b948o2zZssaLL77oKMNzz79z584ZW7ZsMbZs2WJIMiZPnmxs2bLFOHjwoGH48RmvWbPGCA0NNd58801j9+7dxujRo3nN3ypTpkwxqlataoSFhRm33nqrsW7dOqtDChqSsvxMnz7dUebSpUvGwIEDjejoaCMiIsLo2rWrcfToUafrHDhwwOjUqZMRHh5ulC1b1hg6dKhx9epVpzIrV640GjdubISFhRk1a9Z0ukdh55og8cx959tvvzUaNGhg2O12o27dusb777/vdDw1NdUYOXKkUaFCBcNutxtt27Y14uLinMqcOnXK6NGjh1GiRAkjMjLS6NOnj3Hu3DmnMtu2bTNuv/12w263G9ddd50xceJEv3y/QJSUlGQ888wzRtWqVY1ixYoZNWvWNEaMGOH0qjjPPf9WrlyZ5b/nsbGxhuHnZ/zll18aN9xwgxEWFmbUr1/f+O677zz+PjYj41CiAAAAoA8SAACAKxIkAAAAFyRIAAAALkiQAAAAXJAgAQAAuCBBAgAAcEGCBAAA4IIECUChYrPZ9PXXX1sdBoAAR4IEwG969+4tm82W6dOxY0erQwMAJ6FWBwCgcOnYsaOmT5/utM9ut1sWDwBkhRokAH5lt9tVsWJFp0/aLNw2m01Tp05Vp06dFB4erpo1a2ru3LlO52/fvl133XWXwsPDVaZMGT3xxBM6f/68U5mPPvpI9evXl91uV6VKlTR48GCn4ydPnlTXrl0VERGh66+/Xt98843j2JkzZ9SzZ0+VK1dO4eHhuv766zMldAAKPhIkAAFl5MiR6tatm7Zt26aePXvqkUce0e7duyVJFy5cUIcOHRQdHa1ffvlFc+bM0Q8//OCUAE2dOlWDBg3SE088oe3bt+ubb75R7dq1ne7x6quv6uGHH9avv/6qzp07q2fPnjp9+rTj/rt27dLixYu1e/duTZ06VWXLlvXzUwBgOY+ntwWAPIqNjTWKFCliFC9e3Okzfvx4wzAnzjYGDBjgdE7z5s2NJ5980jAMw3j//feN6Oho4/z5847j3333nRESEmIkJCQYhmEYlStXNkaMGJFtDJKMV155xbF9/vx5Q5KxePFiwzAM49577zX69Onj5W8OINjQBwmAX915552aOnWq077SpUs71lu0aOF0rEWLFtq6daskaffu3WrUqJGKFy/uON6yZUulpqYqLi5ONptNR44cUdu2bXOM4aabbnKsFy9eXJGRkTp+/Lgk6cknn1S3bt20efNmtW/fXg888IBuu+22fH5rAMGGBAmAXxUvXjxTk5e3hIeHu1WuaNGiTts2m02pqamSpE6dOungwYNatGiRli1bprZt22rQoEF68803fRIzgMBEHyQAAWXdunWZtm+88UZJ0o033qht27bpwoULjuNr1qxRSEiI6tSpo5IlS6p69epavnx5vmIoV66cYmNj9dlnn+nf//633n///XxdD0DwoQYJgF8lJycrISHBaV9oaKijI/ScOXPUrFkz3X777Zo5c6Y2bNigDz/8UJLUs2dPjR49WrGxsRozZoxOnDihp556So899pgqVKggSRozZowGDBig8uXLq1OnTjp37pzWrFmjp556yq34Ro0apaZNm6p+/fpKTk7WwoULHQkagMKDBAmAXy1ZskSVKlVy2lenTh3t2bNH+usNs9mzZ2vgwIGqVKmSZs2apXr16kmSIiIitHTpUj3zzDO65ZZbFBERoW7dumny5MmOa8XGxury5cv617/+peeff15ly5bVQw895HZ8YWFhGj58uA4cOKDw8HDdcccdmj17tte+P4DgYDPMtzoAwHI2m03z58/XAw88YHUoAAo5+iABAAC4IEECAABwQR8kAAGDFn8AgYIaJAAAABckSAAAAC5IkAAAAFyQIAEAALggQQIAAHBBggQAAOCCBAkAAMAFCRIAAIALEiQAAAAX/x+PqKvglP/LvgAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with open('loss') as f:\n",
" losses = torch.tensor([list(map(float, l.split())) for l in f.readlines()])\n",
"plt.plot(torch.log(losses[:, 0]), label='Train', color='blue')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Log MSE')\n",
"plt.title('Training Loss')\n",
"with open(\"plots/train-loss.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 116,
"execution_state": "idle",
"metadata": {
"id": "LoGEmM5lH7_A"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.002062194049358368\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAHHCAYAAACLPpP8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBkklEQVR4nO3de1xVZdr/8e8G5KACHkiQFFErzUNYimaHEctiyEPWdHJMUTtY4Snm8dSTp8rImsws0rTHqCbTqSetdMbDmEo5lqjhM2aRFCqToVkJiiMqe/3+SPavLVsE9tp7bTaf9+u1XtNae611X2vLyOV9X/e9bIZhGAIAAPABAVYHAAAAUIHEBAAA+AwSEwAA4DNITAAAgM8gMQEAAD6DxAQAAPgMEhMAAOAzSEwAAIDPIDEBAAA+g8QEfmPEiBGKj4+3Oox6y5vff3x8vEaMGOHYz8rKks1m0/bt273SflJSkpKSkrzSFlDfkJjA42w2W7W2TZs2WR2qSwcOHNBDDz2k+Ph4hYSEqEWLFho8eLC2bNni1n1feeUVZWVlmRZnVfbs2aOZM2dq37591Tp/5syZTn82DRs2VFxcnAYOHKjXX39dZWVllsTlTb4cG+DPgqwOAP7vrbfectp/8803tX79+krHL7/8crfaWbx4sex2u1v3ONeWLVt0yy23SJLuv/9+derUSUVFRcrKytL111+vF198UWPHjq3VvV955RVFRUU5/cvfU/bs2aNZs2YpKSmpRr0aCxYsUOPGjVVWVqbvv/9ea9eu1ahRozRv3jytWrVKrVu3dpxbm++/tnHl5eUpIMCz/66qKrZ169Z5tG2gPiMxgcfde++9TvufffaZ1q9fX+n4uU6cOKGGDRtWu50GDRrUOkZXfvnlF91xxx0KCwvTli1b1L59e8dn6enpSk5O1oQJE9S9e3ddc801prbtK+644w5FRUU59qdPn663335bw4cP15133qnPPvvM8ZnZ3/+5DMPQyZMnFRYWppCQEI+2dSHBwcGWtg/4M4Zy4BOSkpLUpUsX7dixQ7/73e/UsGFDPfbYY5KkDz74QP3791dsbKxCQkLUvn17PfnkkyovL3e6x7k1Dvv27ZPNZtOf//xnLVq0SO3bt1dISIgSExOVk5NzwZheffVVFRUV6bnnnnNKSiQpLCxMb7zxhmw2m5544gnH8YohkHNV1EBUDAvEx8fryy+/1ObNmx3DJRU1CxXnZmdna/To0WrevLkiIiI0fPhw/fLLL073tdlsmjlzZqX2fluDkZWVpTvvvFOS1LdvX7eHzoYOHar7779fn3/+udavX+847qrGZNmyZerevbvCw8MVERGhrl276sUXX6xWXPHx8RowYIDWrl2rHj16KCwsTK+++mql5/utEydOeOU7c1VjcvjwYd13332Kjo5WaGioEhIS9MYbbzid4+7PJFAf0GMCn/HTTz8pJSVF99xzj+69915FR0dLZ39JNG7cWOnp6WrcuLE+/vhjTZ8+XSUlJXruuecueN+lS5fq2LFjGj16tGw2m5599lndfvvt+u6776r8V/5HH32k0NBQ3XXXXS4/b9u2ra677jp9/PHH+s9//qOwsLBqP+u8efM0duxYNW7cWP/93/8tSY7nrTBmzBg1adJEM2fOVF5enhYsWKD9+/dr06ZNLpOf8/nd736ncePGaf78+XrsscccQ2buDJ0NGzZMixYt0rp163TTTTe5PGf9+vUaMmSIbrzxRs2ZM0eS9NVXX2nLli0aP358teLKy8vTkCFDNHr0aD3wwAPq0KFDlXFZ9Z395z//UVJSkvLz8zVmzBi1bdtW7777rkaMGKGjR49q/PjxTufX9mcSqA9ITOAzioqKtHDhQo0ePdrp+NKlS51+6T/00EN66KGH9Morr+ipp566YLf+gQMHtHfvXjVt2lSS1KFDB916661au3atBgwYcN7r9uzZow4dOlR5/4SEBG3evFn5+fnq2rVrtZ918ODBevzxxxUVFXXeIa3g4GBt2LDB8YuqTZs2mjRpkj766CMNGjSo2m21a9dO119/vebPn6+bbrrJlNkkXbp0kSR9++235z1n9erVioiI0Nq1axUYGFiruPLz87VmzRolJydXKy6rvrNFixbpq6++0l/+8hcNHTpUOvtz2qdPHz3++OMaNWqUwsPDHefX9mcSqA8YyoHPCAkJ0ciRIysd/21ScuzYMR05ckTXX3+9Tpw4oa+//vqC97377rsdvwAk6frrr5ckfffdd1Ved+zYMadfJq5UfF5SUnLBOGrqwQcfdPrX88MPP6ygoCD97W9/M72tmmrcuLF09js6nyZNmqi0tNRpuKem2rZtW+2kRBZ+Z3/7298UExOjIUOGOI41aNBA48aN0/Hjx7V582an82v7MwnUByQm8BkXX3yxy6LCL7/8UrfddpsiIyMVERGhiy66yNHLUFxcfMH7xsXFOe1X/EI4t/bgXOHh4VX+4tVvfjFfKIGpjUsvvdRpv3HjxmrZsqVPTF89fvy4dIHnfuSRR3TZZZcpJSVFrVq10qhRo7RmzZoatdO2bdsanW/Vd7Z//35deumllWYKVQz97N+/3+l4bX8mgfqAxAQ+w1WNxtGjR9WnTx/t2rVLTzzxhD766COtX7/eUbNQnemproYRdHaWR1Uuv/xy5eXlVblmx//93/+pQYMGjl+I56tjOLdQ19M83d7u3bslSZdccsl5z2nRooVyc3P14YcfatCgQdq4caNSUlKUmppa7XZqUrfjLm/+GdX2ZxKoD0hM4NM2bdqkn376SVlZWRo/frwGDBigfv36OXWDe8qAAQN08uRJvfvuuy4/37dvnz755BPdcMMNjl+gFXEdPXrU6dxz/8WsKpKYCnv37nXaP378uH744QenmS9Nmzat1NapU6f0ww8/1KitmqpYg+ZCwyzBwcEaOHCgXnnlFX377bcaPXq03nzzTeXn53skLqu+szZt2mjv3r2VEuWKocY2bdrU6DmA+ozEBD6t4l+Wv/2X5KlTp/TKK694vO3Ro0erRYsWmjhxYqWx/5MnT2rkyJEyDEPTp093HK+YVpydne04VlpaWmnaqCQ1atSo0i/I31q0aJFOnz7t2F+wYIHOnDmjlJQUp/Z+21bFdef+679Ro0aSi4SpNpYuXarXXntNvXv31o033nje83766Sen/YCAAF1xxRWS5OiFMjMuWfid3XLLLSoqKtLy5csdx86cOaOXXnpJjRs3Vp8+fdx6LqA+YVYOfNo111yjpk2bKjU1VePGjZPNZtNbb73llS7v5s2b67333lP//v111VVXVVr5NT8/Xy+++KLT4mo333yz4uLidN9992nixIkKDAzUkiVLdNFFF+nAgQNO9+/evbsWLFigp556SpdccolatGihG264wfH5qVOndOONN+quu+5SXl6eXnnlFV133XVOs0vuv/9+PfTQQ/rDH/6gm266Sbt27dLatWudFkWTpG7duikwMFBz5sxRcXGxQkJCdMMNN6hFixZVfgfvvfeeGjdurFOnTjlWft2yZYsSEhLO25P029h+/vln3XDDDWrVqpX279+vl156Sd26dXPUXtQ2rvOx6jt78MEH9eqrr2rEiBHasWOH4uPj9d5772nLli2aN2+eR2qQAL9lAF6WlpZmnPuj16dPH6Nz584uz9+yZYtx9dVXG2FhYUZsbKwxadIkY+3atYYkY+PGjY7zUlNTjTZt2jj2CwoKDEnGc889V+mekowZM2ZUK96CggLjgQceMOLi4owGDRoYUVFRxqBBg4xPPvnE5fk7duwwevXqZQQHBxtxcXHG3Llzjddff92QZBQUFDjOKyoqMvr372+Eh4cbkow+ffoYhmE4zt28ebPx4IMPGk2bNjUaN25sDB061Pjpp5+c2iovLzcmT55sREVFGQ0bNjSSk5ON/Px8o02bNkZqaqrTuYsXLzbatWtnBAYGVvruzjVjxgxDkmMLDQ01WrVqZQwYMMBYsmSJcfLkyUrXnPv9v/fee8bNN99stGjRwvFdjB492vjhhx+qFVebNm2M/v37u4zv3Ofz9nfWp08fx59XhUOHDhkjR440oqKijODgYKNr167G66+/7nSOWT+TgD+zGVRbAT4lKytLI0eOVE5Ojnr06GF1OADgVdSYAAAAn0FiAgAAqm3VqlXq0KGDLr30Ur322mum35/iVwAAUC1nzpxRenq6Nm7cqMjISHXv3l233Xabmjdvblob9JgAPmbEiBEyDIP6EgA+Z9u2bercubMuvvhiNW7cWCkpKVq3bp2pbZCYAABQT2RnZ2vgwIGKjY2VzWbTypUrK52TmZmp+Ph4hYaGqlevXtq2bZvjs4MHD+riiy927F988cX6/vvvTY2RxAQAgHqitLRUCQkJyszMdPn58uXLlZ6erhkzZmjnzp1KSEhQcnKyDh8+7LUY/b7GxG636+DBgwoPDzd9+WsAgH8xDEPHjh1TbGxspZcymunkyZM6deqU2/cxDKPS77aQkBCFhIS4PD8lJcVpJeRzzZ07Vw888IDjTe8LFy7U6tWrtWTJEk2ZMkWxsbFOPSTff/+9evbs6fZzOLF6IRVPKywsdFooio2NjY2N7UJbYWGhx34v/ec//zFiWgSaEmfjxo0rHavuQn2SjBUrVjj2y8rKjMDAQKdjhmEYw4cPNwYNGmQYhmGcPn3auOSSS4x///vfxrFjx4zLLrvMOHLkiKnfj9/3mFQsBV1YWKiIiAirwwEA1IL90JVeaafkuF1trtrn0dcInDp1SkWHy7V/R7wiwmvfK1NyzK423fdV+v12vt6SCzly5IjKy8sVHR3tdDw6OtrxQsqgoCA9//zz6tu3r+x2uyZNmmTqjBzVh6Gcii6uiIgIEhMAqKPsJwK92p43hv4bh9vUOLz27dhlze+3QYMGOb1/ymx+n5gAAOCLyg27yg33rjdTVFSUAgMDdejQIafjhw4dUkxMjKltVYVZOQAAWMAuw+3NTMHBwerevbs2bNjw/2O027Vhwwb17t3b1LaqQo8JAAB1WGJiogIDA5WWlqa0tLQqzz1+/Ljy8/Md+wUFBcrNzVWzZs0UFxen9PR0paamqkePHurZs6fmzZun0tJSxywdbyAxAQDAAnbZ5c5gTMXVOTk51a4x2b59u/r27evYT09PlySlpqYqKytLd999t3788UdNnz5dRUVF6tatm9asWVOpINaTSEwAALBAuWGo3Kj9cExtrk1KSpJxgevGjBmjMWPG1Doud5GYAAB8XkDMN95pp2GJpEivtAXXSEwAALCAuwWsZhe/+gpm5QAAYAG7DJW7sVUkJomJierUqdN5339T19BjAgBAHVaT4te6gMQEAAALMJTjGokJAAAWsGJWTl1AjQkAAPAZ9JgAAGAB+9nNnev9ET0mAABYwJ0ZORWbmJUDAADMUG7IzbcL//q//jYrhx4TAADgM+gxAQDAAtSYuEZiAgCABeyyqVw2t673RwzlAAAAn0GPCQAAFrAbv27uXO+PLO0xyc7O1sCBAxUbGyubzaaVK1ee99yHHnpINptN8+bN82qMAAB4QvnZoRx3NjFd2FylpaVKSEjQqFGjdPvtt5/3vBUrVuizzz5TbGysV+MDAMDX+dt0YUsTk5SUFKWkpFR5zvfff6+xY8dq7dq16t+/v9diAwDAk8rdLH5151pf5tM1Jna7XcOGDdPEiRPVuXPnal1TVlamsrIyx35JSYkHIwQAoHbshk12w41ZOW5c68t8elbOnDlzFBQUpHHjxlX7moyMDEVGRjq21q1bezRGAABgHp9NTHbs2KEXX3xRWVlZstmqnxVOnTpVxcXFjq2wsNCjcQIAUBtmFb/6G59NTD755BMdPnxYcXFxCgoKUlBQkPbv368//elPio+PP+91ISEhioiIcNoAAPA15Qpwe/NHPltjMmzYMPXr18/pWHJysoYNG6aRI0daFhcAAGYw3KwxMfy0xsTSxOT48ePKz8937BcUFCg3N1fNmjVTXFycmjdv7nR+gwYNFBMTow4dOlgQLQAAvicxMVGBgYFKS0tTWlqa1eG4zdLEZPv27erbt69jPz09XZKUmpqqrKwsCyMDAMCzzJouzDomJkpKSpJhVH9N3X379nk0HgAAvKXcCFC5Ufs6kXKWpAcAAPAsny1+BQDAn9llk92N/gG7/LPLhMQEAAALsCS9awzlAAAAn0GPCQAAFnC/+JWhHAAAYJJfa0zceIkfQzkAAMDXJCYmqlOnTsrMzLQ6FFPQYwIAgAXsbr7vpmJWDgusAQAAt1Fj4hqJCQAAFrArgHVMXKDGBAAA+Ax6TAAAsEC5YVO54cYCa25c68tITAAAsEC5m8Wv5QzlAAAAeBY9JgAAWMBuBMjuxqwcO7NyAACAWRjKcY2hHAAA4DPoMQEAwAJ2N2fW2E2NxneQmAAAYAH3F1jzz0EP/3wqAADqCV7iBwAA3Ob+u3J+vZaX+AEAALfZZZNd7tSYsPIrAAAwiVk9Jv7GP58KAADUSfSYAABgAfcXWPPPvgUSEwAALGA3bLK7s46Jn75d2D/TLQAAUCfRYwIAgAXsbg7l+OsCayQmAABYwP23C/tnYuKfTwUAAOokekwAALBAuWwqd2ORNHeu9WUkJgAAWIChHNf886kAAECdRI8JAAAWKHdzOKbc1Gh8B4kJAAAWYCjHNRITAAAswEv8XPPPpwIAAHUSiQkAABYwZJPdjc04W5+SmJioTp06KTMz0+pHMgVDOQAAWMCsoZycnBxFRESYGJm16DEBAAA+gx4TAAAsYDdsshu1ny7szrW+jMQEAAALlLv5dmF3rvVllj5Vdna2Bg4cqNjYWNlsNq1cudLx2enTpzV58mR17dpVjRo1UmxsrIYPH66DBw9aGTIAAPAgSxOT0tJSJSQkuKwkPnHihHbu3Klp06Zp586dev/995WXl6dBgwZZEisAAGaqGMpxZ/NHlg7lpKSkKCUlxeVnkZGRWr9+vdOxl19+WT179tSBAwcUFxfnpSgBADCfXQGyu9E/4M61vqxO1ZgUFxfLZrOpSZMm5z2nrKxMZWVljv2SkhIvRQcAANxVZ9KtkydPavLkyRoyZEiV87UzMjIUGRnp2Fq3bu3VOAEAqI5yw+b25o/qRGJy+vRp3XXXXTIMQwsWLKjy3KlTp6q4uNixFRYWei1OAACqixoT13x+KKciKdm/f78+/vjjC65uFxISopCQEK/FBwBAbRhuvl3Y8NOX+Pl0YlKRlOzdu1cbN25U8+bNrQ4JAAB4kKWJyfHjx5Wfn+/YLygoUG5urpo1a6aWLVvqjjvu0M6dO7Vq1SqVl5erqKhIktSsWTMFBwdbGDkAAO4pl03lqv1wjDvX+jJLE5Pt27erb9++jv309HRJUmpqqmbOnKkPP/xQktStWzen6zZu3KikpCQvRwsAgHnshnvLytsNU8PxGZYmJklJSTKM83+zVX0GAAD8j0/XmAAA4K/sbha/unOtLyMxAQDAAnbZZHejTsSda32Zf6ZbAACgTqLHBAAAC7i7equ/rvxKYgIAgAWoMXHNP58KAADUSfSYAABgAbvce9+Nvxa/kpgAAGABw81ZOYafJiYM5QAAYAF/fbvwbbfdpqZNm+qOO+6o1fUkJgAAwDTjx4/Xm2++WevrSUwAALBAxawcdzZflJSUpPDw8Fpf75tPBQCAn7NiKCc7O1sDBw5UbGysbDabVq5cWemczMxMxcfHKzQ0VL169dK2bdtMeuLqITEBAKCeKC0tVUJCgjIzM11+vnz5cqWnp2vGjBnauXOnEhISlJycrMOHDzvO6datm7p06VJpO3jwoCkxMisHAAALmPWunJKSEqfjISEhCgkJcXlNSkqKUlJSznvPuXPn6oEHHtDIkSMlSQsXLtTq1au1ZMkSTZkyRZKUm5tb65irgx4TAAAsYNZQTuvWrRUZGenYMjIyahXPqVOntGPHDvXr189xLCAgQP369dPWrVtNe+4LoccEAIA6rLCwUBEREY798/WWXMiRI0dUXl6u6Ohop+PR0dH6+uuvq32ffv36adeuXSotLVWrVq307rvvqnfv3tW+nsQEAAALuLsWScW1ERERTomJ1f7xj3+4dT2JCYB6zV50mdfaCoj5xmttwfeZlZiYJSoqSoGBgTp06JDT8UOHDikmJsbUtqpCjQkAAFBwcLC6d++uDRs2OI7Z7XZt2LChRkMx7qLHBAAAC5jVY5KYmKjAwEClpaUpLS2tymuOHz+u/Px8x35BQYFyc3PVrFkzxcXFKT09XampqerRo4d69uypefPmqbS01DFLxxtITAAAsIDh5huCjbP/m5OTU+0ak+3bt6tv376O/fT0dElSamqqsrKydPfdd+vHH3/U9OnTVVRUpG7dumnNmjWVCmI9icQEAAALWFFjkpSUJMMwqjxnzJgxGjNmTK3jchc1JgAAwGfQYwIAgAV8bVaOryAxAVCvMYUXVrGi+LUuIDEBAKAOq0nxa11AYgIAgAUYynGNxAQAAAsYhk2GG8mFO9f6MmblAAAAn0GPCQAAFrDL5tYCa+5c68voMQEAwAIVNSbubDo7K6dTp07KzMy0+pFMQY8JAAB1GLNyAACA2yh+dY3EBAAACzBd2DUSEwAALECPiWsUvwIAAJ9BjwkAABYw3BzKoccEAACYxpBkGG5sZ+/DdGEAAOAzmC4MAF6wPD/RK+3cfUmOV9oBzmWXTTZWfq2ExAQAAAswK8c1S2tMsrOzNXDgQMXGxspms2nlypVOnxuGoenTp6tly5YKCwtTv379tHfvXsviBQAAnmVpYlJaWqqEhITzFuw8++yzmj9/vhYuXKjPP/9cjRo1UnJysk6ePOn1WAEAMJNZ78rxN5YO5aSkpCglJcXlZ4ZhaN68eXr88cd16623SpLefPNNRUdHa+XKlbrnnnu8HC0AAOapmF3jzvX+yGenCxcUFKioqEj9+vVzHIuMjFSvXr20detWS2MDAACe4bOJSVFRkSQpOjra6Xh0dLTjM1fKyspUUlLitAEA4Gsqil/d2cQ6Jr4vIyNDs2bNsjoMAG5iGi/8nVmzcvxtHROf7TGJiYmRJB06dMjp+KFDhxyfuTJ16lQVFxc7tsLCQo/HCgBATVH86prPJiZt27ZVTEyMNmzY4DhWUlKizz//XL179z7vdSEhIYqIiHDaAABA3WDpUM7x48eVn5/v2C8oKFBubq6aNWumuLg4TZgwQU899ZQuvfRStW3bVtOmTVNsbKwGDx5sZdgAALiNWTmuWZqYbN++XX379nXsp6enS5JSU1OVlZWlSZMmqbS0VA8++KCOHj2q6667TmvWrFFoaKiFUQMA4L5fExN3akxMDcdnWJqYJCUlyajim7XZbHriiSf0xBNPeDUuAABgjRrXmAQGBurw4cOVjv/0008KDAw0Ky4AAPyaWdOF/U2Ne0zO18NRVlam4OBgM2ICAMDvGWc3d673R9VOTObPny+dHV557bXX1LhxY8dn5eXlys7OVseOHT0TJQCfcfXaqV5pZ1nnLK+0E9/qB6+0A3hKYmKiAgMDlZaWprS0NKvDcVu1E5MXXnhBOttjsnDhQqdhm+DgYMXHx2vhwoWeiRIAAD/DAmuuVTsxKSgokCT17dtX77//vpo2berJuAAA8G+M5bhU4xqTjRs3eiYSAADqE3cLWCl+/dWoUaOq/HzJkiXuxAMAAOqxGicmv/zyi9P+6dOntXv3bh09elQ33HCDmbEBAOC3WPnVtRonJitWrKh0zG636+GHH1b79u3NigsAAL9mVvGrvzFl5deAgAClp6crKSlJkyZNMuOWAHzUkDY5XmmHabxA/WTakvTffvutzpw5Y9btAADwb4bNvQJWekx+VfGivQqGYeiHH37Q6tWrlZqaamZsAAD4LWpMXKtxYvLFF1847QcEBOiiiy7S888/f8EZOwAAAFVhHRMAAKzAAmsu1brG5PDhw8rLy5MkdejQQS1atDAzLgAA/BqzclwLqOkFJSUlGjZsmGJjY9WnTx/16dNHF198se69914VFxd7JkoAAOBSYmKiOnXqpMzMTKtDMUWNe0weeOABffHFF1q9erV69+4tSdq6davGjx+v0aNHa9myZZ6IE0AV2s1/3mttvTao0GttAX7PhOGYevsSvwqrVq3S2rVrdd111zmOJScna/Hixfr9739vdnwAAPglhnJcq3Fi0rx5c0VGRlY6HhkZyRuHAQCoLopfXapxjcnjjz+u9PR0FRUVOY4VFRVp4sSJmjZtmtnxAQCAeqTGPSYLFixQfn6+4uLiFBcXJ0k6cOCAQkJC9OOPP+rVV191nLtz505zowUAwG/Yzm7uXO9/apyY3HrrrbLZ/PPLAADAaxjKcanGicnMmTM9EwkAAKj3alxj0q5dO/3000+Vjh89elTt2rUzKy4AAPybYcLmh2rcY7Jv3z6Vl5dXOl5WVqZ///vfZsUFwEdtPNbJK+3c4JVWAAvxdmGXqp2YfPjhh47/Xrt2rdOU4fLycm3YsEFt27Y1P0IAAFBvVDsxGTx4sCTJZrMpNTXV6bMGDRooPj5ezz/vvdUnAQCoywzj182d6/1RtRMTu90uSWrbtq1ycnIUFRXlybgAAPBvzMpxqcY1JgUFBZ6JBAAA1Hs1TkyeeOKJKj+fPn26O/EAAFA/UPzqUo0TkxUrVjjtnz59WgUFBQoKClL79u1JTAAAqAab8evmzvX+qMaJyRdffFHpWElJiUaMGKHbbrvNrLgA1ED3Hvlea2v9wY5eaefJrl5pBrAONSYu1XiBNVciIiI0a9YsXuIHAADcYkpiIknFxcUqLi4263YAAPi3ihoTdzZJiYmJ6tSpkzIzM61+IlPUeChn/vz5TvuGYeiHH37QW2+9pZSUFDNjAwDAf5k0lJOTk6OIiAizorJcjROTF154wWk/ICBAF110kVJTUzV16lQzYwMAAPUM65gAAGAFil9dqnFiorNvEs7P/3UWwCWXXKImTZqYHRcAAP6NxMSlGhW/7tu3T/3791dUVJR69eqlXr16KSoqSgMGDNC+ffs8FyUAAKgXqt1jUlhYqKuvvloNGjTQk08+qcsvv1yStGfPHi1YsEC9e/dWTk6OWrVq5cl4Abhwb8xWr7V16zW5XmsL8Gus/OpStROTmTNnqkOHDlq7dq1CQ0MdxwcPHqxHH31Uv//97zVz5ky99tprnooVAAC/wcqvrlU7MVmzZo2WL1/ulJRUCAsL05NPPql77rnH7PgAAEA9Uu0akyNHjig+Pv68n7dr104///yzWXFJksrLyzVt2jS1bdtWYWFhat++vZ588kkZhp+miQCA+sMwYfND1e4xadmypfbs2XPeGpLdu3crJibGzNg0Z84cLViwQG+88YY6d+6s7du3a+TIkYqMjNS4ceNMbQsAAFiv2onJ4MGD9V//9V/asGGDLrroIqfPDh8+rMmTJ2vw4MGmBvfPf/5Tt956q/r37y9Jio+P1zvvvKNt27aZ2g4AAN5mc7NOxD9LX2uQmMyYMUN/+9vf1L59e917773q2LGjDMPQV199paVLlyomJkbTp083NbhrrrlGixYt0jfffKPLLrtMu3bt0qeffqq5c+ee95qysjKVlZU59ktKSkyNCQAAeE61E5OmTZvq888/12OPPaZly5bp6NGjkqQmTZroj3/8o55++mk1a9bM1OCmTJmikpISdezYUYGBgSovL9fs2bM1dOjQ816TkZGhWbNmmRoH4OtOGYFWhwCgppgu7FKNVn5t2rSpFixYoFdeeUU//vijJOmiiy6SzeaZL+evf/2r3n77bS1dulSdO3dWbm6uJkyYoNjYWKWmprq8ZurUqUpPT3fsl5SUqHXr1h6JDwCAWmPlV5dqtSS9zWZTixYtzI/mHBMnTtSUKVMc05C7du2q/fv3KyMj47yJSUhIiEJCQjweGwAAMF+tEhNvOXHihAICnGc0BwYGym63WxYTAACmoMfEJZ9OTAYOHKjZs2crLi5OnTt31hdffKG5c+dq1KhRVocGAIBbWPnVNZ9OTF566SVNmzZNjzzyiA4fPqzY2FiNHj3a9Nk/AADAN/h0YhIeHq558+Zp3rx5VocCAIC5GMpxqVqJyfz586t9Q1ZkBf6/dvPOv+aOma7tfaVX2pGkO9t7rSnAv5GYuFStxOSFF16o1s1sNhuJCQAAqLVqJSYFBQWejwQAgHqE4lfXqv124XOdOnVKeXl5OnPmjLkRAQBQH1Ss/OrO5odqnJicOHFC9913nxo2bKjOnTvrwIEDkqSxY8fqmWee8USMAAD4H8OEzccUFhYqKSlJnTp10hVXXKF33323xveocWIydepU7dq1S5s2bVJoaKjjeL9+/bR8+fIaBwAAAPxDUFCQ5s2bpz179mjdunWaMGGCSktLa3aPmja6cuVKLV++XFdffbXTO3I6d+6sb7/9tqa3AwCgXvLHGpOWLVuqZcuWkqSYmBhFRUXp559/VqNGjap9jxr3mPz4448u35NTWlrqsZf5AQDgdywYysnOztbAgQMVGxsrm82mlStXVjonMzNT8fHxCg0NVa9evbRt27ZaPd6OHTtUXl5e4xfp1rjHpEePHlq9erXGjh0rnZ0iLEmvvfaaevfuXdPbAX6txeU/eqWd7N2XeaUdSVIv7zUFwFylpaVKSEjQqFGjdPvtt1f6fPny5UpPT9fChQvVq1cvzZs3T8nJycrLy3N0SnTr1s3lxJd169YpNjZWkvTzzz9r+PDhWrx4cY1jrHFi8vTTTyslJUV79uzRmTNn9OKLL2rPnj365z//qc2bN9c4AAAA6iU3h3IqekxKSkqcDoeEhCgkJMTlJSkpKUpJSTnvLefOnasHHnhAI0eOlCQtXLhQq1ev1pIlSzRlyhRJUm5ubpVhlZWVafDgwZoyZYquueaamj5VzYdyrrvuOuXm5urMmTPq2rWr1q1bpxYtWmjr1q3q3r17jQMAAKBeMmkop3Xr1oqMjHRsGRkZtQrn1KlT2rFjh/r16+c4FhAQoH79+mnr1q3VeyTD0IgRI3TDDTdo2LBhtYqjVu/Kad++fa26ZwAAgLkKCwsVERHh2D9fb8mFHDlyROXl5YqOjnY6Hh0dra+//rpa99iyZYuWL1+uK664wlG/8tZbb6lr167VjqNaicm53URV+e2XAwAAzsOkd+VERET4zO/e6667Tna73a17VCsxadKkSbVn3JSXl7sVEAAA9YGvTReOiopSYGCgDh065HT80KFDiomJMbexKlQrMdm4caPjv/ft26cpU6ZoxIgRjlk4W7du1RtvvFHrcS0AAGCt4OBgde/eXRs2bNDgwYMlSXa7XRs2bNCYMWO8Fke1EpM+ffo4/vuJJ57Q3LlzNWTIEMexQYMGqWvXrlq0aJFSU1M9Eylgkl7D5nqtrb/Necsr7STmPeqVdgD4nsTERAUGBiotLU1paWlVnnv8+HHl5+c79gsKCpSbm6tmzZopLi5O6enpSk1NVY8ePdSzZ0/NmzdPpaWljlk63lDj4tetW7dq4cKFlY736NFD999/v1lxAQDg30yqMcnJyal2jcn27dvVt29fx356erokKTU1VVlZWbr77rv1448/avr06SoqKlK3bt20Zs2aSgWxnlTjxKR169ZavHixnn32Wafjr732Wo1XdwMAoL6yosYkKSlJhlH1hWPGjPHq0M25apyYvPDCC/rDH/6gv//97+rV69clILdt26a9e/fqf//3fz0RIwAAqCdqvMDaLbfcor1792rgwIH6+eef9fPPP2vgwIH65ptvdMstt3gmSgAA/JEX35NTV9RqgbVWrVrp6aefNj8aAADqC5NqTGpS/FoX1CoxOXr0qP7nf/5HX331lSSpc+fOGjVqlCIjI82ODwAAVKEmxa91QY0Tk+3btys5OVlhYWHq2bOndPalP7Nnz9a6det01VVXeSJOwDSnG1dvsUAzPLhvkFfa+W7cn7zSDgDz+NoCa76ixonJo48+qkGDBmnx4sUKCvr18jNnzuj+++/XhAkTlJ2d7Yk4AQDwLyYN5fibWvWY/DYpkaSgoCBNmjRJPXr0MDs+AABQj9R4Vk5ERIQOHDhQ6XhhYaHCw8PNigsAAL9WMZTjzuaPapyY3H333brvvvu0fPlyFRYWqrCwUMuWLdP999/vtEw9AACogjtThQ3nWTmdOnVSZmam1U9kihoP5fz5z3+WzWbT8OHDdebMGUlSgwYN9PDDD+uZZ57xRIwAAOA86v2snODgYL344ovKyMjQt99+K0lq3769GjZs6In4AADwTxS/ulSrdUwkqWHDhuratau50QAAUE8wXdi1aicmo0aNqtZ5S5YscScewONONvNeWzu+jfNOQ9d4pxkAJqLHxKVqJyZZWVlq06aNrrzyygu+mRAAAKA2qp2YPPzww3rnnXdUUFCgkSNH6t5771WzZl78pycAAP6EHhOXqj1dODMzUz/88IMmTZqkjz76SK1bt9Zdd92ltWvX0oMCAEANmbWOSb2eLhwSEqIhQ4ZoyJAh2r9/v7KysvTII4/ozJkz+vLLL9W4cWPPRQoAACqp99OFKwQEBMhms8kwDJWXl5sbFQAA/o6hHJdqtPJrWVmZ3nnnHd1000267LLL9K9//Usvv/yyDhw4QG8JAAA1wJL0rlW7x+SRRx7RsmXL1Lp1a40aNUrvvPOOoqKiPBsd4AENev/stbZsBU281hYA+INqJyYLFy5UXFyc2rVrp82bN2vz5s0uz3v//ffNjA8AAP/EUI5L1U5Mhg8fLpvN5tloAACoL0hMXKrRAmsAAACeVKPiVyt8//33uvfee9W8eXOFhYWpa9eu2r59u9VhAQDgFpsJm+r7Oibe9ssvv+jaa69V37599fe//10XXXSR9u7dq6ZNm1odGgAA7jFpKId1TLxozpw5at26tV5//XXHsbZt21oaEwAAZuDtwq759FDOhx9+qB49eujOO+9UixYtdOWVV2rx4sVWhwUAADzEp3tMvvvuOy1YsEDp6el67LHHlJOTo3Hjxik4OFipqakurykrK1NZWZljv6SkxIsRwx0pcRO80s62zz/0SjuS1PfNNO80NNY7zQAwEbNyXPLpxMRut6tHjx56+umnJUlXXnmldu/erYULF543McnIyNCsWbO8HCkAALXgp8mFO3x6KKdly5bq1KmT07HLL79cBw4cOO81U6dOVXFxsWMrLCz0QqQAAMAMPt1jcu211yovL8/p2DfffKM2bdqc95qQkBCFhIR4IToAAGqP4lfXfLrH5NFHH9Vnn32mp59+Wvn5+Vq6dKkWLVqktDQvjdsDAOAphgmbH/LpxCQxMVErVqzQO++8oy5duujJJ5/UvHnzNHToUKtDAwAAHuDTQzmSNGDAAA0YMMDqMAAAMJVZQzmJiYkKDAxUWlqaX4wo+Hxigvrj56Q4r7RzxWLvza3N++ujXmsLQB3Dyq8u+fRQDgAAqF/oMQEAwALMynGNxAQAACuw8qtLJCYAAFiBxMQlakwAAIDPoMcEAAALUGPiGokJfMbRS2xeaSf201NeaQcAqsRQjksM5QAAAJ9BjwkAABawGYZsRu27Pdy51peRmAAAYAWGclxiKAcAgDosMTFRnTp1UmZmptWhmIIeEwAALGDWrBx/e1cOiQkAAFZgKMclhnIAAIDPoMcEVfp9swe81tZXezZ7pZ3eex/ySjsAUBUWWHONxAQAACswlOMSiQkAABagx8Q1akwAAIDPoMcEAAArMJTjEokJAAAW8dfhGHcwlAMAAHwGPSao0pqfF3utrcunveCVdr5661GvtAMAVTKMXzd3rvdDJCYAAFiAWTmuMZQDAAB8Bj0mAABYgVk5LpGYAABgAZv9182d6/0RQzkAAMBn0GMCAIAVGMpxiR4TAAAsUDErx51NkhITE9WpUydlZmZa/UimoMcEVeqbPMdrbUU1DPRaWwBgOZPWMcnJyVFERIR5cVmMHhMAAOAz6DEBAMACLLDmGokJAABWoPjVJYZyAACAz6DHBAAACzCU4xqJCQAAVuDtwi6RmKBKRzoHe62tlluPe60tAIBvIjEBAMACDOW4RmICAIAVmJXjErNyAACAz6DHBAAACzCU41qd6jF55plnZLPZNGHCBKtDAQDAPXbD/c0P1Zkek5ycHL366qu64oorrA4FAAD3UWPiUp1ITI4fP66hQ4dq8eLFeuqpp6wOp17ZNWmB19r6/W3DvNYWAMA31YmhnLS0NPXv31/9+vW74LllZWUqKSlx2gAA8DW239SZ1Gqz+gE8xOd7TJYtW6adO3cqJyenWudnZGRo1qxZHo8LAAC3sPKrSz7dY1JYWKjx48fr7bffVmhoaLWumTp1qoqLix1bYWGhx+MEAADm8Okekx07dujw4cO66qqrHMfKy8uVnZ2tl19+WWVlZQoMDHS6JiQkRCEhIRZECwBA9TFd2DWfTkxuvPFG/etf/3I6NnLkSHXs2FGTJ0+ulJQAAFBnMCvHJZ9OTMLDw9WlSxenY40aNVLz5s0rHQcAAHWfTycmAAD4K5thyOZGAas71/qyOpeYbNq0yeoQfMJNAXd6pZ0zN93nlXYkaePWyV5rCwAsZz+7uXO9H/LpWTkAAKDuOHr0qHr06KFu3bqpS5cuWrx4cY3vUed6TAAA8Af+OJQTHh6u7OxsNWzYUKWlperSpYtuv/12NW/evNr3IDEBAMAKfjgrJzAwUA0bNpTOrsRuGIaMGiZQDOUAAGCFipVf3dlqKDs7WwMHDlRsbKxsNptWrlxZ6ZzMzEzFx8crNDRUvXr10rZt22rUxtGjR5WQkKBWrVpp4sSJioqKqtH1JCYAANQTpaWlSkhIUGZmpsvPly9frvT0dM2YMUM7d+5UQkKCkpOTdfjwYcc5FfUj524HDx6UJDVp0kS7du1SQUGBli5dqkOHDtUoRoZyAACwgFkrv577stqqVkBPSUlRSkrKee85d+5cPfDAAxo5cqQkaeHChVq9erWWLFmiKVOmSJJyc3OrFV90dLQSEhL0ySef6I477qjuY5GY1FVBca280s76tUzhBQCPMOklfq1bt3Y6PGPGDM2cObPGtzt16pR27NihqVOnOo4FBASoX79+2rp1a7XucejQITVs2FDh4eEqLi5Wdna2Hn744RrFQWICAEAdVlhYqIiICMd+bd8Xd+TIEZWXlys6OtrpeHR0tL7++utq3WP//v168MEHHUWvY8eOVdeuXWsUB4kJAAAWsNl/3dy5XpIiIiKcEhMr9ezZs9pDPedDYgIAgBVMGsoxS1RUlAIDAysVqx46dEgxMTGmtlUVZuUAAAAFBwere/fu2rBhg+OY3W7Xhg0b1Lt3b6/FQY8JAABWMGmBtcTERAUGBiotLU1paWlVXnL8+HHl5+c79gsKCpSbm6tmzZopLi5O6enpSk1NVY8ePdSzZ0/NmzdPpaWljlk63kBiAgCABcxakj4nJ6faNSbbt29X3759Hfvp6emSpNTUVGVlZenuu+/Wjz/+qOnTp6uoqEjdunXTmjVrKhXEehKJCQAA9URSUtIFl4gfM2aMxowZ47WYzkViUket/my1l1p6wUvtAEA942PFr76CxAQAACsYktyYLuyLL/EzA7NyAACwQEWNiTubzha/durU6bzvv6lr6DEBAKAOq0nxa11AYgIAgBUMN+tE/HQoh8QEAAArUPzqEjUmAADAZ9BjUkcl3z7cK+2s/6dXmgGA+scuyebm9X6IHhMAACzArBzX6DEBAKAOY1YOAABwH8WvLpGYAABgBRITl6gxAQAAPoMeEwAArECPiUskJnXU+n8+bnUIAAB3MF3YJYZyAACwANOFXaPHBACAOozpwgAAwH3UmLhEYgIAgBXshmRzI7mw+2diQo0JAADwGfSYAABgBYZyXCIxAQDAEm4mJvLPxIShHAAA4DNITAAAsELFUI47G+uYAAAAU9gN94Zjzs7K8bd1TOgxAQAAPoMeEwAArGDYf93cud4PkZgAAGAFpgu75NNDORkZGUpMTFR4eLhatGihwYMHKy8vz+qwAABwn91wf/NDPt1jsnnzZqWlpSkxMVFnzpzRY489pptvvll79uxRo0aNrA6vEnvRZV5rKyDmG6+1BQCAt/h0YrJmzRqn/aysLLVo0UI7duzQ7373O8viAgDAbQzluOTTicm5iouLJUnNmjU77zllZWUqKytz7JeUlHglNgAAasRwM7nwz7zEt2tMfstut2vChAm69tpr1aVLl/Oel5GRocjISMfWunVrr8YJAABqr84kJmlpadq9e7eWLVtW5XlTp05VcXGxYyssLPRajAAAVBsrv7pUJ4ZyxowZo1WrVik7O1utWrWq8tyQkBCFhIR4LTYAAGrFbpfkxlok9l+v9beVX306MTEMQ2PHjtWKFSu0adMmtW3b1uqQAACAB/l0YpKWlqalS5fqgw8+UHh4uIqKiiRJkZGRCgsLszo8AABqj1k5Lvl0YrJgwQJJUlJSktPx119/XSNGjLAoqvNjbREAQLWRmLjk04mJ4adfOgAAcM2nExMAAPyW3XBvMRKWpAcAAGYxDLsMN94Q7M61vozEBAAAKxhuvojPT8sd6swCawAAwP/RYwIAgBUMN2tM/LTHhMQEAAAr2O2SzY06ET+tMWEoBwCAOox35QAAAPeZNJTDu3IAAIDbDLtdhhtDOf46XZihHAAA4DPoMQEAwArMynGJxAQAACvYDclGYnKuepOY2A9dKfuJQI+2wduFAQBwT71JTAAA8CmGIcmddUzoMQEAACYx7IYMN4ZyDBITAABgGsPuZo8J04UBAAA8ih4TAAAswFCOayQmAABYgaEcl/w+ManIKEuOe/4PMKBhicfbAAB4TknJr3+Pe6M34oxOu7W+2hmdNjMcn+H3icmxY8ckSW2u2ueF1iK90AYAwNOOHTumyEjP/J0eHBysmJgYfVr0N7fvFRMTo+DgYFPi8hU2w18Hqc6y2+06ePCgwsPDZbPZPN5eSUmJWrdurcLCQr962+Nv8Yx1n78/n3hGv2DF8xmGoWPHjik2NlYBAZ6bH3Ly5EmdOnXK7fsEBwcrNDTUlJh8hd/3mAQEBKhVq1ZebzciIsIv/6L4LZ6x7vP35xPP6Be8/Xye6in5rdDQUL9LKMzCdGEAAOAzSEwAAIDPIDExWUhIiGbMmKGQkBCrQ/EYnrHu8/fnE8/oF/z9+eCa3xe/AgCAuoMeEwAA4DNITAAAgM8gMQEAAD6DxAQAAPgMEhOTZGRkKDExUeHh4WrRooUGDx6svLw8q8PymGeeeUY2m00TJkywOhRTff/997r33nvVvHlzhYWFqWvXrtq+fbvVYZmmvLxc06ZNU9u2bRUWFqb27dvrySefrNNvKc3OztbAgQMVGxsrm82mlStXOn1uGIamT5+uli1bKiwsTP369dPevXsti7emqnq+06dPa/LkyeratasaNWqk2NhYDR8+XAcPHrQ05pq60J/hbz300EOy2WyaN2+eV2OE95CYmGTz5s1KS0vTZ599pvXr1+v06dO6+eabVVpaanVopsvJydGrr76qK664wupQTPXLL7/o2muvVYMGDfT3v/9de/bs0fPPP6+mTZtaHZpp5syZowULFujll1/WV199pTlz5ujZZ5/VSy+9ZHVotVZaWqqEhARlZma6/PzZZ5/V/PnztXDhQn3++edq1KiRkpOTdfLkSa/HWhtVPd+JEye0c+dOTZs2TTt37tT777+vvLw8DRo0yJJYa+tCf4YVVqxYoc8++0yxsbFeiw0WMOARhw8fNiQZmzdvtjoUUx07dsy49NJLjfXr1xt9+vQxxo8fb3VIppk8ebJx3XXXWR2GR/Xv398YNWqU07Hbb7/dGDp0qGUxmUmSsWLFCse+3W43YmJijOeee85x7OjRo0ZISIjxzjvvWBRl7Z37fK5s27bNkGTs37/fa3GZ6XzP+O9//9u4+OKLjd27dxtt2rQxXnjhBUvig+fRY+IhxcXFkqRmzZpZHYqp0tLS1L9/f/Xr18/qUEz34YcfqkePHrrzzjvVokULXXnllVq8eLHVYZnqmmuu0YYNG/TNN99Iknbt2qVPP/1UKSkpVofmEQUFBSoqKnL6eY2MjFSvXr20detWS2PzlOLiYtlsNjVp0sTqUExjt9s1bNgwTZw4UZ07d7Y6HHiY37/Ezwp2u10TJkzQtddeqy5dulgdjmmWLVumnTt3Kicnx+pQPOK7777TggULlJ6erscee0w5OTkaN26cgoODlZqaanV4ppgyZYpKSkrUsWNHBQYGqry8XLNnz9bQoUOtDs0jioqKJEnR0dFOx6Ojox2f+ZOTJ09q8uTJGjJkiF+91G/OnDkKCgrSuHHjrA4FXkBi4gFpaWnavXu3Pv30U6tDMU1hYaHGjx+v9evX++0bMe12u3r06KGnn35aknTllVdq9+7dWrhwod8kJn/961/19ttva+nSpercubNyc3M1YcIExcbG+s0z1lenT5/WXXfdJcMwtGDBAqvDMc2OHTv04osvaufOnbLZbFaHAy9gKMdkY8aM0apVq7Rx40a1atXK6nBMs2PHDh0+fFhXXXWVgoKCFBQUpM2bN2v+/PkKCgpSeXm51SG6rWXLlurUqZPTscsvv1wHDhywLCazTZw4UVOmTNE999yjrl27atiwYXr00UeVkZFhdWgeERMTI0k6dOiQ0/FDhw45PvMHFUnJ/v37tX79er/qLfnkk090+PBhxcXFOf7u2b9/v/70pz8pPj7e6vDgAfSYmMQwDI0dO1YrVqzQpk2b1LZtW6tDMtWNN96of/3rX07HRo4cqY4dO2ry5MkKDAy0LDazXHvttZWmeH/zzTdq06aNZTGZ7cSJEwoIcP73SGBgoOx2u2UxeVLbtm0VExOjDRs2qFu3bpKkkpISff7553r44YetDs8UFUnJ3r17tXHjRjVv3tzqkEw1bNiwSjVtycnJGjZsmEaOHGlZXPAcEhOTpKWlaenSpfrggw8UHh7uGL+OjIxUWFiY1eG5LTw8vFK9TKNGjdS8eXO/qaN59NFHdc011+jpp5/WXXfdpW3btmnRokVatGiR1aGZZuDAgZo9e7bi4uLUuXNnffHFF5o7d65GjRpldWi1dvz4ceXn5zv2CwoKlJubq2bNmikuLk4TJkzQU089pUsvvVRt27bVtGnTFBsbq8GDB1sad3VV9XwtW7bUHXfcoZ07d2rVqlUqLy93/N3TrFkzBQcHWxh59V3oz/DcZKtBgwaKiYlRhw4dLIgWHmf1tCB/Icnl9vrrr1sdmsf423RhwzCMjz76yOjSpYsREhJidOzY0Vi0aJHVIZmqpKTEGD9+vBEXF2eEhoYa7dq1M/77v//bKCsrszq0Wtu4caPL/++lpqYaxtkpw9OmTTOio6ONkJAQ48YbbzTy8vKsDrvaqnq+goKC8/7ds3HjRqtDr7YL/Rmei+nC/s1m1OUlHwEAgF+h+BUAAPgMEhMAAOAzSEwAAIDPIDEBAAA+g8QEAAD4DBITAADgM0hMAACAzyAxAeqZrKwsNWnSxO372Gw2rVy50pSYAKACiQlQB40YMaLOLKkOADVBYgIAAHwGiQngZ+bOnauuXbuqUaNGat26tR555BEdP3680nkrV67UpZdeqtDQUCUnJ6uwsNDp8w8++EBXXXWVQkND1a5dO82aNUtnzpzx4pMAqI9ITAA/ExAQoPnz5+vLL7/UG2+8oY8//liTJk1yOufEiROaPXu23nzzTW3ZskVHjx7VPffc4/j8k08+0fDhwzV+/Hjt2bNHr776qrKysjR79mwLnghAfcJL/IA6aMSIETp69Gi1ik/fe+89PfTQQzpy5Ih0tvh15MiR+uyzz9SrVy9J0tdff63LL79cn3/+uXr27Kl+/frpxhtv1NSpUx33+ctf/qJJkybp4MGD0tni1xUrVlDrAsBUQVYHAMBc//jHP5SRkaGvv/5aJSUlOnPmjE6ePKkTJ06oYcOGkqSgoCAlJiY6runYsaOaNGmir776Sj179tSuXbu0ZcsWpx6S8vLySvcBALORmAB+ZN++fRowYIAefvhhzZ49W82aNdOnn36q++67T6dOnap2QnH8+HHNmjVLt99+e6XPQkNDPRA5APyKxATwIzt27JDdbtfzzz+vgIBfS8j++te/VjrvzJkz2r59u3r27ClJysvL09GjR3X55ZdLkq666irl5eXpkksu8fITAKjvSEyAOqq4uFi5ublOx6KionT69Gm99NJLGjhwoLZs2aKFCxdWurZBgwYaO3as5s+fr6CgII0ZM0ZXX321I1GZPn26BgwYoLi4ON1xxx0KCAjQrl27tHv3bj311FNee0YA9Q+zcoA6atOmTbryyiudtrfeektz587VnDlz1KVLF7399tvKyMiodG3Dhg01efJk/fGPf9S1116rxo0ba/ny5Y7Pk5OTtWrVKq1bt06JiYm6+uqr9cILL6hNmzZefkoA9Q2zcgAAgM+gxwQAAPgMEhMAAOAzSEwAAIDPIDEBAAA+g8QEAAD4DBITAADgM0hMAACAzyAxAQAAPoPEBAAA+AwSEwAA4DNITAAAgM8gMQEAAD7j/wHg53mTLzh66AAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = mkhist(mkbatch(BSZ), \"Train Output Distribution\")\n",
"with open(\"plots/train-hist.html\", \"w\") as f:\n",
" mpld3.save_html(fig, f)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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tnHDDTcgMTERc+fOxc6dO/Hpp58iMjIS8+bNA1go94477kD//v1x1113AQCSkpLO+XPjfPDBB+jSpQuuvvpqmEwmLFu2DPfddx+cTidmzpypWTclJQU33ngj7rnnHkydOhWff/45rr/+eqxYsQIjR44EmMs6bNgwpKen4+6770abNm2wadMmPPHEEzhz5oycoO2Oe+65BwsXLsT999+P5ORk5OXlYcOGDTh48CB69+593u9V0ISRBIJmyMyZMyX913fYsGESAOnDDz90Wb+8vNxl2d133y35+vpKlZWV8rKpU6dK8fHx8v3jx49LAKSwsDApPz9fXr5kyRIJgLRs2TJ52bPPPuuyTwAks9kspaamyst2794tAZDeeecdedn48eMlX19fKT09XV6WkpIimUwml226Y+rUqZKfn5/Hx+12uxQZGSl17dpVqqiokJf/8ssvEgDpmWeekSRJkgoKCiQA0iuvvOJxWz///LMEQNq2bVut+6WH/430l6lTp0qSJEn//POPBEC64447NM979NFHJQDSmjVr5GXx8fESAGnFihV1eu3aPqNdu3ZJAKRZs2Zp9nfYsGGa9QBIM2fO1Czj3xP953b77bdL0dHRUm5urmb5TTfdJAUFBcnfy7Vr10oApLZt22q+q06nU2rfvr00evRoyel0ysvLy8ulxMREaeTIkfIy/v2bMWOG5rWuvfZaKSwsTLPMz89P/sxrw9N70+Puf2z06NFS27ZtNcv4323RokXysqKiIik6Olrq1auXvOyFF16Q/Pz8pCNHjmieP3v2bMloNEppaWnyMgDSs88+K98PCgpy+RsJLg5E+EnQorBYLJg+fbrLcnWeRUlJCXJzczFkyBCUl5fXqermxhtvREhIiHx/yJAhAIBjx47V+twRI0ZozoS7d++OwMBA+bkOhwN//PEHJkyYoEmWbdeuHa688spat18Xtm/fjuzsbNx3332wWq3y8rFjx6JTp0749ddfAfY5mc1mrFu3DgUFBW63xR2dX375BVVVVWe9LwkJCVi1apXm8vjjjwMAfvvtNwDAww8/rHnOI488AgDyfnISExMxevTos94Hd3B3paSkpF62J0kSFi1ahPHjx0OSJOTm5sqX0aNHo6ioyCUcMnXqVM139Z9//kFKSgpuvvlm5OXlyc8vKyvDFVdcgfXr17uEYu655x7N/SFDhiAv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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(torch.log(losses[:300, 0]), label='Train', color='blue')\n",
"plt.plot(torch.log(losses[:300, 1]), label='Len 1', color='red')\n",
"plt.plot(torch.log(losses[:300, 2]), label='Len 2', color='green')\n",
"plt.plot(torch.log(losses[:300, 3]), label='Len 3', color='orange')\n",
"plt.plot(torch.log(losses[:300, 4]), label='Len 15', color='magenta')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Log MSE')\n",
"plt.title('Training Loss For Different Labels')\n",
"plt.legend()\n",
"with open(\"plots/train-lens.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 180,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,\n",
" 11, 12, 12, 13, 13, 14, 14, 15, 1, 15, 0, 0, 2]], device='cuda:0')\n"
]
},
{
"data": {
"text/plain": [
"tensor([[7.1840]], device='cuda:0', grad_fn=<CompiledFunctionBackward>)"
]
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Testing line graph\n",
"inp = torch.cat((torch.repeat_interleave(torch.arange(2, MAX_VTXS + 1), 2)[1:-1], torch.tensor([1, 15, 0, 0, 2]))).unsqueeze(0).to(device)\n",
"print(inp)\n",
"model(inp, inp == PAD_TOKEN)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LC6Xv3YfC0Rm"
},
"source": [
"# Step 5: Fine Tune"
]
},
{
"cell_type": "code",
"execution_count": 12,
"execution_state": "idle",
"metadata": {},
"outputs": [],
"source": [
"N_TUNE_EPOCHS = 50\n",
"TUNE_LR = 1e-5\n",
"TUNE_WD = 0\n",
"\n",
"tune_criterion = nn.MSELoss()\n",
"tune_optimizer = torch.optim.Adam(model.parameters(), lr=TUNE_LR, weight_decay=TUNE_WD)\n",
"\n",
"tune_train_err = []\n",
"epoch = 0\n",
"\n",
"# clear loss file\n",
"open('tune_loss', 'w').close()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/50 \t Train Err: 0.5752755403518677\n",
"Epoch 1/50 \t Train Err: 1.0058379173278809\n",
"Epoch 2/50 \t Train Err: 1.1355644464492798\n",
"Epoch 3/50 \t Train Err: 0.4999964237213135\n",
"Epoch 4/50 \t Train Err: 0.5071491599082947\n",
"Epoch 5/50 \t Train Err: 0.4544726014137268\n",
"Epoch 6/50 \t Train Err: 0.30281758308410645\n",
"Epoch 7/50 \t Train Err: 0.4206203818321228\n",
"Epoch 8/50 \t Train Err: 0.7253834009170532\n",
"Epoch 9/50 \t Train Err: 0.5732952356338501\n",
"Epoch 10/50 \t Train Err: 0.3130272626876831\n",
"Epoch 11/50 \t Train Err: 0.5048601627349854\n",
"Epoch 12/50 \t Train Err: 0.22613315284252167\n",
"Epoch 13/50 \t Train Err: 0.4204784035682678\n",
"Epoch 14/50 \t Train Err: 0.16267633438110352\n",
"Epoch 15/50 \t Train Err: 0.2796379625797272\n",
"Epoch 16/50 \t Train Err: 0.32184848189353943\n",
"Epoch 17/50 \t Train Err: 0.14892461895942688\n",
"Epoch 18/50 \t Train Err: 0.18450167775154114\n",
"Epoch 19/50 \t Train Err: 0.1992523968219757\n",
"Epoch 20/50 \t Train Err: 0.17124706506729126\n",
"Epoch 21/50 \t Train Err: 0.14664874970912933\n",
"Epoch 22/50 \t Train Err: 0.13724330067634583\n",
"Epoch 23/50 \t Train Err: 0.15177911520004272\n",
"Epoch 24/50 \t Train Err: 0.1299765259027481\n",
"Epoch 25/50 \t Train Err: 0.09801223129034042\n",
"Epoch 26/50 \t Train Err: 0.08407146483659744\n",
"Epoch 27/50 \t Train Err: 0.07911905646324158\n",
"Epoch 28/50 \t Train Err: 0.08549186587333679\n",
"Epoch 29/50 \t Train Err: 0.0721864402294159\n",
"Epoch 30/50 \t Train Err: 0.0690237507224083\n",
"Epoch 31/50 \t Train Err: 0.06988002359867096\n",
"Epoch 32/50 \t Train Err: 0.060210999101400375\n",
"Epoch 33/50 \t Train Err: 0.05437739938497543\n",
"Epoch 34/50 \t Train Err: 0.049465030431747437\n",
"Epoch 35/50 \t Train Err: 0.04359002411365509\n",
"Epoch 36/50 \t Train Err: 0.04103712737560272\n",
"Epoch 37/50 \t Train Err: 0.03770877420902252\n",
"Epoch 38/50 \t Train Err: 0.03940759599208832\n",
"Epoch 39/50 \t Train Err: 0.03945576399564743\n",
"Epoch 40/50 \t Train Err: 0.03370905667543411\n",
"Epoch 41/50 \t Train Err: 0.030640199780464172\n",
"Epoch 42/50 \t Train Err: 0.03185701370239258\n",
"Epoch 43/50 \t Train Err: 0.028567088767886162\n",
"Epoch 44/50 \t Train Err: 0.026735369116067886\n",
"Epoch 45/50 \t Train Err: 0.02505861595273018\n",
"Epoch 46/50 \t Train Err: 0.02451474778354168\n",
"Epoch 47/50 \t Train Err: 0.025109104812145233\n",
"Epoch 48/50 \t Train Err: 0.021790703758597374\n",
"Epoch 49/50 \t Train Err: 0.021884214133024216\n"
]
}
],
"source": [
"while epoch < N_TUNE_EPOCHS:\n",
" model.train()\n",
" train_loss = 0\n",
" batch_src, batch_labels, batch_padding_mask = map(lambda x: x.to(device), mkbatch(BSZ, large=False, target=\"onpath\"))\n",
" optimizer.zero_grad()\n",
" output = model(batch_src, batch_padding_mask)\n",
" loss = criterion(output.squeeze(1), batch_labels)\n",
" train_loss = loss.item()\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" tune_train_err.append(train_loss)\n",
" with open('tune_loss', 'a') as f:\n",
" f.write(f\"{train_loss}\\n\")\n",
" print(f\"Epoch {epoch}/{N_TUNE_EPOCHS} \\t Train Err: {train_loss}\")\n",
"\n",
" if epoch % 10 == 9:\n",
" torch.save(model.state_dict(), f\"checkpoints/tune_model_weights_{epoch + 1}.pth\")\n",
" epoch += 1"
]
},
{
"cell_type": "code",
"execution_count": 14,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.02088712900876999"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"evaluate(mkbatch(BSZ, large=False, target=\"onpath\"))[2]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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IyQkRH2dm5tbsYEnKCgImZmZOH36tPrc9evX1TOvdFWpUiXExMTg119/xT///FPk9Zs3b+r1voV1794dADBv3jyN83PmzAEA9OjRAwBw584ddUuVrHnz5gCgnmZ/69Ytjdft7OzULVZPTsUnIoEtQkRkUh07dsRrr72GWbNmIS4uDl26dIGDgwPOnz+PdevW4b///S9eeumlUt8jJCQEu3btwpw5c+Dn54c6deogNDQU/fr1wwcffIAXX3wRb731Fu7fv49Fixahfv36eg9q/uyzz7B3716EhoZi5MiRePrpp3H79m2cOHECu3btwu3bt8t8j8TERHz66adFzrdo0QI9evTA4MGDsWTJEmRkZKBjx444evQoVqxYgejoaHTq1AkAsGLFCnzzzTd48cUXERQUhLt37+K7776Dh4eHOkyNGDECt2/fRufOnVGzZk1cuXIF8+fPR/PmzTVam4ioEHNPWyOiikeePl/SVO2Sps+7ubkVuba4qeuSJElLliyRQkJCJBcXF6ly5cpSkyZNpPfff19KSUkps774+Hjp2WeflVxcXCQAGlPp//zzT6lx48aSo6Oj1KBBA2nVqlUlTp8fO3ZskfcOCAgoMjU/LS1NGjt2rOTv7y85ODhIPj4+UkREhLRkyZIyaw0ICChxKYLhw4dLkiRJubm50rRp06Q6depIDg4Okr+/vzRp0iTp4cOH6vc5ceKE1L9/f6lWrVqSk5OTVKNGDen555+Xjh8/rr5m/fr1UpcuXaQaNWpIjo6OUq1ataTXXntNun79epl1EtkqhfRkWysRERGRjeAYISIiIrJZDEJERERksxiEiIiIyGYxCBEREZHNYhAiIiIim8UgRERERDaLCyqWIT8/HykpKahcuXKZewERERFRxSBJEu7evQs/Pz/Y2ZXc7sMgVIaUlBT4+/ubuwwiIiLSw9WrV1GzZs0SX2cQKkPlypWBx1+kh4eHucshIiIiLWRlZcHf31/9d7wkDEJlkLvDPDw8GISIiIgsTFnDWjhYmoiIiGwWgxARERHZLAYhIiIislkMQkRERGSzGISIiIjIZjEIERERkc1iECIiIiKbxSBERERENotBiIiIiGwWgxARERHZLAYhIiIislkMQkRERGSzGISswIMHgCSZuwoiIiLLwyBk4Y4eBZ56CnjhBXNXQkREZHkYhCzY//4H9OgB3LkD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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(torch.log(torch.tensor(tune_train_err)), label=\"Train\", color=\"blue\")\n",
"plt.xlabel(\"Epochs\")\n",
"plt.ylabel(\"Log MSE\")\n",
"plt.title(\"Fine-tune Loss\")\n",
"with open(\"plots/tune-loss.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.021510595455765724\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAHHCAYAAACRAnNyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLrUlEQVR4nO3deVxU9f4/8NewDaiAIAIu4L4hmyIiWqFFIhpJlpm3Atd7syE1So2+XderYz9T1ORCakZZhlku92buiVRiAkrX5WpqKJQsmgKCCTJzfn8kcx0ZcIYZOIeZ1/Px+DwenjPnc877HEXe89mOTBAEAUREREQSZCV2AERERET1YaJCREREksVEhYiIiCSLiQoRERFJFhMVIiIikiwmKkRERCRZTFSIiIhIspioEBERkWQxUSEiIiLJYqJCJnX58mXIZDKkpqaKHQqZkfT0dMhkMqSnpzf5tRYuXAiZTKa1TyaTIS4ursmvDQCpqamQyWS4fPlys1yPSOqYqJBBav8T1VXeeustscPDsmXLsHPnTrHD0Nvdu3exdu1aBAcHw9HREW3atEFwcDDWrl2Lu3fvNvq8R48excKFC1FaWmrSeOtjyHOvTWZri62tLdzc3DB06FC8/fbbyM/PFyWu5ibl2IikRMZ3/ZAhUlNTMXnyZCxevBjdunXT+szX1xcBAQGoqqqCra0trK2tmz2+Nm3a4LnnnmsRLTqVlZUYM2YMjhw5gqeeegqjRo2ClZUV9u7di3/9618ICwvD7t270bp1a4PP/d5772HOnDnIy8tD165dmyT++xny3C9fvoxu3bph4sSJGD16NNRqNW7evImsrCxs374dMpkMH374IV544QVNHbVajerqatjZ2cHKSv/vV43591BTU4OamhrY29tr9slkMigUCqxbt07v8zQ2NpVKhbt370Iul9dp2SGyRDZiB0AtU2RkJAYNGqTzs/v/g6f6xcfH48iRI3j//fe1uhVmzJiBpKQkxMXF4c0330RycrKocTaVgQMH4qWXXtLad+XKFYwcORKxsbHo168fAgICAABWVlZN/u+qsrISrVu3ho2NDWxsxPuv0draWpQkn0iyBCIDfPTRRwIAISsrS+fneXl5AgDho48+0uyLjY0VWrduLfz666/C2LFjhdatWwtubm7CG2+8IdTU1GjVV6lUQmJiouDj4yPI5XLB3d1d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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mkhist(mkbatch(BSZ, large=False, target=\"onpath\"), \"Fine-tune Output Distribution\")\n",
"with open(\"plots/tune-hist.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JtTLXn4zC1z_"
},
"source": [
"# Step 6: Test generalization"
]
},
{
"cell_type": "code",
"execution_count": 17,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.26651668548583984\n"
]
},
{
"data": {
"image/png": "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RDKgEAQoTBgQa8q5ctZgCxWNvS00tnZSxzDKudLGUkcQpaLEMtanuZPS3rK+wYNnLZQ6giinpydLHYFI/jS3N1POt0Ls+iEiIrIiERERCA0NxdKlS6WOYhYNtkWFiIhITszV9cMF34iIiMj8OOvHIBYqREREcsCVaQ2SdIzKrl27MGjQIPj6+kKhUCAjI6PG4zMzM6FQKPS2goKCestMRERE9UfSQqWsrAydOnUSPeDn5MmTuHDhgnbz8vKqs4xERET1oWplWlM2ayRp10///v3Rv39/0ed5eXmhUaNGJr23xt4GGlvLmPR0pdRF6giiKNQKI46SF+U/lpVZVSh1AnECPn5X6giinBszReoI1BCx68cgy/hNfZewsDA0a9YMDz/8MH799dcaj62oqEBJSYnORkRERJbBogqVZs2aYfny5fj666/x9ddfw8/PD71798aBAweqPSc1NRXu7u7azc/Pr14zExERGUOhMX2zRhY16yc4OBjBwcHa1z179sTp06excOFCfPbZZwbPSUlJQXLy/1bFLCkpYbFCRETyw64fgyyqRcWQbt26IScnp9qPq1QquLm56WxERETWiivTykx2djaaNWsmdQwiIiLTmGnBN65Ma0alpaU6rSG5ubnIzs6Gh4cH/P39kZKSgr///huffvopAGDRokVo1aoV2rVrh/LycqxatQo//vgjvv/+ewnvgoiIyHR8erJhkhYq+/btQ58+fbSvq8aSxMfHIy0tDRcuXEBeXp724zdv3sTLL7+Mv//+G05OTujYsSN++OEHnWsQERGR9ZC0UOnduzeEGirAtLQ0nddTpkzBlCnmWd/gcpgjlCoHs1yrrt0olTqBOMoSpdQRRHO6KHUCcQ4teknqCFYtaP0cqSOIcnr4a1JHIHPgYFqDLH6MChERkVUQAJgyxdg66xQWKkRERHLAMSqGWfz0ZCIiIrJebFEhIiKSA8HEcSbW2aDCQoWIiEgWOJjWIHb9EBERkWw12BaVikaA0jJmJ0N907Km+6puKKSOIFpFY6kTkJxwui9JQgPAlB+ffCghERER1RXO+jGMXT9EREQkW2xRISIikgMOpjWIhQoREZEcsFAxiF0/REREViQiIgKhoaFYunSp1FHMgi0qREREcmCmFpWsrCy4ubmZL5fEGmyhogi5DoXTLaljGOeCs9QJRFFdkzqBeBo7qROI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by/4+PgISUlJQlFRkdSxGhyFYInLBRIREVGDwDEqREREJFssVIiIiEi2WKgQERGRbLFQISIiItlioUJERESyxUKFiIiIZIuFChEREckWCxWiBi4tLQ2NGjUy+ToKhQIZGRlmyUREVIWFCpEVSEhIQGxsrNQxiIjMjoUKERERyRYLFSIrt2DBAnTo0AHOzs7w8/PDCy+8gNLSUr3jMjIy0KZNGzg4OCAmJgb5+fk6H//mm2/QpUsXODg4IDAwEDNnzkRlZWU93gkRNUQsVIisnI2NDd5//30cO3YMn3zyCX788UdMmTJF55gbN25gzpw5+PTTT/Hrr7+iqKgII0aM0H78559/RlxcHCZOnIjjx49jxYoVSEtLw5w5cyS4IyJqSPhQQiIrkJCQgKKiIqMGs3711Vd4/vnnceXKFeD2YNrExET89ttv6N69OwDgxIkTuO+++/D777+jW7duiI6ORt++fZGSkqK9zueff44pU6bg/PnzwO3BtJs2beJYGSIyK1upAxBR3frhhx+QmpqKEydOoKSkBJWVlSgvL8eNGzfg5OQEALC1tUVERIT2nJCQEDRq1Ah//PEHunXrhkOHDuHXX3/VaUFRq9V61yEiMjcWKkRW7OzZsxg4cCDGjRuHOXPmwMPDA7/88gvGjBmDmzdvGl1glJaWYubMmRg6dKjexxwcHOogORHRv1ioEFmx/fv3Q6PRYP78+bCx+XdI2pdffql3XGVlJfbt24du3boBAE6ePImioiLcd999AIAuXbrg5MmTaN26dT3fARE1dCxUiKxEcXExsrOzdfY1bdoUt27dwgcffIBBgwbh119/xfLly/XOtbOzw4QJE/D+++/D1tYW48ePR48ePbSFy/Tp0zFw4ED4+/vjiSeegI2NDQ4dOoSjR4/irbfeqrd7JKKGh7N+iKxEZmYmOnfurLN99tlnWLBgAd555x20b98eX3zxBVJTU/XOdXJywquvvor//Oc/6NWrF1xcXLB+/Xrtx2NiYrB582Z8//33iIiIQI8ePbBw4UIEBATU810SUUPDWT9EREQkW2xRISIiItlioUJERESyxUKFiIiIZIuFChEREckWCxUiIiKSLRYqREREJFssVIiIiEi2WKgQERGRbLFQISIiItlioUJERESyxUKFiIiIZIuFChEREcnW/wNMpaY1nYZidwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mkhist(mkbatch(BSZ, large=True, target=\"onpath\", largetarget=False), \"On-path Small Target In Large Graphs\")\n",
"with open(\"plots/test-onpath-smalltarget.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.27889782190322876\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mkhist(mkbatch(BSZ, large=True, target=\"onpath\", largetarget=True), \"On-path Target In Large Graphs\")\n",
"with open(\"plots/test-onpath-largetarget.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"62.716026306152344\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mkhist(mkbatch(BSZ, large=False, target=\"any\", largetarget=False), \"Any Target In Small Graphs\")\n",
"with open(\"plots/test-small-any.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"47.901283264160156\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mkhist(mkbatch(BSZ, large=True, target=\"any\", largetarget=False), \"Any Small Target In Large Graphs\")\n",
"with open(\"plots/test-large-any-smalltarget.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"execution_state": "idle",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"71.74824523925781\n"
]
},
{
"data": {
"image/png": "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BL755hu1U1FMdnY2pk2bhn379rnsiphGoxG9evXC4sWLAQA9evTAiRMnsH79epcpTN5//30kJSVhy5Yt6NKlCzIyMjB9+nSEhoa6zD3WVxUVFXj44YchhMC6devUTkcxx44dw+uvv4709HRoNBq10yEJ+ChHYVOmTMHu3buxf/9+tGjRQu10FHPs2DHk5eXh7rvvhru7O9zd3fHVV19h9erVcHd3h8FgUDtFu4WEhKBz585m+zp16oRffvlFtZyU9sILL2DWrFl45JFH0K1bN4wdOxbPPvsslixZonZqDhEcHAwAyM3NNdufm5tres8VVBUl58+fx759+1yqteTrr79GXl4ewsPDTT97zp8/j+eeew6tWrVSOz1yALaYKEQIgalTpyI5ORkHDhxA69at1U5JUffffz9++OEHs30TJkxAx44dMXPmTGi1WtVyU0q/fv2qDfH+6aef0LJlS9VyUlppaSnc3Mz/HtFqtTAajarl5EitW7dGcHAwUlJSEBERAQAoKirCd999h6eeekrt9BRRVZScOXMG+/fvR+PGjdVOSVFjx46t1qctNjYWY8eOxYQJE1TLixyHhYlCEhISsGXLFnz88cfw8/MzPb8OCAiAt7e32unZzc/Pr1p/GV9fXzRu3Nhl+tE8++yz6Nu3LxYvXoyHH34YR44cwVtvvYW33npL7dQUM3ToUCxatAjh4eHo0qULvv/+e6xYsQITJ05UO7VaKy4uRmZmpul1VlYWMjIyEBgYiPDwcEyfPh1///vf0b59e7Ru3Rpz5sxBaGgohg8frmre1rrd/YWEhGDUqFFIT0/H7t27YTAYTD97AgMD4enpqWLm1rvT1/DWYsvDwwPBwcHo0KGDCtmSw6k9LMhVALC4vfPOO2qn5jCuNlxYCCE++eQT0bVrV6HT6UTHjh3FW2+9pXZKiioqKhLTpk0T4eHhwsvLS7Rp00b83//9n9Dr9WqnVmv79++3+G8vPj5eiBtDhufMmSOCgoKETqcT999/vzh9+rTaaVvtdveXlZVV48+e/fv3q5261e70NbwVhwu7No2oy1M+EhERkUth51ciIiJyGixMiIiIyGmwMCEiIiKnwcKEiIiInAYLEyIiInIaLEyIiIjIabAwISIiIqfBwoSontm8eTMaNmxo93U0Gg127typSE5ERFVYmBDVQePHj68zU6oTEdmChQkRERE5DRYmRC5mxYoV6NatG3x9fREWFoann34axcXF1Y7buXMn2rdvDy8vL8TGxiI7O9vs/Y8//hh33303vLy80KZNG7z88suorKyUeCdEVB+xMCFyMW5ubli9ejX++9//4t1338WXX36JGTNmmB1TWlqKRYsW4b333sPBgwdRUFCARx55xPT+119/jXHjxmHatGk4efIkNmzYgM2bN2PRokUq3BER1SdcxI+oDho/fjwKCgqs6nz64Ycf4m9/+xvy8/OBG51fJ0yYgG+//Ra9e/cGAJw6dQqdOnXCd999h6ioKMTExOD+++/H7NmzTdf517/+hRkzZuDChQvAjc6vycnJ7OtCRIpyVzsBIlLWv//9byxZsgSnTp1CUVERKisrUVZWhtLSUvj4+AAA3N3dERkZaTqnY8eOaNiwIX788UdERUXh+PHjOHjwoFkLicFgqHYdIiKlsTAhciHnzp3DkCFD8NRTT2HRokUIDAzEN998gyeeeALl5eVWFxTFxcV4+eWXMXLkyGrveXl5OSBzIqLrWJgQuZBjx47BaDRi+fLlcHO73oXs/fffr3ZcZWUljh49iqioKADA6dOnUVBQgE6dOgEA7r77bpw+fRrt2rWTfAdEVN+xMCGqowoLC5GRkWG2r0mTJqioqMCaNWswdOhQHDx4EOvXr692roeHB6ZOnYrVq1fD3d0dU6ZMwT333GMqVObOnYshQ4YgPDwco0aNgpubG44fP44TJ07g73//u7R7JKL6h6NyiOqoAwcOoEePHmbbP//5T6xYsQJLly5F165dkZSUhCVLllQ718fHBzNnzsSjjz6Kfv36oUGDBti+fbvp/djYWOzevRtffPEFIiMjcc8992DlypVo2bKl5LskovqGo3KIiIjIabDFhIiIiJwGCxMiIiJyGixMiIiIyGmwMCEiIiKnwcKEiIiInAYLEyIiInIaLEyIiIjIabAwISIiIqfBwoSIiIicBgsTIiIichosTIiIiMhpsDAhIiIip/H/WDCFPhroMlsAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mkhist(mkbatch(BSZ, large=True, target=\"any\", largetarget=True), \"Any Target In Large Graphs\")\n",
"with open(\"plots/test-large-any-largetarget.html\", \"w\") as f:\n",
" mpld3.save_html(plt.gcf(), f)"
]
}
],
"metadata": {
"colab": {
"gpuType": "T4",
"provenance": []
},
"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.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
|