File size: 190,147 Bytes
d65f7e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "691004dbd42f41cabb2213951c49ad32": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_efc7fbbc6c58401cad9786e7b70b14e0",
              "IPY_MODEL_57447709a60840dab09da3b444c2d4fd",
              "IPY_MODEL_b5245512642144af9108d0d0d95c5ad7"
            ],
            "layout": "IPY_MODEL_d03aaf2b0e1941fe95b6872e2acb7ead"
          }
        },
        "efc7fbbc6c58401cad9786e7b70b14e0": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_e0a475eb726344408e867688d6f43713",
            "placeholder": "​",
            "style": "IPY_MODEL_3bbd5b5b3b8d4d9f975208a77be35d89",
            "value": "README.md: 100%"
          }
        },
        "57447709a60840dab09da3b444c2d4fd": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_bd13f529cc314631b735b23dc8d1b3c4",
            "max": 2035,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_fc879d4d50474cbea971c6ea9162270f",
            "value": 2035
          }
        },
        "b5245512642144af9108d0d0d95c5ad7": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_2babfecc61c848cca1d971fb77ee8e7a",
            "placeholder": "",
            "style": "IPY_MODEL_eb7435fd4d1d4c6ba1f6ad8f2940742a",
            "value": "2.04k/2.04k [00:00<00:00, 108kB/s]"
          }
        },
        "d03aaf2b0e1941fe95b6872e2acb7ead": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "e0a475eb726344408e867688d6f43713": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "3bbd5b5b3b8d4d9f975208a77be35d89": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "bd13f529cc314631b735b23dc8d1b3c4": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "fc879d4d50474cbea971c6ea9162270f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "2babfecc61c848cca1d971fb77ee8e7a": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "eb7435fd4d1d4c6ba1f6ad8f2940742a": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "797e9ce1b42347219c68718bd7b71305": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_720bc088135f4fcba43573867b3bb1b2",
              "IPY_MODEL_6ccf492eb4ff4f93aca49eed33bf7b25",
              "IPY_MODEL_3aa9f037a76a4b8895094c2b5486a02b"
            ],
            "layout": "IPY_MODEL_9244ce7764d14328b23baf5e3eca31e4"
          }
        },
        "720bc088135f4fcba43573867b3bb1b2": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_ac4354c6c8734e60bab46191175bf385",
            "placeholder": "",
            "style": "IPY_MODEL_0ff6dd7910ef422ca44a8e513ab81c06",
            "value": "Loading train: "
          }
        },
        "6ccf492eb4ff4f93aca49eed33bf7b25": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_bad5bd14c595497080e280d2234548b0",
            "max": 1,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_1ffeccecec3a49af884e702a41847d33",
            "value": 1
          }
        },
        "3aa9f037a76a4b8895094c2b5486a02b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_9ed1e14f911e49afa2492bb17c080fa8",
            "placeholder": "",
            "style": "IPY_MODEL_112d8c3db9bc4b6fbe19f24769fb5b6e",
            "value": "5000/? [00:14<00:00, 547.41it/s]"
          }
        },
        "9244ce7764d14328b23baf5e3eca31e4": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "ac4354c6c8734e60bab46191175bf385": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "0ff6dd7910ef422ca44a8e513ab81c06": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "bad5bd14c595497080e280d2234548b0": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": "20px"
          }
        },
        "1ffeccecec3a49af884e702a41847d33": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "9ed1e14f911e49afa2492bb17c080fa8": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "112d8c3db9bc4b6fbe19f24769fb5b6e": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "cb26bb419f4f4c7ebaeb01d1557fa335": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_18b856ef3a19466ea6057424e218c117",
              "IPY_MODEL_14ef834102b340aea1d0724f421f51ed",
              "IPY_MODEL_0f5aa1e72a4543f3924a11f87b6ef3a3"
            ],
            "layout": "IPY_MODEL_284031202a8946cfb09a1586d4d5fce6"
          }
        },
        "18b856ef3a19466ea6057424e218c117": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f3f55d67c5e0449f904ad333cd7cc5f7",
            "placeholder": "",
            "style": "IPY_MODEL_e232d8b6e64f46c09ab0bd40e07dd786",
            "value": "Loading test: "
          }
        },
        "14ef834102b340aea1d0724f421f51ed": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_ee859dd359d94209b4a418d0ee368990",
            "max": 1,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_daad2734da424c82b9d2055b27cbd69a",
            "value": 1
          }
        },
        "0f5aa1e72a4543f3924a11f87b6ef3a3": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_0d7e54d079a3444eaee38993b64f7943",
            "placeholder": "",
            "style": "IPY_MODEL_bb27e8509fda443a8fa4e2b3f54be6b3",
            "value": "1000/? [00:03<00:00, 291.78it/s]"
          }
        },
        "284031202a8946cfb09a1586d4d5fce6": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "f3f55d67c5e0449f904ad333cd7cc5f7": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "e232d8b6e64f46c09ab0bd40e07dd786": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "ee859dd359d94209b4a418d0ee368990": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": "20px"
          }
        },
        "daad2734da424c82b9d2055b27cbd69a": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "0d7e54d079a3444eaee38993b64f7943": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "bb27e8509fda443a8fa4e2b3f54be6b3": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "source": [
        "\n",
        "\n",
        "!pip install datasets tqdm typing-extensions==4.11.0 --quiet\n",
        "\n",
        "# 2. IMPORT LIBRARIES\n",
        "import numpy as np\n",
        "import tensorflow as tf\n",
        "from tensorflow.keras.models import Sequential\n",
        "from tensorflow.keras.layers import Conv2D, MaxPooling2D, BatchNormalization, LeakyReLU\n",
        "from tensorflow.keras.layers import Dense, Dropout, Flatten, Activation\n",
        "from tensorflow.keras.regularizers import l2\n",
        "from tensorflow.keras.optimizers import Adam\n",
        "from tensorflow.keras.preprocessing.image import ImageDataGenerator,img_to_array\n",
        "from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau, ModelCheckpoint\n",
        "from sklearn.utils.class_weight import compute_class_weight\n",
        "from datasets import load_dataset\n",
        "from tqdm.auto import tqdm\n",
        "from sklearn.preprocessing import LabelEncoder\n",
        "import matplotlib.pyplot as plt"
      ],
      "metadata": {
        "id": "RKhyyQDr_wum",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "collapsed": true,
        "outputId": "b5a1c7df-703a-4d5e-f938-f5310cc26b05"
      },
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/491.2 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m17.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/116.3 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m11.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/183.9 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m18.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/143.5 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m15.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/194.8 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m19.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
            "torch 2.6.0+cu124 requires nvidia-cublas-cu12==12.4.5.8; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cublas-cu12 12.5.3.2 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cuda-cupti-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-cupti-cu12 12.5.82 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cuda-nvrtc-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-nvrtc-cu12 12.5.82 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cuda-runtime-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-runtime-cu12 12.5.82 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cudnn-cu12==9.1.0.70; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cudnn-cu12 9.3.0.75 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cufft-cu12==11.2.1.3; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cufft-cu12 11.2.3.61 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-curand-cu12==10.3.5.147; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-curand-cu12 10.3.6.82 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cusolver-cu12==11.6.1.9; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusolver-cu12 11.6.3.83 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-cusparse-cu12==12.3.1.170; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusparse-cu12 12.5.1.3 which is incompatible.\n",
            "torch 2.6.0+cu124 requires nvidia-nvjitlink-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-nvjitlink-cu12 12.5.82 which is incompatible.\n",
            "gcsfs 2025.3.0 requires fsspec==2025.3.0, but you have fsspec 2024.12.0 which is incompatible.\n",
            "pydantic 2.10.6 requires typing-extensions>=4.12.2, but you have typing-extensions 4.11.0 which is incompatible.\u001b[0m\u001b[31m\n",
            "\u001b[0m"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "CONFIG = {\n",
        "    \"image_size\": (128, 128),\n",
        "    \"batch_size\": 64,\n",
        "    \"epochs\": 30,\n",
        "    \"num_train_samples\": 5000,\n",
        "    \"num_test_samples\": 1000,\n",
        "    \"learning_rate\": 3e-4,\n",
        "    \"weight_decay\": 1e-4,\n",
        "    \"early_stop_patience\": 10,\n",
        "    \"lr_patience\": 5,\n",
        "\n",
        "}"
      ],
      "metadata": {
        "id": "ovAJSC6X_2s6",
        "collapsed": true
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "# ==============================================\n",
        "# Data Loading Function\n",
        "# ==============================================\n",
        "def load_data(split, n_samples=None):\n",
        "    \"\"\"Optimized data loader with error handling\"\"\"\n",
        "    dataset = load_dataset(\"GVJahnavi/PlantVillage_dataset\", split=split, streaming=True)\n",
        "    images, labels = [], []\n",
        "\n",
        "    for sample in tqdm(dataset.take(n_samples) if n_samples else dataset, desc=f\"Loading {split}\"):\n",
        "        try:\n",
        "            img = sample['image'].resize(CONFIG[\"image_size\"])\n",
        "            img_array = np.array(img)\n",
        "\n",
        "            # Handle grayscale images\n",
        "            if len(img_array.shape) == 2:\n",
        "                img_array = np.stack((img_array,)*3, axis=-1)\n",
        "\n",
        "            images.append(img_array / 255.0)\n",
        "            labels.append(str(sample['label']))\n",
        "        except Exception as e:\n",
        "            continue\n",
        "\n",
        "    return np.array(images), np.array(labels)\n"
      ],
      "metadata": {
        "id": "YzwJxCKj_5AJ"
      },
      "execution_count": 3,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# ==============================================\n",
        "# Data Loading\n",
        "# ==============================================\n",
        "print(\"Loading data...\")\n",
        "X_train, y_train = load_data(\"train\", CONFIG[\"num_train_samples\"])\n",
        "X_test, y_test = load_data(\"test\", CONFIG[\"num_test_samples\"])\n",
        "\n",
        "# Label encoding\n",
        "le = LabelEncoder()\n",
        "y_train = le.fit_transform(y_train)\n",
        "y_test = le.transform(y_test)\n",
        "\n",
        "# Class weights\n",
        "class_weights = compute_class_weight('balanced', classes=np.unique(y_train), y=y_train)\n",
        "class_weights = dict(enumerate(class_weights))\n"
      ],
      "metadata": {
        "id": "Bhg8PmYD_7KG",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 130,
          "referenced_widgets": [
            "691004dbd42f41cabb2213951c49ad32",
            "efc7fbbc6c58401cad9786e7b70b14e0",
            "57447709a60840dab09da3b444c2d4fd",
            "b5245512642144af9108d0d0d95c5ad7",
            "d03aaf2b0e1941fe95b6872e2acb7ead",
            "e0a475eb726344408e867688d6f43713",
            "3bbd5b5b3b8d4d9f975208a77be35d89",
            "bd13f529cc314631b735b23dc8d1b3c4",
            "fc879d4d50474cbea971c6ea9162270f",
            "2babfecc61c848cca1d971fb77ee8e7a",
            "eb7435fd4d1d4c6ba1f6ad8f2940742a",
            "797e9ce1b42347219c68718bd7b71305",
            "720bc088135f4fcba43573867b3bb1b2",
            "6ccf492eb4ff4f93aca49eed33bf7b25",
            "3aa9f037a76a4b8895094c2b5486a02b",
            "9244ce7764d14328b23baf5e3eca31e4",
            "ac4354c6c8734e60bab46191175bf385",
            "0ff6dd7910ef422ca44a8e513ab81c06",
            "bad5bd14c595497080e280d2234548b0",
            "1ffeccecec3a49af884e702a41847d33",
            "9ed1e14f911e49afa2492bb17c080fa8",
            "112d8c3db9bc4b6fbe19f24769fb5b6e",
            "cb26bb419f4f4c7ebaeb01d1557fa335",
            "18b856ef3a19466ea6057424e218c117",
            "14ef834102b340aea1d0724f421f51ed",
            "0f5aa1e72a4543f3924a11f87b6ef3a3",
            "284031202a8946cfb09a1586d4d5fce6",
            "f3f55d67c5e0449f904ad333cd7cc5f7",
            "e232d8b6e64f46c09ab0bd40e07dd786",
            "ee859dd359d94209b4a418d0ee368990",
            "daad2734da424c82b9d2055b27cbd69a",
            "0d7e54d079a3444eaee38993b64f7943",
            "bb27e8509fda443a8fa4e2b3f54be6b3"
          ]
        },
        "collapsed": true,
        "outputId": "8c8196f5-d7b6-45ff-df33-8f1cc603ca82"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Loading data...\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "README.md:   0%|          | 0.00/2.04k [00:00<?, ?B/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "691004dbd42f41cabb2213951c49ad32"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Loading train: 0it [00:00, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "797e9ce1b42347219c68718bd7b71305"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Loading test: 0it [00:00, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "cb26bb419f4f4c7ebaeb01d1557fa335"
            }
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# ==============================================\n",
        "# Data Augmentation\n",
        "# ==============================================\n",
        "train_datagen = ImageDataGenerator(\n",
        "    rotation_range=40,\n",
        "    width_shift_range=0.2,\n",
        "    height_shift_range=0.2,\n",
        "    shear_range=0.2,\n",
        "    zoom_range=0.2,\n",
        "    horizontal_flip=True,\n",
        "    vertical_flip=True,  # Added vertical flip\n",
        "    fill_mode='nearest'\n",
        ")\n",
        "\n",
        "val_datagen = ImageDataGenerator()\n"
      ],
      "metadata": {
        "id": "jjOfjjiH_9pf"
      },
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# ==============================================\n",
        "# Enhanced Model Architecture\n",
        "# ==============================================\n",
        "def build_model():\n",
        "    model = Sequential()\n",
        "    input_shape = (*CONFIG[\"image_size\"], 3)\n",
        "\n",
        "    # Conv Blocks\n",
        "    filters = [32, 64, 128, 256]\n",
        "    dropouts = [0.25, 0.3, 0.4, 0.5]\n",
        "\n",
        "    for i, (f, dr) in enumerate(zip(filters, dropouts)):\n",
        "        # First block has input_shape\n",
        "        if i == 0:\n",
        "            model.add(Conv2D(f, (3,3), padding=\"same\", input_shape=input_shape,\n",
        "                          kernel_regularizer=l2(CONFIG[\"weight_decay\"])))\n",
        "        else:\n",
        "            model.add(Conv2D(f, (3,3), padding=\"same\",\n",
        "                          kernel_regularizer=l2(CONFIG[\"weight_decay\"])))\n",
        "\n",
        "        model.add(LeakyReLU(alpha=0.1))\n",
        "        model.add(BatchNormalization())\n",
        "\n",
        "        # Add second conv layer for deeper blocks\n",
        "        if i >= 1:\n",
        "            model.add(Conv2D(f, (3,3), padding=\"same\"))\n",
        "            model.add(LeakyReLU(alpha=0.1))\n",
        "            model.add(BatchNormalization())\n",
        "\n",
        "        model.add(MaxPooling2D((2,2)))\n",
        "        model.add(Dropout(dr))\n",
        "\n",
        "    # Classifier\n",
        "    model.add(Flatten())\n",
        "    model.add(Dense(1024, kernel_regularizer=l2(CONFIG[\"weight_decay\"])))\n",
        "    model.add(LeakyReLU(alpha=0.1))\n",
        "    model.add(BatchNormalization())\n",
        "    model.add(Dropout(0.6))\n",
        "\n",
        "    model.add(Dense(len(le.classes_), activation='softmax'))\n",
        "\n",
        "    return model\n",
        "\n",
        "model = build_model()\n",
        "model.summary()\n"
      ],
      "metadata": {
        "id": "KCQe29-dAA7Q",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "b0bee921-0a97-45b1-fd58-40b2a51e1e20"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
            "  super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n",
            "/usr/local/lib/python3.11/dist-packages/keras/src/layers/activations/leaky_relu.py:41: UserWarning: Argument `alpha` is deprecated. Use `negative_slope` instead.\n",
            "  warnings.warn(\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1mModel: \"sequential\"\u001b[0m\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
              "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                        \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape               \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m        Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
              "│ conv2d (\u001b[38;5;33mConv2D\u001b[0m)                      │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m32\u001b[0m)        │             \u001b[38;5;34m896\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu (\u001b[38;5;33mLeakyReLU\u001b[0m)              │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m32\u001b[0m)        │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m32\u001b[0m)        │             \u001b[38;5;34m128\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d (\u001b[38;5;33mMaxPooling2D\u001b[0m)         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m32\u001b[0m)          │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout (\u001b[38;5;33mDropout\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m32\u001b[0m)          │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_1 (\u001b[38;5;33mConv2D\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │          \u001b[38;5;34m18,496\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_1 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_1                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │             \u001b[38;5;34m256\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_2 (\u001b[38;5;33mConv2D\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │          \u001b[38;5;34m36,928\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_2 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_2                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │             \u001b[38;5;34m256\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_1 (\u001b[38;5;33mMaxPooling2D\u001b[0m)       │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m64\u001b[0m)          │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_3 (\u001b[38;5;33mConv2D\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │          \u001b[38;5;34m73,856\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_3 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_3                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │             \u001b[38;5;34m512\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_4 (\u001b[38;5;33mConv2D\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │         \u001b[38;5;34m147,584\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_4 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_4                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │             \u001b[38;5;34m512\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_2 (\u001b[38;5;33mMaxPooling2D\u001b[0m)       │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_2 (\u001b[38;5;33mDropout\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m128\u001b[0m)         │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_5 (\u001b[38;5;33mConv2D\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m256\u001b[0m)         │         \u001b[38;5;34m295,168\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_5 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m256\u001b[0m)         │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_5                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m256\u001b[0m)         │           \u001b[38;5;34m1,024\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_6 (\u001b[38;5;33mConv2D\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m256\u001b[0m)         │         \u001b[38;5;34m590,080\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_6 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m256\u001b[0m)         │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_6                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m256\u001b[0m)         │           \u001b[38;5;34m1,024\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_3 (\u001b[38;5;33mMaxPooling2D\u001b[0m)       │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m256\u001b[0m)           │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_3 (\u001b[38;5;33mDropout\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m256\u001b[0m)           │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ flatten (\u001b[38;5;33mFlatten\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16384\u001b[0m)               │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense (\u001b[38;5;33mDense\u001b[0m)                        │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m)                │      \u001b[38;5;34m16,778,240\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_7 (\u001b[38;5;33mLeakyReLU\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m)                │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_7                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m)                │           \u001b[38;5;34m4,096\u001b[0m │\n",
              "│ (\u001b[38;5;33mBatchNormalization\u001b[0m)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_4 (\u001b[38;5;33mDropout\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m)                │               \u001b[38;5;34m0\u001b[0m │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense_1 (\u001b[38;5;33mDense\u001b[0m)                      │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m)                   │           \u001b[38;5;34m7,175\u001b[0m │\n",
              "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
              "┃<span style=\"font-weight: bold\"> Layer (type)                         </span>┃<span style=\"font-weight: bold\"> Output Shape                </span>┃<span style=\"font-weight: bold\">         Param # </span>┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
              "│ conv2d (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                      │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)        │             <span style=\"color: #00af00; text-decoration-color: #00af00\">896</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)              │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)        │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)        │             <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>)         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)          │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)          │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │          <span style=\"color: #00af00; text-decoration-color: #00af00\">18,496</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_1                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │             <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │          <span style=\"color: #00af00; text-decoration-color: #00af00\">36,928</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_2                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │             <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>)       │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)          │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │          <span style=\"color: #00af00; text-decoration-color: #00af00\">73,856</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_3                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │             <span style=\"color: #00af00; text-decoration-color: #00af00\">512</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │         <span style=\"color: #00af00; text-decoration-color: #00af00\">147,584</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_4                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │             <span style=\"color: #00af00; text-decoration-color: #00af00\">512</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>)       │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)         │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)         │         <span style=\"color: #00af00; text-decoration-color: #00af00\">295,168</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)         │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_5                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)         │           <span style=\"color: #00af00; text-decoration-color: #00af00\">1,024</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_6 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)         │         <span style=\"color: #00af00; text-decoration-color: #00af00\">590,080</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_6 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)         │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_6                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)         │           <span style=\"color: #00af00; text-decoration-color: #00af00\">1,024</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>)       │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">8</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">8</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)           │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">8</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">8</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)           │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16384</span>)               │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                        │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1024</span>)                │      <span style=\"color: #00af00; text-decoration-color: #00af00\">16,778,240</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ leaky_re_lu_7 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LeakyReLU</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1024</span>)                │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ batch_normalization_7                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1024</span>)                │           <span style=\"color: #00af00; text-decoration-color: #00af00\">4,096</span> │\n",
              "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">BatchNormalization</span>)                 │                             │                 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dropout_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1024</span>)                │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                      │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">7</span>)                   │           <span style=\"color: #00af00; text-decoration-color: #00af00\">7,175</span> │\n",
              "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m17,956,231\u001b[0m (68.50 MB)\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">17,956,231</span> (68.50 MB)\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m17,952,327\u001b[0m (68.48 MB)\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">17,952,327</span> (68.48 MB)\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m3,904\u001b[0m (15.25 KB)\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">3,904</span> (15.25 KB)\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# ==============================================\n",
        "# Training Setup\n",
        "# ==============================================\n",
        "optimizer = Adam(learning_rate=CONFIG[\"learning_rate\"],\n",
        "                 weight_decay=CONFIG[\"weight_decay\"])\n",
        "\n",
        "model.compile(\n",
        "    loss=\"sparse_categorical_crossentropy\",\n",
        "    optimizer=optimizer,\n",
        "    metrics=[\"accuracy\", tf.keras.metrics.SparseTopKCategoricalAccuracy(k=3)]\n",
        ")\n",
        "\n",
        "callbacks = [\n",
        "    EarlyStopping(patience=CONFIG[\"early_stop_patience\"],\n",
        "                 restore_best_weights=True,\n",
        "                 monitor='val_accuracy'),\n",
        "    ReduceLROnPlateau(factor=0.5,\n",
        "                     patience=CONFIG[\"lr_patience\"],\n",
        "                     verbose=1),\n",
        "]\n"
      ],
      "metadata": {
        "id": "9ZO8IYQAADZF"
      },
      "execution_count": 7,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# ==============================================\n",
        "# Training Execution\n",
        "# ==============================================\n",
        "print(\"\\nTraining model...\")\n",
        "history = model.fit(\n",
        "    train_datagen.flow(X_train, y_train, batch_size=CONFIG[\"batch_size\"]),\n",
        "    steps_per_epoch=len(X_train) // CONFIG[\"batch_size\"],\n",
        "    validation_data=val_datagen.flow(X_test, y_test),\n",
        "    epochs=CONFIG[\"epochs\"],\n",
        "    callbacks=callbacks,\n",
        "    class_weight=class_weights,\n",
        "    verbose=1\n",
        ")"
      ],
      "metadata": {
        "id": "DZaNPXyzAFtx",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "daf89a9d-36a2-4a92-c1c9-b42289bcb475"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Training model...\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/keras/src/trainers/data_adapters/py_dataset_adapter.py:121: UserWarning: Your `PyDataset` class should call `super().__init__(**kwargs)` in its constructor. `**kwargs` can include `workers`, `use_multiprocessing`, `max_queue_size`. Do not pass these arguments to `fit()`, as they will be ignored.\n",
            "  self._warn_if_super_not_called()\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m63s\u001b[0m 503ms/step - accuracy: 0.4329 - loss: 2.4943 - sparse_top_k_categorical_accuracy: 0.7645 - val_accuracy: 0.1320 - val_loss: 9.4595 - val_sparse_top_k_categorical_accuracy: 0.2420 - learning_rate: 3.0000e-04\n",
            "Epoch 2/30\n",
            "\u001b[1m 1/78\u001b[0m \u001b[37m━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[1m5s\u001b[0m 71ms/step - accuracy: 0.5781 - loss: 1.9116 - sparse_top_k_categorical_accuracy: 0.8750"
          ]
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/keras/src/trainers/epoch_iterator.py:107: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.\n",
            "  self._interrupted_warning()\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 0.5781 - loss: 1.9116 - sparse_top_k_categorical_accuracy: 0.8750 - val_accuracy: 0.1280 - val_loss: 9.3718 - val_sparse_top_k_categorical_accuracy: 0.2420 - learning_rate: 3.0000e-04\n",
            "Epoch 3/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m49s\u001b[0m 286ms/step - accuracy: 0.6459 - loss: 1.4719 - sparse_top_k_categorical_accuracy: 0.9345 - val_accuracy: 0.0560 - val_loss: 10.2090 - val_sparse_top_k_categorical_accuracy: 0.2420 - learning_rate: 3.0000e-04\n",
            "Epoch 4/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 6ms/step - accuracy: 0.7656 - loss: 0.9638 - sparse_top_k_categorical_accuracy: 0.9375 - val_accuracy: 0.0560 - val_loss: 10.1537 - val_sparse_top_k_categorical_accuracy: 0.2420 - learning_rate: 3.0000e-04\n",
            "Epoch 5/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 304ms/step - accuracy: 0.7353 - loss: 1.0905 - sparse_top_k_categorical_accuracy: 0.9676 - val_accuracy: 0.0560 - val_loss: 11.6470 - val_sparse_top_k_categorical_accuracy: 0.4430 - learning_rate: 3.0000e-04\n",
            "Epoch 6/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 0.7188 - loss: 1.0508 - sparse_top_k_categorical_accuracy: 0.9688 - val_accuracy: 0.0560 - val_loss: 11.7472 - val_sparse_top_k_categorical_accuracy: 0.4430 - learning_rate: 3.0000e-04\n",
            "Epoch 7/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 300ms/step - accuracy: 0.7702 - loss: 0.9361 - sparse_top_k_categorical_accuracy: 0.9761\n",
            "Epoch 7: ReduceLROnPlateau reducing learning rate to 0.0001500000071246177.\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 309ms/step - accuracy: 0.7704 - loss: 0.9358 - sparse_top_k_categorical_accuracy: 0.9761 - val_accuracy: 0.0570 - val_loss: 14.8491 - val_sparse_top_k_categorical_accuracy: 0.4570 - learning_rate: 3.0000e-04\n",
            "Epoch 8/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.8438 - loss: 0.5789 - sparse_top_k_categorical_accuracy: 0.9844 - val_accuracy: 0.0570 - val_loss: 14.9557 - val_sparse_top_k_categorical_accuracy: 0.4570 - learning_rate: 1.5000e-04\n",
            "Epoch 9/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 305ms/step - accuracy: 0.8353 - loss: 0.7625 - sparse_top_k_categorical_accuracy: 0.9743 - val_accuracy: 0.1700 - val_loss: 9.7745 - val_sparse_top_k_categorical_accuracy: 0.5520 - learning_rate: 1.5000e-04\n",
            "Epoch 10/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 7ms/step - accuracy: 0.8281 - loss: 0.6357 - sparse_top_k_categorical_accuracy: 0.9531 - val_accuracy: 0.1860 - val_loss: 9.6140 - val_sparse_top_k_categorical_accuracy: 0.5510 - learning_rate: 1.5000e-04\n",
            "Epoch 11/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 308ms/step - accuracy: 0.8245 - loss: 0.7697 - sparse_top_k_categorical_accuracy: 0.9761 - val_accuracy: 0.3340 - val_loss: 5.1914 - val_sparse_top_k_categorical_accuracy: 0.6730 - learning_rate: 1.5000e-04\n",
            "Epoch 12/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - accuracy: 0.8438 - loss: 0.8136 - sparse_top_k_categorical_accuracy: 0.9688 - val_accuracy: 0.3350 - val_loss: 5.0796 - val_sparse_top_k_categorical_accuracy: 0.6900 - learning_rate: 1.5000e-04\n",
            "Epoch 13/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m39s\u001b[0m 295ms/step - accuracy: 0.8382 - loss: 0.6952 - sparse_top_k_categorical_accuracy: 0.9848 - val_accuracy: 0.4000 - val_loss: 4.8749 - val_sparse_top_k_categorical_accuracy: 0.6660 - learning_rate: 1.5000e-04\n",
            "Epoch 14/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.8125 - loss: 0.5888 - sparse_top_k_categorical_accuracy: 0.9844 - val_accuracy: 0.3900 - val_loss: 4.7950 - val_sparse_top_k_categorical_accuracy: 0.6670 - learning_rate: 1.5000e-04\n",
            "Epoch 15/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 289ms/step - accuracy: 0.8581 - loss: 0.6752 - sparse_top_k_categorical_accuracy: 0.9833 - val_accuracy: 0.4940 - val_loss: 4.3225 - val_sparse_top_k_categorical_accuracy: 0.7150 - learning_rate: 1.5000e-04\n",
            "Epoch 16/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 0.8125 - loss: 0.9437 - sparse_top_k_categorical_accuracy: 0.9531 - val_accuracy: 0.5020 - val_loss: 4.3453 - val_sparse_top_k_categorical_accuracy: 0.7200 - learning_rate: 1.5000e-04\n",
            "Epoch 17/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 302ms/step - accuracy: 0.8685 - loss: 0.6388 - sparse_top_k_categorical_accuracy: 0.9889 - val_accuracy: 0.7610 - val_loss: 1.2823 - val_sparse_top_k_categorical_accuracy: 0.9430 - learning_rate: 1.5000e-04\n",
            "Epoch 18/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - accuracy: 0.9219 - loss: 0.6197 - sparse_top_k_categorical_accuracy: 1.0000 - val_accuracy: 0.7710 - val_loss: 1.2378 - val_sparse_top_k_categorical_accuracy: 0.9490 - learning_rate: 1.5000e-04\n",
            "Epoch 19/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 285ms/step - accuracy: 0.8733 - loss: 0.6129 - sparse_top_k_categorical_accuracy: 0.9892 - val_accuracy: 0.7810 - val_loss: 1.0951 - val_sparse_top_k_categorical_accuracy: 0.9540 - learning_rate: 1.5000e-04\n",
            "Epoch 20/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - accuracy: 0.8906 - loss: 0.7196 - sparse_top_k_categorical_accuracy: 1.0000 - val_accuracy: 0.8020 - val_loss: 1.0278 - val_sparse_top_k_categorical_accuracy: 0.9620 - learning_rate: 1.5000e-04\n",
            "Epoch 21/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 303ms/step - accuracy: 0.8914 - loss: 0.5703 - sparse_top_k_categorical_accuracy: 0.9904 - val_accuracy: 0.8500 - val_loss: 0.7309 - val_sparse_top_k_categorical_accuracy: 0.9860 - learning_rate: 1.5000e-04\n",
            "Epoch 22/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - accuracy: 0.9219 - loss: 0.5307 - sparse_top_k_categorical_accuracy: 1.0000 - val_accuracy: 0.8540 - val_loss: 0.7115 - val_sparse_top_k_categorical_accuracy: 0.9870 - learning_rate: 1.5000e-04\n",
            "Epoch 23/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m23s\u001b[0m 289ms/step - accuracy: 0.9092 - loss: 0.5199 - sparse_top_k_categorical_accuracy: 0.9906 - val_accuracy: 0.8820 - val_loss: 0.6575 - val_sparse_top_k_categorical_accuracy: 0.9950 - learning_rate: 1.5000e-04\n",
            "Epoch 24/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 0.8906 - loss: 0.5522 - sparse_top_k_categorical_accuracy: 1.0000 - val_accuracy: 0.8880 - val_loss: 0.6323 - val_sparse_top_k_categorical_accuracy: 0.9950 - learning_rate: 1.5000e-04\n",
            "Epoch 25/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 303ms/step - accuracy: 0.8964 - loss: 0.5625 - sparse_top_k_categorical_accuracy: 0.9919 - val_accuracy: 0.8980 - val_loss: 0.7370 - val_sparse_top_k_categorical_accuracy: 0.9860 - learning_rate: 1.5000e-04\n",
            "Epoch 26/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 0.8438 - loss: 0.6429 - sparse_top_k_categorical_accuracy: 0.9844 - val_accuracy: 0.8850 - val_loss: 0.7962 - val_sparse_top_k_categorical_accuracy: 0.9830 - learning_rate: 1.5000e-04\n",
            "Epoch 27/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 301ms/step - accuracy: 0.9000 - loss: 0.5165 - sparse_top_k_categorical_accuracy: 0.9899 - val_accuracy: 0.9030 - val_loss: 0.5893 - val_sparse_top_k_categorical_accuracy: 0.9940 - learning_rate: 1.5000e-04\n",
            "Epoch 28/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 0.9219 - loss: 0.4556 - sparse_top_k_categorical_accuracy: 1.0000 - val_accuracy: 0.9020 - val_loss: 0.6038 - val_sparse_top_k_categorical_accuracy: 0.9940 - learning_rate: 1.5000e-04\n",
            "Epoch 29/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m40s\u001b[0m 304ms/step - accuracy: 0.8677 - loss: 0.6720 - sparse_top_k_categorical_accuracy: 0.9883 - val_accuracy: 0.8350 - val_loss: 0.8678 - val_sparse_top_k_categorical_accuracy: 0.9710 - learning_rate: 1.5000e-04\n",
            "Epoch 30/30\n",
            "\u001b[1m78/78\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 6ms/step - accuracy: 0.8906 - loss: 0.5368 - sparse_top_k_categorical_accuracy: 1.0000 - val_accuracy: 0.8340 - val_loss: 0.8807 - val_sparse_top_k_categorical_accuracy: 0.9690 - learning_rate: 1.5000e-04\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# ==============================================\n",
        "# Evaluation & Visualization\n",
        "# ==============================================\n",
        "plt.figure(figsize=(14, 5))\n",
        "plt.subplot(1, 2, 1)\n",
        "plt.plot(history.history['accuracy'], label='Train')\n",
        "plt.plot(history.history['val_accuracy'], label='Validation')\n",
        "plt.title('Model Accuracy')\n",
        "plt.ylabel('Accuracy')\n",
        "plt.xlabel('Epoch')\n",
        "plt.legend()\n",
        "\n",
        "plt.subplot(1, 2, 2)\n",
        "plt.plot(history.history['loss'], label='Train')\n",
        "plt.plot(history.history['val_loss'], label='Validation')\n",
        "plt.title('Model Loss')\n",
        "plt.ylabel('Loss')\n",
        "plt.xlabel('Epoch')\n",
        "plt.legend()\n",
        "plt.show()\n",
        "\n"
      ],
      "metadata": {
        "id": "I8ak3_e3AHks",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 487
        },
        "outputId": "c5e7694b-579f-4ffa-c781-cf0feba5da83"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1400x500 with 2 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABIYAAAHWCAYAAAACWYJQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAuUxJREFUeJzs3Xd4FGXXx/HvbnpCCgkhIbTQO6FJEwUURVQEERUsYMUCNtTHgmB5Feyi4mN7VCyAKAhWVECkSJXea+gJIYT0np33jyGB0EM2mezm97muuXYyOzN7NoFk5ux9n2MzDMNAREREREREREQqHbvVAYiIiIiIiIiIiDWUGBIRERERERERqaSUGBIRERERERERqaSUGBIRERERERERqaSUGBIRERERERERqaSUGBIRERERERERqaSUGBIRERERERERqaSUGBIRERERERERqaSUGBIRERERERERqaSUGBKRUrPZbLzwwgslPm737t3YbDYmTpzo9JhEREREKhNdj4nIhVJiSMRNTJw4EZvNhs1mY9GiRac8bxgGtWvXxmazce2111oQoXP89ttv2Gw2oqKicDgcVocjIiIiUsSdr8f+/vtvbDYb06ZNszoUEXEyJYZE3Iyvry+TJ08+Zfv8+fPZv38/Pj4+FkTlPJMmTSI6Opq4uDj++usvq8MREREROYW7X4+JiHtRYkjEzVx99dV8//335OfnF9s+efJk2rdvT2RkpEWRlV5GRgY//vgjI0eOpG3btkyaNMnqkM4oIyPD6hBERETEIu58PSYi7keJIRE3M3jwYI4cOcLs2bOLtuXm5jJt2jRuueWW0x6TkZHB448/Tu3atfHx8aFJkya8+eabGIZRbL+cnBwee+wxwsPDCQwM5LrrrmP//v2nPeeBAwe46667iIiIwMfHhxYtWvD555+X6r3NmDGDrKwsbrzxRgYNGsQPP/xAdnb2KftlZ2fzwgsv0LhxY3x9falRowYDBgxg586dRfs4HA7effddWrVqha+vL+Hh4Vx11VX8+++/wNnn2588h/+FF17AZrOxadMmbrnlFqpWrUq3bt0AWLduHXfccQf169fH19eXyMhI7rrrLo4cOXLa79ndd99NVFQUPj4+1KtXjwceeIDc3Fx27dqFzWbjnXfeOeW4xYsXY7PZmDJlSkm/pSIiIlIG3Pl67Fx27drFjTfeSGhoKP7+/nTu3Jlff/31lP3ef/99WrRogb+/P1WrVqVDhw7FRlmlpaXx6KOPEh0djY+PD9WrV+eKK65g1apVZRq/SGXkaXUAIuJc0dHRdOnShSlTptCnTx8AZs2aRUpKCoMGDeK9994rtr9hGFx33XXMmzePu+++mzZt2vDHH3/w5JNPcuDAgWKJiHvuuYdvvvmGW265ha5du/LXX39xzTXXnBLDoUOH6Ny5MzabjREjRhAeHs6sWbO4++67SU1N5dFHH72g9zZp0iR69uxJZGQkgwYN4umnn+bnn3/mxhtvLNqnoKCAa6+9lrlz5zJo0CAeeeQR0tLSmD17Nhs2bKBBgwYA3H333UycOJE+ffpwzz33kJ+fz8KFC1m6dCkdOnS4oPhuvPFGGjVqxNixY4su4mbPns2uXbu48847iYyMZOPGjXzyySds3LiRpUuXYrPZADh48CAdO3YkOTmZYcOG0bRpUw4cOMC0adPIzMykfv36XHzxxUyaNInHHnvslO9LYGAg/fr1u6C4RURExLnc+XrsbA4dOkTXrl3JzMzk4YcfJiwsjC+//JLrrruOadOmcf311wPw6aef8vDDDzNw4EAeeeQRsrOzWbduHcuWLStKnN1///1MmzaNESNG0Lx5c44cOcKiRYvYvHkz7dq1c3rsIpWaISJu4YsvvjAAY8WKFcaECROMwMBAIzMz0zAMw7jxxhuNnj17GoZhGHXr1jWuueaaouNmzpxpAMbLL79c7HwDBw40bDabsWPHDsMwDGPNmjUGYDz44IPF9rvlllsMwHj++eeLtt19991GjRo1jMTExGL7Dho0yAgODi6KKzY21gCML7744pzv79ChQ4anp6fx6aefFm3r2rWr0a9fv2L7ff755wZgvP3226ecw+FwGIZhGH/99ZcBGA8//PAZ9zlbbCe/3+eff94AjMGDB5+yb+F7PdGUKVMMwFiwYEHRtiFDhhh2u91YsWLFGWP6+OOPDcDYvHlz0XO5ublGtWrVjKFDh55ynIiIiJQvd74emzdvngEY33///Rn3efTRRw3AWLhwYdG2tLQ0o169ekZ0dLRRUFBgGIZh9OvXz2jRosVZXy84ONgYPnz4WfcREefQVDIRN3TTTTeRlZXFL7/8QlpaGr/88ssZhy3/9ttveHh48PDDDxfb/vjjj2MYBrNmzSraDzhlv5M/bTIMg+nTp9O3b18MwyAxMbFo6d27NykpKRc0BPjbb7/Fbrdzww03FG0bPHgws2bN4ujRo0Xbpk+fTrVq1XjooYdOOUfh6Jzp06djs9l4/vnnz7jPhbj//vtP2ebn51e0np2dTWJiIp07dwYo+j44HA5mzpxJ3759TztaqTCmm266CV9f32K1lf744w8SExO57bbbLjhuERERcT53vB47l99++42OHTsWTakHqFKlCsOGDWP37t1s2rQJgJCQEPbv38+KFSvOeK6QkBCWLVvGwYMHnR6niBSnxJCIGwoPD6dXr15MnjyZH374gYKCAgYOHHjafffs2UNUVBSBgYHFtjdr1qzo+cJHu91eNBWrUJMmTYp9ffjwYZKTk/nkk08IDw8vttx5550AJCQklPg9ffPNN3Ts2JEjR46wY8cOduzYQdu2bcnNzeX7778v2m/nzp00adIET88zz5TduXMnUVFRhIaGljiOs6lXr94p25KSknjkkUeIiIjAz8+P8PDwov1SUlIA83uWmppKy5Ytz3r+kJAQ+vbtW2z+/aRJk6hZsyaXXXaZE9+JiIiIlJY7Xo+dy549e06J5XTv46mnnqJKlSp07NiRRo0aMXz4cP75559ix7z++uts2LCB2rVr07FjR1544QV27drl9JhFRDWGRNzWLbfcwr333kt8fDx9+vQhJCSkXF7X4XAAcNtttzF06NDT7tO6desSnXP79u1Fnyg1atTolOcnTZrEsGHDShjp2Z1p5FBBQcEZjzlxdFChm266icWLF/Pkk0/Spk0bqlSpgsPh4Kqrrir6XpXEkCFD+P7771m8eDGtWrXip59+4sEHH8RuV55fRESkonGn6zFnatasGVu3buWXX37h999/Z/r06fz3v/9lzJgxvPjii4B5DXXJJZcwY8YM/vzzT9544w1ee+01fvjhh6K6TSLiHEoMibip66+/nvvuu4+lS5cyderUM+5Xt25d5syZQ1paWrFPqbZs2VL0fOGjw+EoGpFTaOvWrcXOV9gho6CggF69ejnlvUyaNAkvLy++/vprPDw8ij23aNEi3nvvPfbu3UudOnVo0KABy5YtIy8vDy8vr9Oer0GDBvzxxx8kJSWdcdRQ1apVAUhOTi62vfCTrvNx9OhR5s6dy4svvsiYMWOKtm/fvr3YfuHh4QQFBbFhw4ZznvOqq64iPDycSZMm0alTJzIz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lixZwr59+/jtt98sjk7EhYQ1NB81YkhEpMRKnBi64447yiAMEZETFI4WanAZBEZaG4uISBnq3r0727Zt44MPPmDLli0ADBgwgGHDhvHyyy9zySWXWByhiIsI04ghEZELVeLE0BdffEGVKlW48cbin+J///33ZGZmMnToUKcFJyKVkMMB644lhmIGWxuLiEg5iIqKOqXI9Nq1a/nss8/45JNPLIpKxMUUTiVL2Qf5OeDpY208IiIupMTFp8eNG0e1atVO2V69enXGjh3rlKBEpBLbu8RsNesdCE2utjoaERERcQVVqoN3FTAccHS31dGIiLiUEieG9u7dS7169U7ZXrduXfbu3euUoESkEls7xXxs0Q+8/a2NRURERFyDzWa2rAdNJxMRKaESJ4aqV6/OunXrTtm+du1awsLCnBKUiFRSeVmwcaa5rmlkIiIiUhKFdYZUgFpEpERKXGNo8ODBPPzwwwQGBnLppZcCMH/+fB555BEGDRrk9ABFpBLZ8ivkpkFIHajT1epoRETKzIABA876fHJycvkEIuJO1LJeROSClDgx9H//93/s3r2byy+/HE9P83CHw8GQIUNUY0hESqewG1nrQWAv8YBGERGXERwcfM7nhwwZUk7RiLgJjRgSEbkgJU4MeXt7M3XqVF5++WXWrFmDn58frVq1om7dumURn4hUFmnxsHOuuR6j0Yci4t6++OILq0MQcT9FI4Z2WRuHiIiLKXFiqFCjRo1o1KiRM2MRkcps/fdmJ5FaHY9/4iciIiJyvgqvH1L3m3ULvfysjUdExEWUeK7GDTfcwGuvvXbK9tdff50bb7zRKUGJSCVUOI1Mo4VERETkQviHgc+xaZpJsdbGIiLiQkqcGFqwYAFXX331Kdv79OnDggULnBKUiFQy8evh0Abw8IYW11sdjYiIiLgimw3CjrWsV50hEZHzVuLEUHp6Ot7e3qds9/LyIjU11SlBiUglUzhaqEkf8A+1NhYRERFxXepMJiJSYiVODLVq1YqpU6eesv3bb7+lefPmTglKRCqRgnxY9525HjPY2lhERETEtYU1NB81YkhE5LyVuPj06NGjGTBgADt37uSyyy4DYO7cuUyePJlp06Y5PUARcXO75kFGglkXoGEvq6MRERERVxamzmQiIiVV4sRQ3759mTlzJmPHjmXatGn4+fkRExPDX3/9RWiopoCISAmtmWw+troRPLysjUVERERcW+FUMo0YEhE5byWeSgZwzTXX8M8//5CRkcGuXbu46aabeOKJJ4iJiXF2fCLizrKSYcuv5rq6kYmIiEhpFRafTouDnHRrYxERcREXlBgCszvZ0KFDiYqK4q233uKyyy5j6dKlzoxNRNzdph+hIAfCm0KNNlZHIyIiIq7Oryr4HZvFkKTpZCIi56NEU8ni4+OZOHEin332Gampqdx0003k5OQwc+ZMFZ4WkZIr7EYWM8hsMSsiIiJSWmENYH+SOZ2sRmuroxERqfDOe8RQ3759adKkCevWrWP8+PEcPHiQ999/vyxjExF3lhQLexcDNmh9s9XRiIiIiLtQy3oRkRI57xFDs2bN4uGHH+aBBx6gUaNGZRmTiFQGhS3q6/eAoChLQxERERE3UtiZTFPJRETOy3mPGFq0aBFpaWm0b9+eTp06MWHCBBITE8syNhFxV4YBa6eY6zGDrY1FRERE3EvosQLUGjEkInJezjsx1LlzZz799FPi4uK47777+Pbbb4mKisLhcDB79mzS0tLKMk4RcSf7lsPRWPAKgGbXWh2NiIiIuJMwtawXESmJEnclCwgI4K677mLRokWsX7+exx9/nFdffZXq1atz3XXXXVAQH3zwAdHR0fj6+tKpUyeWL19+Xsd9++232Gw2+vfvf0GvKyIWWTvZfGzeD7wDrI1FRERE3EthjaGMw5Cdam0sIiIu4ILb1QM0adKE119/nf379zNlypQLOsfUqVMZOXIkzz//PKtWrSImJobevXuTkJBw1uN2797NE088wSWXXHJBrysiFsnLhg0zzPWYQdbGIiIiIu7HNwgCws11jRoSETmnUiWGCnl4eNC/f39++umnEh/79ttvc++993LnnXfSvHlzPvroI/z9/fn888/PeExBQQG33norL774IvXr1y9N6CJS3rbNgpwUCKoF0UrsioiISBlQZzIRkfPmlMTQhcrNzWXlypX06tWraJvdbqdXr14sWbLkjMe99NJLVK9enbvvvvucr5GTk0NqamqxRUQu0MK34ePu8NuTsPkXyEou+TnWfms+xtwMdkt/BYmIiIi7UmcyEZHzdt7t6stCYmIiBQUFREREFNseERHBli1bTnvMokWL+Oyzz1izZs15vca4ceN48cUXSxuqiBxcDXNfAgyIWwPLPwGbHWq0gfrdoV53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PT81JDrZg8vcBjMYuhA918rrms2g6Ggt24/UsKusnsr6loDDtthoB2nxTirrW04bxpniju4SBI3ITgx4YvgzaW7zUlrbzNHqJlravcwYefo8RuejN5/ZF3awqfQ9VzxMf8gcEnViv9XV9DMbRLnA4TJ7RjlcHZOdncd/oCP+l0IhERERERG5YGw2m/9ObfkpVlfTczabjSiH9UMWsxJjyBoVw8xRJwMVwzCobWqjqqGFyvpWqhpaqGpo4XjDye3Khlaq6s3tlnYfTR139ANIj3f6Q6DiwWkMy4zv87vkdYqJdvh7UgULBUPhYOJ8yO6YaygU2R1fCXucJ7ejOseFuno0472IiIiIiIhEFpvNRrLbSbLbydDMsx/b2WOrMyRKdjsZkhEXsvN09QV90w4HNhvkT7S6ChEREREREZGgdmqPrUFB1GvHSprFTEREREREREQkQikYEhERERERERGJUAqGREREREREREQilIIhEREREREREZEIpWBIREREJAIsXbqUQYMGERMTQ3FxMRs2bLC6JBEREQkCCoZEREREwtwrr7zCokWLWLx4MZs3b2bcuHHMmjWLiooKq0sTERERiykYEhEREQlzTz31FHfccQfz589n1KhRPPPMM7jdbp5//nmrSxMRERGLKRgSERERCWOtra1s2rSJmTNn+vfZ7XZmzpzJunXrun1NS0sLdXV1XRYREREJTwqGRERERMJYVVUVXq+XrKysLvuzsrIoKyvr9jVLliwhKSnJvwwYMOBClCoiIiIWUDAkIiIiIl089NBD1NbW+pfDhw9bXZKIiIj0kyirCxARERGR/pOeno7D4aC8vLzL/vLycrKzs7t9jcvlwuVyXYjyRERExGLqMSQiIiISxpxOJxMnTmTlypX+fT6fj5UrVzJ16lQLKxMREZFgoB5DIiIiImFu0aJFzJs3j0mTJjFlyhSefvppPB4P8+fPt7o0ERERsZiCIREREZEwd9NNN1FZWckjjzxCWVkZ48eP55133jltQmoRERGJPBEXDBmGAaDbroqIiAS5zs/qzs9uOT8LFy5k4cKFvXqt2k8iIiKhoTftp4gLhurr6wF021UREZEQUV9fT1JSktVlRDS1n0REREJLIO0nmxFhf4bz+XwcO3aMhIQEbDZbn/7suro6BgwYwOHDh0lMTOzTnx2udM4Cp3PWOzpvgdM5C5zO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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "# Final evaluation\n",
        "results = model.evaluate(X_test, y_test, verbose=0)\n",
        "print(f\"\\nFinal Metrics:\")\n",
        "print(f\"Test Accuracy: {results[1]*100:.2f}%\")\n",
        "print(f\"Top-3 Accuracy: {results[2]*100:.2f}%\")"
      ],
      "metadata": {
        "id": "ddcxnETVAJoX",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "8473336b-33bf-4eb3-d286-d0aa79b7d37f"
      },
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Final Metrics:\n",
            "Test Accuracy: 90.30%\n",
            "Top-3 Accuracy: 99.40%\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "# Save class names for inference\n",
        "np.save('detection.npy', le.classes_)\n",
        "model.save('detectiontest.h5')\n",
        "print(\"\\nTraining complete! Model and class names saved.\")"
      ],
      "metadata": {
        "id": "-VaW2FhR5gbm",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "bd1b77fe-f28e-4d6c-a8b0-887cc39aaa40"
      },
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Training complete! Model and class names saved.\n"
          ]
        }
      ]
    }
  ]
}