Spaces:
Runtime error
Runtime error
File size: 347,358 Bytes
d48d4f3 | 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 | {
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "bQEKXT7Z7T0M"
},
"source": [
"# PyTorch CNN Tutorial - SCR"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oiJA6hRb7fOJ"
},
"source": [
"First of all import all packages needed in this problem."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "gjzSNb_Hw1dB"
},
"outputs": [],
"source": [
"import torch\n",
"import numpy as np\n",
"# import pandas as pd\n",
"from matplotlib import pyplot as plt\n",
"import seaborn as sns\n",
"from torch.utils.data import Dataset, TensorDataset, DataLoader, random_split\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torchvision\n",
"import torchvision.models as models\n",
"from sklearn.metrics import (accuracy_score, confusion_matrix, precision_score,recall_score)\n",
"from torchvision.transforms import ToTensor, Resize, Lambda, RandomHorizontalFlip\n",
"from collections import Counter"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lkYUp8QWn6al"
},
"source": [
"## Load CIFAR10 dataset:\n",
"\n",
"In the first step, load CIFAR10 with torchvision and split it to train, valid and test data. Also in this step, convert each label to onehot vector with lambda function.\n",
"\n",
"At the end, visualize one sample of each class in CIFAR10 dataset randomly."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 315
},
"id": "RP6GtbrAoXm6",
"outputId": "ea2e757c-e285-40f8-8dc3-f323da3b5976"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using cuda device\n",
"\n",
"\n",
"Files already downloaded and verified\n",
"Files already downloaded and verified\n",
"\n",
"\n"
]
},
{
"data": {
"image/png": "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d+5c5PN5bNy4Ec888wyWLVuGt771rUflenJolAuOrrHmgltvvRV/9md/hje84Q04++yz0dDQgIcffhhNTU24/PLLD+q8X3ytL3zhCzjppJNwxhlnIB6P45hjjsEHP/hBeJ6Hf/3Xf8W5556Lv//7v8ftt9+O5cuXY8eOHbj//vsRDofxjW98o6a/qXYkZTj99NORz+exYMECnHfeeSgUCvj973+PdDqNt7zlLVizZs2Yy9XS0oJf/OIXuOyyy3DjjTfib//2b7F06VK0trZi3759eOyxx5BMJnH77bdj6dKlR3ILZBxRrqudt7zlLTjttNNw3nnnobm5GX/4wx+wb98+LFmyBJ/4xCeOyjXe//7341e/+hXuv//+0byQy+Xw+9//Hueffz5CoVDFvx4i8nJQfjn6vve97+H888/HD3/4Q/zmN7/BmWeeiVgshi1btmD9+vX4p3/6Jxx//PEAgL/6q7/CW97yFlxzzTX40pe+hBkzZmDDhg147rnn8N73vhef+9znys5/2WWX4eMf/zg+8IEP4M4770RHRwcA4NOf/jTa29tf1u8q/7soXxxdvu/j29/+Ns4//3zceuut+OlPf4qlS5fi+eefx6OPPop3vetd+H//7/+VHTeWtYl//ud/xrZt2/Czn/0Md9xxB5YvX45Zs2YhlUrhmWeewfPPP4/LL7+8pv/pPBGL8svRNdb88slPfhJ//OMfceedd2LevHk455xzkEqlcNdddyGbzeLd7343LrvssoOu853vfAevec1r8OEPfxg//OEPcdxxx2HLli145JFHRp/LyF8zEak15ZLx5aqrrsINN9yAr371q1i6dCnOO+881NXVYe3ateju7sbpp59e9ku8n/rUp3DPPffg5z//OebPn48zzzwTyWQSd911F2688UZ88YtfVE6RI6ZcMT585StfwVlnnYXvfve7uOeee7By5Up0d3dj7dq1KJVK+Kd/+qfD+i9f5fN5vOc978EHPvABrFixAnPmzEE+n8cjjzyCnTt3Ys6cObjhhhtGf/5/872Xl4/yzdG1du1a/PM//zOmT5+OE088EU1NTdizZw/uvfdeBEGA2267rabjhFmzZmHZsmVYsmQJzj//fEQiEdx1111IJpM499xzD/rlPpGxUt44+l7/+tfjnnvuwfnnn49zzz0X9fX16OjowKc+9alDPsfh7oUJh8P42c9+hgsuuAD/9E//hB/84AdYuXIlnHPYvHkznnrqKdx+++2YN28eveaaNWvwwx/+ENdeey1e97rX4c4778TJJ5885vsw7rkJAEDVf7feeuvoz3/nO99xJ554oqurq3Pt7e3u8ssvdxs2bHDf+ta3yn7WOefOOeccB8Bt3brVfetb33LLly938Xjctbe3u7e+9a1u586dtGz33HOP+5M/+RM3bdo0F4lEXHt7u1u2bJm7+eab3T333HPQz956660OgPvWt751FO/Okenr63PvfOc73Zw5c1wsFnPz5s1zH/rQh1wqlTrovrwYADd79uyDPrv77rsdAHfdddfRa1133XUOgLv77rvdL3/5S7dy5UpXV1fnmpub3eWXX+6efvrpsmOs8x7Jc36prVu3OgDunHPOqVj2X/ziF+6SSy5xnZ2dLhKJuM7OTrdixQp3yy23uHXr1tHvLEeXckHtjCUXOOfct771Lbd06VIXjUbd5MmT3fXXX+96enoOau8vNjw87G6++WY3c+ZMFw6HK7a77du3uz//8z93M2fOdJFIxHV0dLgrrrjCPfTQQ2XXr9Z2q5W9Uj04kjIkk0n3rne9y02bNs1Fo1F3zDHHuH/8x390xWLxkMs2e/Zsx7rnvXv3ultuucUtWbLE1dXVubq6Ojd//nx3+eWXu29/+9tuaGio4nEysSjX1c5I+yqVSu4f//Ef3eLFi10sFnNTp051N910k+vr6ys7hn0PK7+MSKVS7q/+6q/crFmzXDQadXPmzHF//dd/7XK5nNnWRWpF+aW2BgcH3cc//nG3bNkyl0gkXENDg1u8eLG7+eab3ebNmw/62V/96lfu9NNPd42Nja6lpcW95jWvcWvXrjXnP//6r//qTjrpJJdIJEafl5WDRI6E8kVtPfHEE+6yyy5zzc3Nrr6+3q1cudL953/+Z9W1lcNdmygWi+473/mOO++881xbW5uLRCJu2rRpbuXKle62225zGzduPOjnNT6Rl4PyS22NJb8MDw+72267zR133HEuFou5xsZGd+aZZ7of/OAH9Drr1693l156qWtqanL19fVu1apV7r/+67/c97//fQfAffjDH67htxRRLqklq0yHWt7vfve77owzznANDQ0uHo+7JUuWuL/7u79z6XS64s93dXW5G2+80U2ZMsXFYjF37LHHus9//vNux44dDoA7/fTTj8I3k/+NlCtqx5o7WOOOnp4e9/73v9/Nnz/fRaNR19LS4l772te63/zmNxXPVemd9IhCoeC+9KUvuTVr1rj58+e7uro619LS4pYtW+Zuu+0219vbW/G4w7n3IodK+aY2Hn/8cff+97/fnXLKKa6zs9PFYjE3e/Zsd9lll7nf/e53ZT9v5YzD3UMycq5sNuv++q//2s2ZM8dFo1E3e/Zs95GPfISOa0QOlfJG7RQKBfc3f/M3bv78+S4SiZTlhkN5x+vc4e+Fcc65/fv3uw984ANu0aJFLh6Pu+bmZnf88ce7D33oQ27v3r2jP2fdtx//+McuFAq51tbWV/V+NM+5F/33jkVq6G1vexu+853v4O6778bq1atf6eKIiIiIiIiIiIiIyFHyjne8A1/5ylfwox/9CFdfffUrXRwRmeB+9KMf4dprr8U73vEOfPnLX36liyMiIiL/i3ieh9mzZ2Pbtm2vdFFERF6V/Fe6ACIiIiIiIiIiIiIiMv719fVVfGn74x//GF//+tfR0tKCSy+99OUvmIhMWOvWrSv7bP369fjgBz8IAHjLW97ychdJREREREREaij8ShdARERERERERERERETGv02bNmHlypVYtmwZ5s2bBwB49tlnsXHjRoRCIXzlK19BfX39K1xKEZlIVq1ahSlTpuDYY49FU1MTtm7dinXr1iEIAtx8881YtWrVK11EEREREREROYq0YVVERERERERERERERKqaN28ebrrpJtx11124++67kUql0NHRgTVr1uADH/gAVq5c+UoXUUQmmL/6q7/Cr3/9azz66KNIJpNoaGjA2Wefjeuvvx5vfvObX+niiYiIiIiIyFHmOefcK10IERERERERERERERERERERERERERF59fJf6QKIiIiIiIiIiIiIiIiIiIiIiIiIiMirmzasioiIiIiIiIiIiIiIiIiIiIiIiIhITYUP5YeCIMCePXvQ2NgIz/NqXSYROQTOOQwNDWHatGnw/Ymz91z5RGT8UT4RkaNF+UREjgblEhE5WpRPRORoUT4RkaNF+UREjhblExE5WpRPRORoOJxcckgbVvfs2YOZM2celcKJyNG1c+dOzJgx45UuxiFTPhEZv5RPRORoUT4RkaNBuUREjhblExE5WpRPRORoUT4RkaNF+UREjhblExE5Gg4llxzShtXGxkYAwAUrT0Uk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xrHWukHUHGfysdJw2p6XZfJ8LuQb57XqljUmLlYZSmSzvDyFQuX5Zz6bs086zuVKASIVxoHPPbeJHnP7z35knrMhxtvE7q1baSyT4M9uclsLje3t4Wtwj27hfTMA+BF+zZJRB9NZPlao9K5s9HqBPTfes20zjQ1076GxTc/w92InrzyDxs4//3yzPI2NfM0hPcTbdzTG86YzhmhWvm1pbuEHAhjau5fHCikaixl1AMZYKmodB2BwiI9TB4crlyeV4uWcCLZt24qQX95uFp13Fj1m/uwp5jljRp2Ix/kab2CsyQQlPgYpGR1wuMragM3qgMa2XlMs2GP2aJzfO/Z+8UBpjPfTJb6OETHGkgAQifE24wK+NlAoGv2ssX4WCfNYyRh/AEAiZIwnM7xt54yBRl09z6co2uWJOH4PotHK1zTXFicC36s4DxxM8XcXsSpziHCI988hI1Yw3vla2w4KRsrYvp/36QDQleRjm2yOt8OS9Z7UqJ/VakvB2JcRNvbtFI013FiU54xiyVjEhf0OumSsd/WnePv1PF6exhhfd2k01mQAINbKc3HvQB+NpdN8rNnS3ExjqYy9zWvAuAdsDdy3JuATgB/y4VdYAyoYa/MDA/a74uQAX3sZGEjSWDbDx8+ZDB8HplK8PNY6EADs28ffw+w35lFNxh6JklEn4gnepwPA7Jl8PdY31pf6evj3bGpro7F64x0qABSK/D2zb6xHWmPUkJHfAqPjaOzooDEA6Nq/j8Z+99u7aGzy1Mk0Nn0aH4svrLIXZu5SPs+c0z6j7LN0Ngf8cp15zhETe9VWRERERERERERERERERERERERERETGPW1YFRERERERERERERERERERERERERGRmtKGVRERERERERERERERERERERERERERqSltWBURERERERERERERERERERERERERkZrShlUREREREREREREREREREREREREREakpbVgVEREREREREREREREREREREREREZGa0oZVERERERERERERERERERERERERERGpqfDh/HAs6iMaCZV97iFCjwn5XpWzOhpJZ4r8qAI/bu+2XTR2329+TWOnrErTGADMWryUxjyv/L6MKBm3wDn+ParjJ/a8scWs8lQrq/mkgxINFTNZfs0goLGQx/dbl3x7L7YX4vGQcX/GyrrnBxj3/egWZdzwQOrMEdTBwPH6Eo3wPDVlajuNNTXX0VgslqCx1kZ+TgAYGEjy8yb4eS1Hkk+sI63aa9XtoGS0e+NZVROMsY16IeM4I1bX2myeN5fjOSyX4rGODl5Hli5dTGNBYD9nM0rqyJH1Ra88L6iHF5S3m+Z4Bz+o2GSe88df+Vcam9Yep7GWBD9vm/HME+31NFbI8+sBQCHF+7TGBp5PgjZ+3i5jLDVp0iSzPJFElJ93oIfG0mneXjw+JERjI8/TAJBobaGxZO8AjbXUNdBY7/4cP2cPH0+2RO2yNiQaaWw4w3NqcpCfMx/w4X68nl8PAGDd91DlulUoFOxzjnO+78OvNI408mQpMG4UgMA41nfGmD3E5xehMI+ZvWSVLtTqnuuifCy1cNo0GhtI8TrRMzxslqcvyePpGC9sYx3PfQun8rL2DNrlgfG8zPF8iZfVt+ZtdmlMVt9ecjyfHL/sJBo756zzaWxn11azPFM7Wmmsq688F+dyPM9ODB4q/X6wZ/zOsGfMbw/Ex1ZXvKprMpXFI3ycEFSZpTqf17FwlJdnetMUGuvezMcQu7fvN8szUOL1qTfVTWNnnncaL09PnsYS9XwsBACT2vh40fk8X3glnk+tKVLIN/JTlV9jD0eNZUPjogXjxNZMsFSqtu5ktCGS97yJPdVB0ZVQqJC3PWONI5e21zfzxjy10NVHY85o+/EEzxmJhLGuEonRGACUjHUFK29axznHr5nP22PZkrFOaR7n8eOKJT6WLBX59wCAknGsb+VqY53WWlsrGPcnW+B5EQBKRnkiRn0OG+NeGHUgcMZxAPJ5Xt6K84FXgU3bdqGuvnye+8Qzz9NjduzYaZ4zZPSxgZHTd/Ynaax/iOcwL8r72P0pO/d1dPA5Ql2c57C2Zr4uGDbeMbRVWauIlibTWF9vL43t3vwsjW3fuoXGggLP/QDw2osuobHWFj6WzxtznXzBGBP6fIwRjdljKd/n7TubytBY0chDDU38eRWK9pzf6nPi8cp9Tqk4wddOPAe/Qt+2aNFCesyCubPscxqzmoGBfhrLGG3fFfkz94wxsl9tAFnk9d4ZfUhgjCMKMPolI9cAQKnIj/WM8ljvX1PDQzQWrnJ/nDFvGR5M0lg6laKxvDEmGsoZYykjBgAtnZ001j3E82a6j89Bm41xcVuVd03mOzUykyqZM6zxzw/58CusgVrj4CBsr3N4Rj8RBHzsEjL7Jh4rGmXNF+z1rXCEt9FK92U0ZtSVfMhYEzT6ZgCIhPn3tMZ2gbHW6Iw6GvbsrUrGtAW+sd5VMvJU1JgmzJzG16XiIXt80tDE3yclh5I0Zs1BTzvxRBp7butmszzDab7OzdbOC3l7DjXebd+5A42N5e+8Bod4n5bs52sgAJDL8r5pyHi30d3VRWN79+2lsX37+XGptD3njsb5e+ZEA1+LnDd1Lo2Z+0Cq/G1Ma20hZOS3qDHns9a5rTF5tbgz1jHzxlzAymAtjXw8MKXN2L8AYO5rLqSxDR382I0b+Vzxj398mMYeefgRszzzj+P7JJceX76nJQt77vlir87VFxERERERERERERERERERERERERERGTe0YVVERERERERERERERERERERERERERGpKG1ZFRERERERERERERERERERERERERKSmtGFVRERERERERERERERERERERERERERqShtWRURERERERERERERERERERERERESkprRhVUREREREREREREREREREREREREREaip8OD8cjfiIRsr3uBYL/Bgv5JnnbGyJ0Vg4zo9ND4VorFjgx/Xv3Utjf/jNL2kMAE7JZGns2JNX0ljOORorGXuGfd++d8Zp4RmHOutAg2edtEo8yJd4eQo8Bhfw6xnbrat9Q/ubjE21+2Mxn+WYzzq+Bc5D4Cp9O34zqu2w9z2e0latOpPGmptaaKypKU5jdXWNvDABz1EAMNC3j8ZyBZ5UK9+zA8y6UqVReAFva0YLRSngJ25obKCxeCxhlifk8/uXK+ZoLJvnebqY4/e1kC7SWO9e/qwAoJjN0FhTYz2N+Ub/mMvzssaNvAgAnpFQHM1TEzvT3PvrBxGLR8s+f/1VF9BjOqe1m+e85g2X0di/fuUrNPbI5jSNZbLGeMDn9Xr69Nk0BgDpND/WN4Z6zU1N/JyDgzQ25AbM8uwe2EFjba28TTRGjTbRx9vEdI+fEwDamvn3LDp+7J7dfbw8w7xHigQdRmnsnmyowOvP/sEhHkvy2NxFC2ls3z77WQYob1ejsVLlWGB1GhOAQ+Uu0xo/uyqdbGDk7VLA671vntbI28Ycomq2L+bHdGwhw/NQPMT79JMWLTCLk8sO01h3L28vYWMcEQt4PikZ/S8AOMcreNgzHpgxzgpKxnHWKauMB3zriRn1ORHj49tEoo7GOlqt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8ecV8nl5hgf5WAAAhvt5/e4d5OOhlmZeRxpaeBvzjedsLK0diEf4vY3U8wFREOH3LpPL0ZhvTYQOnJlHyDNhn08UuUKuYorN5fg9Dow1QQAIR3k7LOT5/CHq8/ufMPrsgX7e3w8MD9AYAOzcvJvG+vcZa5hNVn7jfV08YTeKorHOHYnxe9AQqaOxjDHfC0r8OQNA0hjP+3xpANE6vm4ar9IfMZGonYvjxlptPs/zQibLY5aCMTYDgEiUlycIKt935+znMd4N9PVW7DMjxXp6TGMiYZ/UWL+LV3iPNGJ42Fgb6O+jsUQ9L2u1tdihIT6nbjK+56JFC2gsTOoKYOdFAOg15upxo4/NG+PkncYaZUcbnz8BQGMLvwfbd2yjseY0z8XhJr4+FG5oprHODnvtM2HkW2tNuWjkVGeMQcKhKq9Rw7xfzXb1V/w8Z7xPnAiSA/0V80kxz8fBDVXyycJZc2jM6gqyxlp4XZy3peHeJI31ZficGQACn48H4sb3DId43fWMgfn6xx4zy7P5+Y00NnfuXBrr6OigsbRxDwarrMV6xpi9IcrvT0M7L0+D0c7SQ7wO5JJ2WVMp3jfks/weTO1oojFrNJmot8dZFZYRRkWjlec1YePdwEQQ8qMIVWgboThvL6WiPSYLRfgcMGe8C80bsaixl8F6bxutMra21oatddyCdVyYV6Q5x84yy7Nt4zYaM26POQ6Lx4w5eZX5ejZv3FuP35+I0Xdb84SCsY+o0jrfiznwuJX/2xr5es7Uzuk0lg3stadUho/R6P2psg9jvMvmU/DD5XWxaLznLxhzUQDIF3l92byJ97/btvC9FbNmz6Gxhkbev4SMvhAAEgm+7tDTy99N7nyet9+WZj5m3759m1me4xbyMcicOXNorLGRz/mixjplztiPBtjro1YeD4d4nooasU3PPkNj23dspzEASKV5+962/Xkae24z3/tw6SVX0tiiRYvN8syaxZ/l3u59FT499JdXE3vVVkRERERERERERERERERERERERERExj1tWBURERERERERERERERERERERERERkZrShlUREREREREREREREREREREREREREakpbVgVEREREREREREREREREREREREREZGa0oZVERERERERERERERERERERERERERGpKW1YFRERERERERERERERERERERERERGRmgofzg8vWL4SiURd2edb1t9Lj8n07rQLEOExB0djpWKRH+cCGotGQjQWlHhZACCI8P29HvgXKeZyNLZz4zM0VsgXzPKcuPpcGps0ay6NlRClsaAuRmO5bNYsTymfprFwjJ+3WOD3J9m1h8YafP48mibPpDEA8DyPxnits7mxHlj1xIf5+QQRBAGCoLytms+myk0OhXidqHStESXwmHlcqUrSMFhltR6udQ8CI1Ys2fkkOZyhsa79PTS2afMWGlt+ysk0tnTZ8WZ56uvraax7Dy9PPs/zyfRpU2jMB693Hq8CAICe7l4aq4vGaezyi19PY8uM+7NvH8+LALBx00Yae34z63P4958ICn4KrkKfEI/zeuSBjwcAIN/F+8oNf+Bjm8mtzTR28oJ5NHZcRzuNPbndHks1NTTSmB/ibX/yDH7NaEsLjbVPnWSWJ97A73uWDxWw5OxTaWxyEy/rvp1DZnkeXsfHqdNmLqSxtpYZNLZtN8992SL/koUSz1EA0NhaPs4ejbXzOnniyafRWMQY7m9+aodZnuEU7xuefOr5ip8Xi1WS5rjnoXJOtMYg9vjEM7p8z8y/POYb42DPumDVsvLc6BvjpWNmzKGxt/yfG2ns9NWnm+UpPMvb2qwO3kbffsuHaazt21+lsf6uLrM8+aJxbx1v30GeHxbwaS2ccc+r9dzGkBqpHG/buSKf14ZDPJ/EI/a4+KRlS2hs9typ5eXI5bFh/SbznONZMQhQLJU/v8Bon6UqT7UuxseVpQKvZNZZgyJ/bkVjzaXo27neD/FcEg7zemSV1TfWeeCMhgRg/oLyOjbi/gd4XhxK8nY9mByksZ7upFmeeH0TjWWLvH02zuygMSu7e44/D1ehnr5YqmCsA1nzb8efZqFolLbaFNvxa7pc5e+SzUzssUnIDyNUIf8m6vjY0GouAFAyFkATfCiPkLHm8N3vfJ3Gerv5+Li3Z4BfEEDPft4318X52DlsjGkceM6cNmOaWZ5pM/n4Y/PGrTRW18xz35RpfK6DKvnWeth5x9tvIc/vQWCsdVlrZE1NDTQGAG1txvzc53Naq6zpjDWmsV97WEuMbBzlTfC12M1btlScRxTnzKHHtDTzZwMAkzv4+kDM5+NKF/TRWMgYR1jrok1NvH8FgJaWNh60xrn1/L3G1EbeN6eMsQIAzJrBxydFo635Hr8/w8PDNBYxxpIAkBzix1od9O4d2/k5U3ws1Z/sp7FTTzvFKAswfyFfy7Em4GFj7NJorK2lMymzPCVjfJLPVR6n5vP2+HW88/0D/17KWpsvFOz3E1njfWhgjQGNv8vkW3nIyCeDg3b7nTRlMo0tOmYRjTW38JzR18vHRJmMsagAIG+8g+7u4WMpqx9dsPAYGms/1W6jhRwfg0xq5bm4cWonjcXqEzSW7krS2K9+9iMaA4D6ML93Q0n+PVI9vB8rGHOofNF+ln19PBe3t7WQc07sfJJJpVGokBOt8UA4YmwugT0/bmzifX6ezCkBey0jFOLz31Tafh/gG31Tylib98L8uLYO3qclC/b8Kxbh44XA43UtFPC77kf53NWrNnmF0TcYdT+b5+etr+PfMWPNk6qsq/vGGMQZc/DBFH8mL+zZRWOZvD0+aW7k87M86ZP9mm12eXkUcnnkK6wFpNPGOztjTRWAOXEcGODvJtNDPLZ7J3/nmzD6u0KVfG/Nh9Ipfg+aGvhxp53K3z12d9vvUrZu3UZjc+bxvWxxY19Z3Mj/2SrPMmesg1t7D8PGWuX+ffto7I6tm2ms2RgPAcCpp6yisb17+D6R3bv4O9+f/vuPaWzubD5+BYD+fr4XprGuPNcczh4q/YVVERERERERERERERERERERERERERGpKW1YFRERERERERERERERERERERERERGRmtKGVRERERERERERERERERERERERERERqSltWBURERERERERERERERERERERERERkZrShlUREREREREREREREREREREREREREakpbVgVEREREREREREREREREREREREREZGa0oZVERERERERERERERERERERERERERGpqfDh/HDL1Hmoq28o+3yux4/Z8sSD5jkz3S/wYFCgIS/Ei+4FjsZKhTy/ngvxGIBYmMeDEj+vddogz2/e7s3Pm+XJplM0tmL1ahqbuuB4GvOKWRrzA+PeAUgPZGisL8ePDTL8e/Tv2kVj3YP9NLYgVl5PX6y5tYPGHHj9Map6DbHy8HJOZEEQ0Jhz9ncOAmsPPn96ns/Pa13TLo9d1lKJx61vEfJ5QrHKMzw8bJZn194uGuvu7qGxufNm0NjsOVNpLF/l/uzr4eXZt3c3jQ0N9dFYY/NcGgsZz+OFpzbSGACEozEay6d4P/atb/2Exq58Q47GZs6aZJZnztx5NLZt6+aK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Op4vPD6lQ6rAxzx7d/A5UsiYJwLA1q1baKyvr4fGLrx8NY21zSyvbyMK4POOpo7JNAYAeWONKGPMvfJ53i+U8jx/ebDrlm+MlXzShhx425kIMrkUSii/n0HA7/Fgiq8NAPbYxTP6l2yR55OS0ZhaO/n8/557H6UxAHji8cdpbN8enjPyxnzb9/h39ENV1u+M9Qivns9LShE+JxlK82eZ2bTLLE96kLfDyfN4+w6MVwJGd4NQiH9Hax0DAHyf5+JUhtetwFgDCUeMwoar9KsRYxxO1o9KfpXB9DjX0toO3y+/Z1nr/htraQAA47mGQ/z5TG7lazLtxrp9dy8fR6BK+00b33NwH59Tp1LDNHbS8cfRWKvxPQCgta2Fxk44biGNdbTzd0Jbtm3nx4XttZPhDM8nm3fsoLHOSTzfdrTwMWFLA/8ens9zJgDkcryskQae35wxrklneA6LDdjvJFrCvLzRusr9Yy48sfNJLpsDKqxZDA3xda/MMG9LABB4/Nk1GOPr1hZel3xjfQTGWDaw1vsBFHJ8HlXM87ZmzvCN+X/InKcDOeO++8b7tnCMr9OaS11Fu8/PZ3iu3rv9eRrbtpOPe7q7+Pv7TIh/j6gxPgOA1vQUGosU+DNprOP5LWLkPr/KWKJgrBHVJyp/z/wEX4sNgqDi2ljRaKMJci9GtBl9bFOTsV6R52OFgvGuOJuxcob9t+NOWL6cxlakeduuL/I5X3QOr9cZ394a5G/m7z3i9/yOxhoHemls6yUX0diF8RazPANLj6GxZ7v20lgxz5/X7p4kjW3dY8yzh6rkPiOcsuanRudQKhp9Q5U/S2i9K6aTvir9zXjX+/QzSFfYCxbbz8f6Jes+AYgZc5qWMI95RWPdxZjj5o33r7mcPT4JCjxvlozxszXuKRr9UpUhMvKDfL3a6+H9erqdv785/rUX09iiU08yyzNrIX9H32OMMwaSgzRmzaXTxnsA49UfACAU4mNfa37aneTr1db4ddasWWZ5ps6awc9b4UVOPp/HN7/xXfOcI/QXVkVEREREREREREREREREREREREREpKa0YVVERERERERERERERERERERERERERGpKG1ZFRERERERERERERERERERERERERKSmtGFVRERERERERERERERERERERERERERqShtWRURERERERERERERERERERERERESkprRh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vH0XjSUaKs9xAaBvH2+H27duo7Fk0l7PmTGV3/c7f3MHjS05kb/bKRo5IVRv9w2Ne/bS2EknGNcs8HYxZ/oMGhsc4n2DtS4HAHMm87HvvOlTaGz9lm00lkvzOjmYscd2YaPfbSL3vWCsb08EXq4Ar8L7fms8HzL6bQDwYsZ6bJS/uw0bYxA/a/QTdfyc6RVTaQwAgpjxLtm4ZrjR2Bu1M0lj0Y323jrrHU0Q4YkzFOLlCXa+QGN7vvevZnl23/5LHqywjj/CGXvHQsZej8DYO1dK2GO7TIiPM/KdfDxZSPF1oOjmbTS28f5HzPLwTAzsrLCWW7BfqB5Ef2FVRERERERERERERERERERERERERERqShtWRURERERERERERERERERERERERESkprRhVUREREREREREREREREREREREREREakobVkVEREREREREREREREREREREREREpKa0YVVERERERERERERERERERERERERERGpKG1ZFRERERERERERERERERERERERERKSmwofzw4vaM2hoKN/j2j9coMfs3D9knjOV4ceGSlkayw3uo7FGDNPY3Jn8K09vmUljALBwRjuNNTVEaWwwOUBjhWyJxlwLPycAlAJ+bCIR5wc6vk852ZKnsYFBfl8BYNPGLhrLG3Wkub6OxiLOo7He3bwOPPz7O2kMAPr37qaxE049jcaaJvE6kHe8bpW8kFkeIKARdgf4nZkY0uksisXy733lZX9Cj1m4aJF5zp/dfjuNffazn6OxxsZWGrvm2rfQ2JTpnTQWidvPPBHn9T4ajRhH8nZfdPyocMguj3NFGjvn7LNorGtPD4099NBDNDZ39lSzPLEYz3919fU0lsuleSyToTF+V4FnNjxhRIH/74v/j8b279tPY2ecfTaNnf2ac2msLmTVD2Aozb9nqlg5lsvy/nYi8PwQPL+8juezvF6HA6PBABjI9tJYIp6gsXwpR2OhiNWv8745GuX54kB5JtPY8CBvo0P9vH6m87yX8Y2+GQDCcf49Qx4fF8abm2nsmOWn8wvGnjfLs2c/z0XTJvH25NfzOrK/J0lj8+cvo7FCmo+VAGDntu00FvJ5fe6cxcd9x556HI0N9PSZ5QmMsd+WZyq3kUKIl3MimD5tKkIV+szuXl53I76dT+D4OC9kNCcX8HxeLPFzAkZ5qrRfZ+TGSDxGY5kU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",
"text/plain": [
"<Figure size 3500x2500 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# number of mini-batch size:\n",
"Batch_size=32\n",
"\n",
"# Define input image size\n",
"img_size=(32,32,3)\n",
"\n",
"# Selecting the appropriate training device:\n",
"device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
"print(f\"Using {device} device\\n\\n\")\n",
"\n",
"# Define a train and test Transform to resize image and convert to tensor:\n",
"train_transforms = torchvision.transforms.transforms.Compose(\n",
" [Resize([32, 32]),\n",
" RandomHorizontalFlip(),\n",
" ToTensor()])\n",
"\n",
"test_transforms = torchvision.transforms.transforms.Compose(\n",
" [Resize([32, 32]),\n",
" ToTensor()])\n",
"# load Cifar10 dataset with torchvision: (Use lambda to convert each label to onehot vector)\n",
"dataset = torchvision.datasets.CIFAR10(root='./data', train=True, transform=train_transforms, download=True,\n",
" target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n",
"\n",
"# Split dataset to train_set and validation_set (85%-15%):\n",
"train_size = int(0.85 * len(dataset.data))\n",
"valid_size = len(dataset.data) - train_size\n",
"train_set, val_set = random_split(dataset, [train_size, valid_size])\n",
"\n",
"# Use Dataloader to ordination train_set and validation_set according to it's mini-batch size:\n",
"train_loader = torch.utils.data.DataLoader(train_set, batch_size=Batch_size, shuffle=True )\n",
"validate_loader = torch.utils.data.DataLoader(val_set, batch_size=Batch_size, shuffle=True)\n",
"\n",
"# load Cifar10 Test dataset with torchvision and load them with dataloader:\n",
"Test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False, transform=test_transforms, download=True,\n",
" target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n",
"test_loader = torch.utils.data.DataLoader(Test_dataset,batch_size=Batch_size, shuffle=True)\n",
"\n",
"# define a convert function to convert each onehot vector to specific label of that class.\n",
"def convert(vector):\n",
" label=torch.where(vector==1)[0].item()\n",
" Classes= {0:'airplane',1:'automobile',2:'bird',3:'cat',4:'deer',5:'dog',6:'frog',7:'horse',8:'ship',9:'truck'} \n",
" return Classes[label]\n",
"print(\"\\n\")\n",
"\n",
"# Divide data according to the their classes(separate each class and their data):\n",
"sample_Indexs=[]\n",
"for i in range(10) :sample_Indexs.append([] )\n",
"for num in range(0,len(dataset.targets)):\n",
" sample_Indexs[dataset.targets[num]].append(num)\n",
"\n",
"# select a random data of each class and plot it with it's label.\n",
"fig=plt.figure(figsize=(35,25),facecolor='w')\n",
"for i in range(10):\n",
" rand_num= np.random.randint(1,50,1).item()\n",
" img, label = dataset[sample_Indexs[i][rand_num]]\n",
" ax = plt.subplot(1,10, i+1)\n",
" plt.imshow(img.permute(1,2,0))\n",
" ax.set_title(f\"Label = {convert(label)}\", fontsize=15)\n",
" ax.get_xaxis().set_visible(False)\n",
" ax.get_yaxis().set_visible(False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-c3jim8lyxlZ"
},
"source": [
"## Implementation of a CNN based Image Classifier from Scratch:\n",
"\n",
"First of all, Define a train and test loop for our training."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "-gvYX3uov-5H"
},
"outputs": [],
"source": [
"def train_loop(dataloader, model, loss_fn, optimizer):\n",
" model.train()\n",
" size = len(dataloader.dataset)\n",
" for batch, (img, y) in enumerate(dataloader):\n",
" img=img.to(device)\n",
" y=y.to(device)\n",
" # Compute prediction and loss\n",
" pred = model(img)\n",
" loss = loss_fn(pred, y)\n",
"\n",
" # Backpropagation\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
"\n",
" if batch % 100 == 0:\n",
" loss, current = loss.item(), batch * len(img)\n",
" print(f\"loss: {loss:>7f} [{current:>5d}/{size:>5d}]\")\n",
"\n",
"\n",
"def test_loop(dataloader, model, loss_fn):\n",
" model.eval()\n",
" size = len(dataloader.dataset)\n",
" num_batches = len(dataloader)\n",
" valid_loss, correct = 0, 0\n",
"\n",
" with torch.no_grad():\n",
" for img, y in dataloader:\n",
" img=img.to(device)\n",
" y=y.to(device)\n",
" pred = model(img)\n",
" valid_loss += loss_fn(pred, y).item()\n",
" correct += (pred.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n",
"\n",
" valid_loss /= num_batches\n",
" correct /= size\n",
" print(f\"Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {valid_loss:>8f} \\n\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WRmVuDyXULgU"
},
"source": [
"### Secondly, Define a CNN model:\n",
"\n",
"According to the Torch API we have: [Source](https://pytorch.org/docs/stable/nn.html)\n",
"\n",
"- torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)\n",
"\n",
"- torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)\n",
"\n",
"- torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)\n",
"\n",
"- torch.nn.Dropout2d(p=0.5, inplace=False)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "tNc4KrlDoX2G"
},
"outputs": [],
"source": [
"# Creating the model\n",
"class ConvNet(nn.Module):\n",
" def __init__(self):\n",
" super(ConvNet, self).__init__()\n",
" self.model = nn.Sequential(\n",
" #Input = 3 x 32 x 32, Output = 32 x 32 x 32\n",
" nn.Conv2d(in_channels = 3, out_channels = 32, kernel_size = 3, padding = 'same'), \n",
" nn.ReLU(),\n",
" nn.Dropout2d(0.05),\n",
" #Input = 32 x 32 x 32, Output = 32 x 16 x 16\n",
" nn.MaxPool2d(kernel_size=2),\n",
" nn.BatchNorm2d(32),\n",
" \n",
" #Input = 32 x 16 x 16, Output = 64 x 16 x 16\n",
" nn.Conv2d(in_channels = 32, out_channels = 64, kernel_size = 3, padding = 1),\n",
" nn.ReLU(),\n",
" #Input = 64 x 16 x 16, Output = 64 x 8 x 8\n",
" nn.MaxPool2d(kernel_size=2),\n",
" \n",
" #Input = 64 x 8 x 8, Output = 64 x 8 x 8\n",
" nn.Conv2d(in_channels = 64, out_channels = 64, kernel_size = 3, padding = 1),\n",
" nn.BatchNorm2d(64),\n",
" nn.ReLU(),\n",
" #Input = 64 x 8 x 8, Output = 64 x 4 x 4\n",
" nn.MaxPool2d(kernel_size=2),\n",
" \n",
" nn.Flatten(),\n",
" nn.BatchNorm1d(64*4*4),\n",
" nn.Linear(64*4*4, 128),\n",
" nn.ReLU(),\n",
" nn.Dropout(0.1),\n",
" nn.Linear(128, 32),\n",
" nn.ReLU(),\n",
" nn.Linear(32, 10)\n",
" )\n",
" \n",
"\n",
" def forward(self, x):\n",
" x = self.model(x)\n",
" x = F.softmax(x, dim=1)\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9zvtFQ2uv1P7",
"outputId": "98bb2658-3efd-49a0-cc4e-2adf1f78a2f3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Network Architecture:\n",
"ConvNet(\n",
" (model): Sequential(\n",
" (0): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1), padding=same)\n",
" (1): ReLU()\n",
" (2): Dropout2d(p=0.05, inplace=False)\n",
" (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
" (4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (5): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (6): ReLU()\n",
" (7): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
" (8): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
" (9): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (10): ReLU()\n",
" (11): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
" (12): Flatten(start_dim=1, end_dim=-1)\n",
" (13): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (14): Linear(in_features=1024, out_features=128, bias=True)\n",
" (15): ReLU()\n",
" (16): Dropout(p=0.1, inplace=False)\n",
" (17): Linear(in_features=128, out_features=32, bias=True)\n",
" (18): ReLU()\n",
" (19): Linear(in_features=32, out_features=10, bias=True)\n",
" )\n",
")\n"
]
}
],
"source": [
"CNN_model = ConvNet().to(device)\n",
"\n",
"for param in CNN_model.parameters():\n",
" param.requires_grad = True\n",
"CNN_model.train() \n",
"print(\"Network Architecture:\")\n",
"print(CNN_model)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "pUx4gNWcwKcd",
"outputId": "170acda5-a494-40fa-eaca-709d66bc0bfd"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1\n",
"-------------------------------\n",
"loss: 2.302272 [ 0/42500]\n",
"loss: 2.219692 [ 3200/42500]\n",
"loss: 2.149276 [ 6400/42500]\n",
"loss: 2.187615 [ 9600/42500]\n",
"loss: 2.091666 [12800/42500]\n",
"loss: 2.019790 [16000/42500]\n",
"loss: 2.123006 [19200/42500]\n",
"loss: 2.125691 [22400/42500]\n",
"loss: 2.040968 [25600/42500]\n",
"loss: 2.073212 [28800/42500]\n",
"loss: 2.027201 [32000/42500]\n",
"loss: 2.023804 [35200/42500]\n",
"loss: 2.117084 [38400/42500]\n",
"loss: 1.960984 [41600/42500]\n",
"Error: \n",
" Accuracy: 45.8%, Avg loss: 2.016824 \n",
"\n",
"Epoch 2\n",
"-------------------------------\n",
"loss: 2.111652 [ 0/42500]\n",
"loss: 1.910316 [ 3200/42500]\n",
"loss: 2.048353 [ 6400/42500]\n",
"loss: 2.028718 [ 9600/42500]\n",
"loss: 2.021635 [12800/42500]\n",
"loss: 2.013133 [16000/42500]\n",
"loss: 2.057028 [19200/42500]\n",
"loss: 2.031589 [22400/42500]\n",
"loss: 1.955248 [25600/42500]\n",
"loss: 1.870217 [28800/42500]\n",
"loss: 1.897251 [32000/42500]\n",
"loss: 1.944971 [35200/42500]\n",
"loss: 1.867519 [38400/42500]\n",
"loss: 1.865793 [41600/42500]\n",
"Error: \n",
" Accuracy: 50.8%, Avg loss: 1.974163 \n",
"\n",
"Epoch 3\n",
"-------------------------------\n",
"loss: 2.100747 [ 0/42500]\n",
"loss: 2.107758 [ 3200/42500]\n",
"loss: 1.999364 [ 6400/42500]\n",
"loss: 1.983569 [ 9600/42500]\n",
"loss: 1.972469 [12800/42500]\n",
"loss: 1.927096 [16000/42500]\n",
"loss: 1.996785 [19200/42500]\n",
"loss: 1.987665 [22400/42500]\n",
"loss: 1.944978 [25600/42500]\n",
"loss: 2.080106 [28800/42500]\n",
"loss: 1.964132 [32000/42500]\n",
"loss: 1.935995 [35200/42500]\n",
"loss: 1.884246 [38400/42500]\n",
"loss: 1.951888 [41600/42500]\n",
"Error: \n",
" Accuracy: 51.3%, Avg loss: 1.971815 \n",
"\n",
"Epoch 4\n",
"-------------------------------\n",
"loss: 2.049090 [ 0/42500]\n",
"loss: 1.915015 [ 3200/42500]\n",
"loss: 2.004883 [ 6400/42500]\n",
"loss: 1.921412 [ 9600/42500]\n",
"loss: 1.912034 [12800/42500]\n",
"loss: 2.026011 [16000/42500]\n",
"loss: 2.000444 [19200/42500]\n",
"loss: 1.908592 [22400/42500]\n",
"loss: 1.950819 [25600/42500]\n",
"loss: 1.994440 [28800/42500]\n",
"loss: 2.037249 [32000/42500]\n",
"loss: 1.888280 [35200/42500]\n",
"loss: 2.053716 [38400/42500]\n",
"loss: 1.947366 [41600/42500]\n",
"Error: \n",
" Accuracy: 52.8%, Avg loss: 1.964727 \n",
"\n",
"Epoch 5\n",
"-------------------------------\n",
"loss: 1.909482 [ 0/42500]\n",
"loss: 2.028015 [ 3200/42500]\n",
"loss: 1.939408 [ 6400/42500]\n",
"loss: 1.939403 [ 9600/42500]\n",
"loss: 1.954373 [12800/42500]\n",
"loss: 2.026207 [16000/42500]\n",
"loss: 1.855179 [19200/42500]\n",
"loss: 2.066285 [22400/42500]\n",
"loss: 1.922667 [25600/42500]\n",
"loss: 2.099559 [28800/42500]\n",
"loss: 1.879844 [32000/42500]\n",
"loss: 2.039129 [35200/42500]\n",
"loss: 2.016253 [38400/42500]\n",
"loss: 2.056733 [41600/42500]\n",
"Error: \n",
" Accuracy: 53.7%, Avg loss: 1.970545 \n",
"\n",
"Done!\n"
]
}
],
"source": [
"# Defining the model hyper parameters:\n",
"lr = 2e-4\n",
"epochs = 5\n",
"weight_decay = 0.01\n",
"\n",
"loss_fn = nn.CrossEntropyLoss()\n",
"optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, CNN_model.parameters()), lr=lr, weight_decay = weight_decay)\n",
"\n",
"for t in range(epochs):\n",
" print(f\"Epoch {t+1}\\n-------------------------------\")\n",
" train_loop(train_loader, CNN_model, loss_fn, optimizer)\n",
" test_loop(validate_loader, CNN_model, loss_fn)\n",
"print(\"Done!\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "75V3yNo2zkOC"
},
"source": [
"### Evaluation:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vEK3PF9XSfAQ",
"outputId": "0d6d3a1d-31a5-4af8-99d2-cdafc937ce9c"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluation results for train data:\n",
"Error: \n",
" Accuracy: 55.8%, Avg loss: 1.955975 \n",
"\n",
"Evaluation results for validate data:\n",
"Error: \n",
" Accuracy: 53.7%, Avg loss: 1.970314 \n",
"\n",
"Evaluation results for test data:\n",
"Error: \n",
" Accuracy: 54.8%, Avg loss: 1.964239 \n",
"\n"
]
}
],
"source": [
"CNN_model.eval()\n",
"loss_fn_eval = nn.CrossEntropyLoss()\n",
"# CNN evaluation\n",
"print(\"Evaluation results for train data:\")\n",
"test_loop(train_loader, CNN_model, loss_fn_eval)\n",
"print(\"Evaluation results for validate data:\")\n",
"test_loop(validate_loader, CNN_model, loss_fn_eval)\n",
"print(\"Evaluation results for test data:\")\n",
"test_loop(test_loader, CNN_model, loss_fn_eval)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-MpXbzHVySyl",
"outputId": "1453df95-0e9e-4f9e-92a7-a9a71b043eea"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy for class: airplane is 74.7 %\n",
"Accuracy for class: automobile is 75.9 %\n",
"Accuracy for class: bird is 0.0 %\n",
"Accuracy for class: cat is 0.0 %\n",
"Accuracy for class: deer is 61.8 %\n",
"Accuracy for class: dog is 0.0 %\n",
"Accuracy for class: frog is 88.8 %\n",
"Accuracy for class: horse is 80.7 %\n",
"Accuracy for class: ship is 82.5 %\n",
"Accuracy for class: truck is 83.6 %\n"
]
}
],
"source": [
"Cifar10_classes = ('airplane','automobile','bird','cat',\n",
" 'deer','dog','frog','horse','ship','truck')\n",
"# prepare to count predictions for each class\n",
"correct_pred = {classname: 0 for classname in Cifar10_classes}\n",
"total_pred = {classname: 0 for classname in Cifar10_classes}\n",
"\n",
"# again no gradients needed\n",
"with torch.no_grad():\n",
" for data in test_loader:\n",
" img, y = data\n",
" img=img.to(device)\n",
" y=y.to(device)\n",
" labels = y.argmax(1)\n",
" pred = CNN_model(img)\n",
" predictions = pred.argmax(1)\n",
" # collect the correct predictions for each class\n",
" for label, prediction in zip(labels, predictions):\n",
" if label == prediction:\n",
" correct_pred[Cifar10_classes[label]] += 1\n",
" total_pred[Cifar10_classes[label]] += 1\n",
"\n",
"\n",
"# print accuracy for each class\n",
"for classname, correct_count in correct_pred.items():\n",
" accuracy = 100 * float(correct_count) / total_pred[classname]\n",
" print(f'Accuracy for class: {classname:5s} is {accuracy:.1f} %')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9Qs6lWVnzpRK"
},
"source": [
"## Transfer Learning:\n",
"\n",
"We can use PyTorch for loading pre-trained model, Also we can use Timm ([Medium](https://towardsdatascience.com/getting-started-with-pytorch-image-models-timm-a-practitioners-guide-4e77b4bf9055)) library to load a variety of pre-trained models trained on diferent datasets.(PyTorch image models: [github](https://github.com/huggingface/pytorch-image-models))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ydWyJk-J_jjV",
"outputId": "162a9e1d-f208-4a94-d8bc-80bdd49a65ab"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Files already downloaded and verified\n",
"Files already downloaded and verified\n"
]
}
],
"source": [
"# Define input image size\n",
"img_size=(224,224,3)\n",
"\n",
"# Define a train and test Transform to resize image and convert to tensor:\n",
"train_transforms = torchvision.transforms.transforms.Compose(\n",
" [Resize([224, 224]),\n",
" RandomHorizontalFlip(),\n",
" ToTensor()])\n",
"\n",
"test_transforms = torchvision.transforms.transforms.Compose(\n",
" [Resize([224, 224]),\n",
" ToTensor()])\n",
"# load Cifar10 dataset with torchvision: (Use lambda to convert each label to onehot vector)\n",
"dataset = torchvision.datasets.CIFAR10(root='./data', train=True, transform=train_transforms, download=True,\n",
" target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n",
"\n",
"# Split dataset to train_set and validation_set (85%-15%):\n",
"train_size = int(0.85 * len(dataset.data))\n",
"valid_size = len(dataset.data) - train_size\n",
"train_set, val_set = random_split(dataset, [train_size, valid_size])\n",
"\n",
"# Use Dataloader to ordination train_set and validation_set according to it's mini-batch size:\n",
"train_loader = torch.utils.data.DataLoader(train_set, batch_size=Batch_size, shuffle=True )\n",
"validate_loader = torch.utils.data.DataLoader(val_set, batch_size=Batch_size, shuffle=True)\n",
"\n",
"# load Cifar10 Test dataset with torchvision and load them with dataloader:\n",
"Test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False, transform=test_transforms, download=True,\n",
" target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n",
"test_loader = torch.utils.data.DataLoader(Test_dataset,batch_size=Batch_size, shuffle=True)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"id": "4gI8YdsTzxvM"
},
"outputs": [],
"source": [
"# Load pre-trained ResNet50 on imageNet\n",
"based_model = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1).to(device)\n",
"# Freeze all parameters \n",
"for param in based_model.parameters():\n",
" param.requires_grad = False \n",
"# Modified FC layers\n",
"based_model.fc = nn.Sequential(\n",
" nn.BatchNorm1d(based_model.fc.in_features),\n",
" nn.Linear(based_model.fc.in_features, 128),\n",
" nn.ReLU(),\n",
" nn.Dropout(0.25),\n",
" nn.Linear(128, 10),\n",
" nn.Softmax(dim=1)).to(device)\n",
"# Set all parameters in FC layer requires grad to update it's weights.\n",
"for param in based_model.fc.parameters():\n",
" param.requires_grad = True"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3WU15K2Az8O4"
},
"source": [
"### Train the Fully Connected layers"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JnyrJ4yNz63T",
"outputId": "410a4084-5ba2-4814-fcad-04c65f66567a"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1\n",
"-------------------------------\n",
"loss: 2.304326 [ 0/42500]\n",
"loss: 2.042099 [ 3200/42500]\n",
"loss: 1.832334 [ 6400/42500]\n",
"loss: 1.895695 [ 9600/42500]\n",
"loss: 1.841786 [12800/42500]\n",
"loss: 1.794591 [16000/42500]\n",
"loss: 1.678760 [19200/42500]\n",
"loss: 1.785957 [22400/42500]\n",
"loss: 1.831340 [25600/42500]\n",
"loss: 1.788245 [28800/42500]\n",
"loss: 1.747087 [32000/42500]\n",
"loss: 1.806434 [35200/42500]\n",
"loss: 1.766329 [38400/42500]\n",
"loss: 1.779386 [41600/42500]\n",
"Error: \n",
" Accuracy: 79.7%, Avg loss: 1.714312 \n",
"\n",
"Epoch 2\n",
"-------------------------------\n",
"loss: 1.745071 [ 0/42500]\n",
"loss: 1.619226 [ 3200/42500]\n",
"loss: 1.729790 [ 6400/42500]\n",
"loss: 1.778083 [ 9600/42500]\n",
"loss: 1.761370 [12800/42500]\n",
"loss: 1.755188 [16000/42500]\n",
"loss: 1.824540 [19200/42500]\n",
"loss: 1.704269 [22400/42500]\n",
"loss: 1.784478 [25600/42500]\n",
"loss: 1.724730 [28800/42500]\n",
"loss: 1.751894 [32000/42500]\n",
"loss: 1.666143 [35200/42500]\n",
"loss: 1.673313 [38400/42500]\n",
"loss: 1.701102 [41600/42500]\n",
"Error: \n",
" Accuracy: 80.1%, Avg loss: 1.710152 \n",
"\n",
"Done!\n"
]
}
],
"source": [
"# Defining the model hyper parameters:\n",
"lr = 1e-4\n",
"epochs = 2\n",
"weight_decay = 0.01\n",
"\n",
"loss_fn = nn.CrossEntropyLoss()\n",
"optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, based_model.parameters()), lr=lr, weight_decay = weight_decay)\n",
"\n",
"for t in range(epochs):\n",
" print(f\"Epoch {t+1}\\n-------------------------------\")\n",
" train_loop(train_loader, based_model, loss_fn, optimizer)\n",
" test_loop(validate_loader, based_model, loss_fn)\n",
"print(\"Done!\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CeAsMevZ2XoL"
},
"source": [
"### Evaluating:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FwLzmDZY0IUn",
"outputId": "8bd940cd-eb6a-4c32-e4c8-b67c6060ca04"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluation results for train data:\n",
"Error: \n",
" Accuracy: 80.2%, Avg loss: 1.707139 \n",
"\n",
"Evaluation results for validate data:\n",
"Error: \n",
" Accuracy: 80.1%, Avg loss: 1.711155 \n",
"\n",
"Evaluation results for test data:\n",
"Error: \n",
" Accuracy: 79.4%, Avg loss: 1.713852 \n",
"\n"
]
}
],
"source": [
"# compute model accuracy and Ave loss on train, valid and test data.\n",
"based_model.eval()\n",
"# Define cross entropy loss function\n",
"loss_fn_eval = nn.CrossEntropyLoss()\n",
"# based_model evaluation\n",
"print(\"Evaluation results for train data:\")\n",
"test_loop(train_loader, based_model, loss_fn_eval)\n",
"print(\"Evaluation results for validate data:\")\n",
"test_loop(validate_loader, based_model, loss_fn_eval)\n",
"print(\"Evaluation results for test data:\")\n",
"test_loop(test_loader, based_model, loss_fn_eval)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "oIkISnBi0Pc2",
"outputId": "fdf6e2d8-de24-4f90-9919-b56208c3a08e"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwkAAAOECAYAAADqtX2KAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD9CklEQVR4nOzdd1hT1x8G8DfsDSoCbhDQKop7Au5q3XtrcW9xW/3VBa66V91779Y9UHFUHCgoouJgCCoCKrJUZu7vD2raW1AxBi6B9/M8eR5y7knyXpJAvjnnnisTBEEAERERERHR3zSkDkBERERERHkLiwQiIiIiIhJhkUBERERERCIsEoiIiIiISIRFAhERERERibBIICIiIiIiERYJREREREQkwiKBiIiIiIhEWCQQEREREZEIiwSiAuTp06do3rw5TE1NIZPJcOTIEZXe/7NnzyCTybBt2zaV3q86a9SoERo1aqSy+0tMTMSgQYNgZWUFmUyGsWPHquy+iYiIPmGRQJTLgoODMXToUJQtWxZ6enowMTGBk5MTVqxYgY8fP+boY7u6uiIgIABz587Fzp07UbNmzRx9vNzUr18/yGQymJiYZPl7fPr0KWQyGWQyGRYvXvzN9x8REYFZs2bh7t27KkirvHnz5mHbtm0YPnw4du7cib59++bI48yaNUvx+/rSRVUF0KlTpzBr1qxs92/UqJEig4aGBkxMTFC+fHn07dsX586d+64sa9asYaFLRAWeltQBiAqSkydPomvXrtDV1cXPP/+MSpUqISUlBVevXsWkSZPw4MEDbNiwIUce++PHj7h+/Tp+/fVXjBo1Kkceo0yZMvj48SO0tbVz5P6/RktLCx8+fMDx48fRrVs30bbdu3dDT08PSUlJSt13REQE3N3dYW1tjapVq2b7dp6enko93ud4eXmhbt26mDlzpkrv9786deoEOzs7xfXExEQMHz4cHTt2RKdOnRTtlpaWKnm8U6dOYfXq1d9UKJQsWRLz588HALx//x5BQUH4448/sGvXLnTr1g27du1S6rW4Zs0amJubo1+/ft98WyKi/IJFAlEuCQ0NRY8ePVCmTBl4eXmhWLFiim0jR45EUFAQTp48mWOP//r1awCAmZlZjj2GTCaDnp5ejt3/1+jq6sLJyQl79+7NVCTs2bMHrVu3xuHDh3Mly4cPH2BgYAAdHR2V3m90dDQqVqyosvtLS0uDXC7PlNPR0RGOjo6K62/evMHw4cPh6OiIPn36qOzxv4epqWmmLL/99hvc3NywZs0aWFtbY8GCBRKlIyJSb5xuRJRLFi5ciMTERGzevFlUIHxiZ2eHMWPGKK6npaVh9uzZsLW1ha6uLqytrfG///0PycnJottZW1ujTZs2uHr1KmrXrg09PT2ULVsWO3bsUPSZNWsWypQpAwCYNGkSZDIZrK2tAWRM0/n08799mm7yb+fOnYOzszPMzMxgZGSE8uXL43//+59i++eOSfDy8oKLiwsMDQ1hZmaG9u3bIzAwMMvHCwoKQr9+/WBmZgZTU1P0798fHz58+Pwv9j969eqF06dPIzY2VtF269YtPH36FL169crUPyYmBhMnTkTlypVhZGQEExMTtGzZEv7+/oo+ly5dQq1atQAA/fv3V0xz+bSfjRo1QqVKleDr64sGDRrAwMBA8Xv57zEJrq6u0NPTy7T/LVq0QKFChRAREZHlfl26dAkymQyhoaE4efKkIsOzZ88AZBQPAwcOhKWlJfT09FClShVs375ddB+fnp/Fixdj+fLlitfWw4cPs/W7zcqjR4/QpUsXFC5cGHp6eqhZsyaOHTsm6pOamgp3d3fY29tDT08PRYoUgbOzs2JaUL9+/bB69WoAEE1lUoampiZWrlyJihUr4vfff0dcXJxi29atW9GkSRNYWFhAV1cXFStWxNq1a0W3t7a2xoMHD3D58uVMU6qy81ohIsovOJJAlEuOHz+OsmXLon79+tnqP2jQIGzfvh1dunTBhAkTcPPmTcyfPx+BgYH4888/RX2DgoLQpUsXDBw4EK6urtiyZQv69euHGjVqwMHBAZ06dYKZmRnGjRuHnj17olWrVjAyMvqm/A8ePECbNm3g6OgIDw8P6OrqIigoCN7e3l+83fnz59GyZUuULVsWs2bNwsePH7Fq1So4OTnBz88vU4HSrVs32NjYYP78+fDz88OmTZtgYWGR7W+EO3XqhGHDhuGPP/7AgAEDAGSMIvzwww+oXr16pv4hISE4cuQIunbtChsbG0RFRWH9+vVo2LAhHj58iOLFi6NChQrw8PDAjBkzMGTIELi4uACA6Ll8+/YtWrZsiR49eqBPnz6fnYazYsUKeHl5wdXVFdevX4empibWr18PT09P7Ny5E8WLF8/ydhUqVMDOnTsxbtw4lCxZEhMmTAAAFC1aFB8/fkSjRo0QFBSEUaNGwcbGBgcPHkS/fv0QGxsrKj6BjA/LSUlJGDJkCHR1dVG4cOFs/W7/68GDB3ByckKJEiUwZcoUGBoa4sCBA+jQoQMOHz6Mjh07AsgoAOfPn49Bgwahdu3aiI+Px+3bt+Hn54cff/wRQ4cORUREBM6dO4edO3cqleXfNDU10bNnT0yfPh1Xr15F69atAQBr166Fg4MD2rVrBy0tLRw/fhwjRoyAXC7HyJEjAQDLly/H6NGjYWRkhF9//RXAP1OqsvNaISLKNwQiynFxcXECAKF9+/bZ6n/37l0BgDBo0CBR+8SJEwUAgpeXl6KtTJkyAgDhypUrirbo6GhBV1dXmDBhgqItNDRUACAsWrRIdJ+urq5CmTJlMmWYOXOm8O8/EcuWLRMACK9fv/5s7k+PsXXrVkVb1apVBQsLC+Ht27eKNn9/f0FDQ0P4+eefMz3egAEDRPfZsWNHoUiRIp99zH/vh6GhoSAIgtClSxehadOmgiAIQnp6umBlZSW4u7tn+TtISkoS0tPTM+2Hrq6u4OHhoWi7detWpn37pGHDhgIAYd26dVlua9iwoajt7NmzAgBhzpw5QkhIiGBkZCR06NDhq/soCBnPd+vWrUVty5cvFwAIu3btUrSlpKQI9erVE4yMjIT4+HjFfgEQTExMhOjo6Gw93ievX78WAAgzZ85UtDVt2lSoXLmykJSUpGiTy+VC/fr1BXt7e0VblSpVMmX+r5EjRwrf8i+pYcOGgoODw2e3//nnnwIAYcWKFYq2Dx8+ZOrXokULoWzZsqI2BweHTM+ZIGT/tUJElB9wuhFRLoiPjwcAGBsbZ6v/qVOnAADjx48XtX/69vi/xy5UrFhR8e02kPHtcvny5RESEqJ05v/6dCzD0aNHIZfLs3WbV69e4e7du+jXr5/o22pHR0f8+OOPiv38t2HDhomuu7i44O3bt4rfYXb06tULly5dQmRkJLy8vBAZGZnlVCMg4zgGDY2MP4Xp6el4+/atYiqVn59fth9TV1cX/fv3z1bf5s2bY+jQofDw8ECnTp2gp6eH9evXZ/ux/uvUqVOwsrJCz549FW3a2tpwc3NDYmIiLl++LOrfuXNnFC1aVOnHAzKm3nh5eaFbt25ISEjAmzdv8ObNG7x9+xYtWrTA06dP8fLlSwAZr50HDx7g6dOn3/WY3+LTSFlCQoKiTV9fX/FzXFwc3rx5g4YNGyIkJEQ0LelzVPVaISJSBywSiHKBiYkJAPEHli8JCwuDhoaGaHUZALCysoKZmRnCwsJE7aVLl850H4UKFcK7d++UTJxZ9+7d4eTkhEGDBsHS0hI9evTAgQMHvlgwfMpZvnz5TNsqVKiAN2/e4P3796L2/+5LoUKFAOCb9qVVq1YwNjbG/v37sXv3btSqVSvT7/ITuVyOZcuWwd7eHrq6ujA3N0fRokVx7969bH1w/KREiRLfdJDy4sWLUbhwYdy9excrV66EhYVFtm/7X2FhYbC3t1d8gP2kQoUKiu3/ZmNjo/RjfRIUFARBEDB9+nQULVpUdPm08lJ0dDQAwMPDA7GxsShXrhwqV66MSZMm4d69e9+d4UsSExMBiAtzb29vNGvWTHFsTNGiRRXHjmTnuVbVa4WISB2wSCDKBSYmJihevDju37//TbfL7sGbmpqaWbYLgqD0Y6Snp4uu6+vr48qVKzh//jz69u2Le/fuoXv37vjxxx8z9f0e37Mvn+jq6qJTp07Yvn07/vzzz8+OIgAZ5x0YP348GjRogF27duHs2bM4d+4cHBwcsj1iAoi/pc6OO3fuKD5EBwQEfNNtv9e3Zs3Kp9/NxIkTce7cuSwvnwqzBg0aIDg4GFu2bEGlSpWwadMmVK9eHZs2bfruHJ/z6b32KUNwcDCaNm2KN2/eYOnSpTh58iTOnTuHcePGifbnS1T1WiEiUgc8cJkol7Rp0wYbNmzA9evXUa9evS/2LVOmDORyOZ4+far4NhgAoqKiEBsbq1ipSBUKFSokWgnok/9++wwAGhoaaNq0KZo2bYqlS5di3rx5+PXXX3Hx4kU0a9Ysy/0AgMePH2fa9ujRI5ibm8PQ0PD7dyILvXr1wpYtW6ChoYEePXp8tt+hQ4fQuHFjbN68WdQeGxsLc3NzxXVlV9vJyvv379G/f39UrFgR9evXx8KFC9GxY0fFCkrfqkyZMrh37x7kcrloNOHRo0eK7apWtmxZABnTmrJ67v+rcOHC6N+/P/r374/ExEQ0aNAAs2bNwqBBgwCo9vebnp6OPXv2wMDAAM7OzgAyFg5ITk7GsWPHRKNVFy9ezHT7z2XJ7muFiCg/4EgCUS6ZPHkyDA0NMWjQIERFRWXaHhwcjBUrVgDImC4DZKy08m9Lly4FAMVqLapga2uLuLg40fSPV69eZVpBKSYmJtNtP51U7L/Lsn5SrFgxVK1aFdu3bxcVIvfv34enp6diP3NC48aNMXv2bPz++++wsrL6bD9NTc1MoxQHDx5UzKf/5FMxk1VB9a1++eUXhIeHY/v27Vi6dCmsra3h6ur62d/j17Rq1QqRkZHYv3+/oi0tLQ2rVq2CkZERGjZs+N2Z/8vCwgKNGjXC+vXr8erVq0zbP52XA8hY+enfjIyMYGdnJ9pfVf1+09PT4ebmhsDAQLi5uSmm+n0aofr3cx0XF4etW7dmug9DQ8Msc2T3tUJElB9wJIEol9ja2mLPnj3o3r07KlSoIDrj8rVr1xRLVgJAlSpV4Orqig0bNiA2NhYNGzaEj48Ptm/fjg4dOqBx48Yqy9WjRw/88ssv6NixI9zc3PDhwwesXbsW5cqVEx2M6eHhgStXrqB169YoU6YMoqOjsWbNGpQsWVLxbW1WFi1ahJYtW6JevXoYOHCgYglUU1PTbzq77rfS0NDAtGnTvtqvTZs28PDwQP/+/VG/fn0EBARg9+7dim/KP7G1tYWZmRnWrVsHY2NjGBoaok6dOt88v9/Lywtr1qzBzJkzFUuybt26FY0aNcL06dOxcOHCb7o/ABgyZAjWr1+Pfv36wdfXF9bW1jh06BC8vb2xfPnybB8w/61Wr14NZ2dnVK5cGYMHD0bZsmURFRWF69ev48WLF4rzB1SsWBGNGjVCjRo1ULhwYdy+fRuHDh0Snfm7Ro0aAAA3Nze0aNECmpqaXxwBAjI+5O/atQtAxsnrPp1xOTg4GD169MDs2bMVfZs3bw4dHR20bdsWQ4cORWJiIjZu3AgLC4tMRU6NGjWwdu1azJkzB3Z2drCwsECTJk2y/VohIsoXpFxaiaggevLkiTB48GDB2tpa0NHREYyNjQUnJydh1apVoqUkU1NTBXd3d8HGxkbQ1tYWSpUqJUydOlXURxCyXhJTEDIvvfm5JVAFQRA8PT2FSpUqCTo6OkL58uWFXbt2ZVoC9cKFC0L79u2F4sWLCzo6OkLx4sWFnj17Ck+ePMn0GP9dJvT8+fOCk5OToK+vL5iYmAht27YVHj58KOrz6fH+u8Tq1q1bBQBCaGjoZ3+ngiBeAvVzPrcE6oQJE4RixYoJ+vr6gpOTk3D9+vUsly49evSoULFiRUFLS0u0n19ajvPf9xMfHy+UKVNGqF69upCamirqN27cOEFDQ0O4fv36F/fhc893VFSU0L9/f8Hc3FzQ0dERKleunOl5+NJr4GuyWgJVEAQhODhY+PnnnwUrKytBW1tbKFGihNCmTRvh0KFDij5z5swRateuLZiZmQn6+vrCDz/8IMydO1dISUlR9ElLSxNGjx4tFC1aVJDJZF9dDvXTsrOfLkZGRoK9vb3Qp08fwdPTM8vbHDt2THB0dBT09PQEa2trYcGCBcKWLVsyvb4iIyOF1q1bC8bGxgIAxfP3La8VIiJ1JxOEbzgakIiIiIiI8j0ek0BERERERCIsEoiIiIiISIRFAhERERERibBIICIiIiIiERYJREREREQkwiKBiIiIiIhEWCQQEREREZFInjnj8sdLW6SOIInCLd2ljiAJDZlM6giSSE1PkzqCJGQF9PlOl8uljiCJgvlsF1w2psWkjiCJ1x9jpY4giXeJQVJHyFLqmxCpI3yWtrl6npWdIwlERERERCTCIoGIiIiIiETyzHQjIiIiIiKlyNOlTpDvcCSBiIiIiIhEWCQQEREREZEIpxsRERERkXoTCuZqcjmJIwlERERERCTCIoGIiIiIiEQ43YiIiIiI1FsBPXllTuJIAhERERERibBIICIiIiIike+abpSSkoLQ0FDY2tpCS4szl4iIiIgo9wlc3UjllBpJ+PDhAwYOHAgDAwM4ODggPDwcADB69Gj89ttvKg1IRERERES5S6kiYerUqfD398elS5egp6enaG/WrBn279+vsnBERERERJT7lJojdOTIEezfvx9169aFTCZTtDs4OCA4OFhl4YiIiIiIvoqrG6mcUiMJr1+/hoWFRab29+/fi4oGIiIiIiJSP0oVCTVr1sTJkycV1z8VBps2bUK9evVUk4yIiIiIiCSh1HSjefPmoWXLlnj48CHS0tKwYsUKPHz4ENeuXcPly5dVnZGIiIiI6PO4upHKKTWS4OzsjLt37yItLQ2VK1eGp6cnLCwscP36ddSoUUPVGYmIiIiIKBcpfXIDW1tbbNy4UZVZiIiIiIgoD1C6SJDL5QgKCkJ0dDTk/zmivEGDBt8djIiIiIgoW+TpUifId5QqEm7cuIFevXohLCwMgiCItslkMqSn84kiIiIiIlJXShUJw4YNU6xwVKxYMS57SkRERESUjyhVJDx9+hSHDh2CnZ2dqvMQEREREX0brm6kckqtblSnTh0EBQWpOgsREREREeUBSo0kjB49GhMmTEBkZCQqV64MbW1t0XZHR0eVhCMiIiIiotynVJHQuXNnAMCAAQMUbTKZDIIg8MBlIiIiIspdck43UjWlioTQ0FBV5yAiIiIiojxCqSKhTJkyqs5BRERERER5hNInUwOAhw8fIjw8HCkpKaL2du3afVcoIiIiIqLsEri6kcopVSSEhISgY8eOCAgIUByLAEBxvgQek0BEREREpL6UWgJ1zJgxsLGxQXR0NAwMDPDgwQNcuXIFNWvWxKVLl1QckYiIiIiIcpNSRcL169fh4eEBc3NzaGhoQENDA87Ozpg/fz7c3NxUnfGbpcvlWH30Clr9bx3qjFqCNr+ux4aT3ooRDwAQBAFrjv2FZpN+R51RSzB02T6ERcUotr98E4dZO06J7mPNsb+QmqY+oyROTrVx6NBmhIT44OPHMLRt21y03cLCHBs2LEZIiA/evn2Eo0e3w9bWWpqwKjRx4ghc+esoIqPu49mz29i3fwPs7cuK+qxcNQ8B9y/jzdtHeBbmi/0HNqJcOVuJEquGs3Md/PnHVjwLvY2U5Bdo165Fpj4zZ0xE2DNfxMUG4fTpvbCzs5EgqWo5O9fBH4e3IDTkNpKTnqNdW/F+t2//E06e2I2Il/eQnPQcjo4VJUqa81yc6+DIn9sQ/swXaSkvs3wN5HeTJo1EaspLLFnsLnWUXJWf99vQ0AD/mzMeF/2O4174Vew7uRmVq4rfx26/DMXV+2dwL/wqth1ajTJlS0mUVjUGDOqFqzdOICziLsIi7uLshYNo9mMDUZ9atavh6MmdeBF1D2ERd3Hy7B7o6elKlDgPkMvz7kVNKVUkpKenw9jYGABgbm6OiIgIABkHND9+/Fh16ZS09cxNHLx8F1N6/og/Zg3CmE4Nse2sD/Ze9FX02Xb2JvZ4+eLX3i2wc0pf6OtqY8TKA0hOTQMAPIt8C7lcwLQ+LXB45kBM7NYEh67cxaojl6XarW9maGiAgIBAjB07PcvtBw5shI1NaXTtOgh167ZCePhLnDq1GwYG+rmcVLWcXepgw/qdaNyoI9q27QttbS0cO75DtF937gRg2NBJqF6tGTq0/xkyGXDs+A5oaCj1lsgTDA0NcO/eQ4wZMy3L7RMnjMDIkf0xavRUODu3xYf3H3DixC7o6qr3PxVDA33cCwjEmLFZ77ehoQG8r/ng12nzcjlZ7vv0Ghg95lepo0iiZo0qGDyoD+7deyh1lFyV3/d77vJpcGpYB5NGzkCbhj3gfekmth1eA0urogCAwaNd8fPgHpg5cT66/tQPHz4kYcv+VdDR1ZE4ufIiXkbCfcYiNHZpjyYNOuCvK9exe/86/FDBHkBGgXDozy24eOEqmjXqjKYNO2Lj+l2Qy4Wv3DNR9il1TEKlSpXg7+8PGxsb1KlTBwsXLoSOjg42bNiAsmXLfv0Ocph/yEs0qmqHBpUzvhkuYW6KM7cCcT/0FYCMUYTdF25jcKt6aFw14w03u38bNJ24ChfvPsFPtSrCqVJZOFX6Z19KFjXDs8gYHLxyB+O7NMn9nVKCp+cleHpeynKbnZ0N6tSpjurVmyEw8CkAwM3tVzx7dhvdurXHtm37cjGpanVo7yq6PnTIRISF+6Fatcrw9vYBAGzdslexPTz8BTzcl+CmzxmUKVMSoaHhuZpXVc6evYizZy9+dvvo0QMx/7eVOH7cEwDQf8BYvHh+B+3btcCBg8dyK6bKnfW8hLOfeZ0DwJ49fwAAypQpmUuJpHPm7EWc+cJrID8zNDTA9h2/Y9jwyfjfVOlHtHNLft9vXT1dNG/TBCN+noDb1+8AAFYt2oDGLVzQs38XLJ+/Fq5De2LN0s24cCbjS7zJI2fg+kNP/NiyEU4e8ZQyvtLOnPYSXZ/jvhQDBvZCzVpV8SjwKeb+9ivWr9uO5UvXK/oEPeXy9KRaSn1tOm3aNMj/Hj7x8PBAaGgoXFxccOrUKaxcuVKlAZVRpWwJ3HwUppg+9Ph5NO4EvVB86H/5Jg5v4t+jTgVrxW2M9XVR2aY4/EMiPnu/iR+TYarm37J/ovv3NyxJScmKNkEQkJKSgvr1a0oVK0eYmGSMer17F5vldgMDffTt2xWhoeF48eJVLibLPTY2pVGsmCW8LvylaIuPT4CPz13UqVtDwmREqrFq5TycPnUBXl5/fb1zPpLf91tLUxNaWlpIThKvopiclIwadaqiVJkSsLA0x/UrPoptiQnv4e93H1VrVc7tuDlCQ0MDnbq0hoGhAW753IF50cKoVbsqXr9+i7PnD+BxyA2cOLMHdesV8L/lgjzvXtSUUiMJLVr8M8/Vzs4Ojx49QkxMDAoVKqRY4ehLkpOTkZycLGqTp6RCV0dbmTiZDPipLt4nJaPDzI3QlGkgXZBjVPsGaF3HAQDwJj4RAFDExFB0u8ImBngb9z7L+wyPfod9F30xrktjlWSU2uPHwQgPf4HZs3/BqFFT8f79R7i5DUTJksVhZWUhdTyVkclkWLhoBq5du4WHD5+Itg0e0gdz5kyFkZEhHj8ORts2fZCamipR0pxlaZkxLB8V/UbUHh39GlZ/byNSV926tUO1apVQt15rqaPkqoKw3+/ff4Cfjz9GTBiE4CehePM6Bm06tUDVmpURFvoC5hZFAABvXr8V3e7N6xgU/XubuqroUA5nLxyEnp4u3id+QN+ew/H4URBq1qoKAJgy1Q3Tf/0NAfcC0aNXRxw5sRP1a7dESHCYtMEp31DZBOzChQtnq0AAgPnz58PU1FR0WbTnlKqiwNM3EKd8HmL+wLbYO60fZvdrjR3nfHDseoBS9xf1LgEjVx7AjzV+QGeXqirLKaW0tDT06DEUdnY2ePUqADExj9CgQT2cOXMxX81pXLZ8NipWLA9X19GZtu3fdxT167VG8x+7ISgoBDt3rVb7+flEBU3JksWxdIkHfnYdnenLp/ysIO33pJEzIJMBV++fwf2X1/Dz4B448cdZCGp8QGh2PH0Sigb126FZo87YsmkP1mxYhPI/2EFDI+Oz1rYt+7Bn12EE3HuIX6fMRdDTEPTp21Xi1JSfZHskoVOnTtm+0z/++OOL26dOnYrx48eL2uQ39n6m97dbdvgS+reoi59qZax+YF+iKF69jceW0zfQrl5lmJsYAQDexr9HUVMjxe1i4j+gXCnxt+jRsQkYvHQvqtiWwPQ+P6ksY15w58591K3bCiYmxtDR0cabNzG4cuUIfH2VK6bymiVL3dGyZRM0/7EbIl5GZtoeH5+A+PgEBAc/g4/PHbyM8Ee7di1wUI3n539OVNRrAIClhTkiI6MV7RYWReF/74FUsYi+W/XqlWFpWRQ+N88o2rS0tODiUhcjRvSDoZGNYnpsflKQ9vv5s5fo034o9A30YGRsiNdRb7F84zw8D3uJN9EZIwjmRYvgddQ/ownmRQsj8P6Tz92lWkhNTUVoSMaogP/dB6hWozKGjXDFsiUZxyE8fhQk6v/4cTBKliqW6znzDLn6rD6pLrJdJJiamqrsQXV1dTN9Y/tRRVONACApJVVRaX+ioSGD/O8lUEuYm8LcxBA+j8LwQylLABnHGwSERqBrw6qK20S9yygQKpaxgrtrq0z3mV/ExycAAGxtrVG9uiPc3ZdInOj7LVnqjnbtWuCnFj0QFvbiq/1lMhlkMpniWI38JjQ0HK9eRaFxE2f4/70CirGxEWrXrooNG3ZInI5IeV5eV1G1mngxiU0bl+Lx42AsWrw633xQ/q+CuN8fPyTh44ckmJgaw7lxPSxyX4nnYS8RHfUG9VxqKYoCQyNDVKleCXu3HpY4sWppaGhAR0cH4WEvEBERCbty4iWs7exscN5TfVZgpLwv20XC1q1bczKHSjVwtMOmU9dgVdgEtsXM8fh5FHadv4X29R0BZHwg7N20JjaeuobSFoVQwtwMq4/+haJmRmhctRyAjAJh0NK9KF7YBOM6N8a7hA+K+zf/1+hDXmZoaCA674G1dSk4OlbEu3exeP48Ap06tcLr1zF4/vwlKlX6AYsXz8Tx4564cEG9D4Bbtnw2unVrj+7dBiMx8b1iPn5cXDySkpJhbV0KXbq0xfkLV/DmdQxKlLDChInD8fFj0hdXB8rrDA0NYPef57uKY0XE/P18r1q1GVOnuCEoKBTPQp9j1qyJiHgVhaPHzkoXWgW+9jovVMgMpUoVR/FiGV8IfDofRlTUa8UIS35haGggOveFjXVpVKnigJiYd3j+/POLMqizxMT3ePBAvPT2+/cf8Pbtu0zt+UlB2m/nxnUhk8kQGhSG0jal8MssN4Q8fYbDezNGfbev34vh4wfiWchzvAh/ibFThiM68jXOnb4kbfDvMGPWRJw/dxnPn0fA2NgQXbq2g7NLHXRu3x8AsGr5Jkz9dQzuBzxCwL1A9OzdEfblysK1zyiJk1N+otSBy59ER0crzotQvnx5WFjkjQNep/RohtVH/8L8PZ6ISfiAoqZG6OxSFUPbOCn69GtRBx9TUjF711kkfEhCNbuSWOPWDbraGb+SG4HP8Dz6HZ5Hv0OLKWtE9393/S+5uj/Kql7dEZ6e+xXXFy6cAQDYufMghgyZCCsrCyxYMB0Wf09B2b37D8yfL/3qVN9ryJC+AICz/9p3IGMp1F27DiEpORn1nWph5Mj+MCtkiujoN/C+6oOmTTrj9X8OflMnNWpUwflzBxXXFy+aBQDYseMABg0ej8VL1sDQ0ABrVi+AmZkJvK/dQtu2fdR+PnONGo445/nPfi9aNBMAsGPnQQwePB5t2vyITRuXKrbv3pXxfp49ZynmzFmWu2FzWM0aVXDh/CHF9SWLZwEAtu84gIGDxkmUiuj7GJsYYcKvo2BV3AKxsfHwPOGFpXNXI+3vk5tuXLUd+gZ6mL30fzAxMYbvzbsY2N0NKckpX7nnvMu8aBGs3bAIllYWiI9PwIP7j9C5fX9cuugNAFi3Zhv09HQx77dfYVbIFA8CHqFTO1c8U9MlvFVCjVcRyqtkwr9PQ5xN8fHxGDlyJPbt24f09Iw3qaamJrp3747Vq1crNTXp46Ut33yb/KBwy/x3dszs0MjmQe75TWp6mtQRJJHdRQ3ym/R8OOUjOwrms11w2ZgWzHnwrz/GSh1BEu8Sg77eSQLJgXl3JoBuBfVcGVOp1Y0GDx6Mmzdv4sSJE4iNjUVsbCxOnDiB27dvY+jQoarOSEREREREuUip6UYnTpzA2bNn4ezsrGhr0aIFNm7ciJ9+yl8rABERERFRHldAR25zklIjCUWKFMlySpGpqSkKFSr03aGIiIiIiEg6ShUJ06ZNw/jx4xEZ+c/a85GRkZg0aRKmT5+usnBERERERJT7lJputHbtWgQFBaF06dIoXbo0ACA8PBy6urp4/fo11q9fr+jr5+enmqRERERERFnh6kYqp1SR0KFDBxXHICIiIiKivOKbi4T09HQ0btwYjo6OMDMzy4FIREREREQkpW8uEjQ1NdG8eXMEBgaySCAiIiIi6XF1I5VT6sDlSpUqISQkRNVZiIiIiIgoD1CqSJgzZw4mTpyIEydO4NWrV4iPjxddiIiIiIhIfSl14HKrVq0AAO3atYNMJlO0C4IAmUyG9PR01aQjIiIiIvoKQeBnT1VTqki4ePGiqnMQEREREVEeoVSR0LBhQ1XnICIiIiKiPCLbRcK9e/dQqVIlaGho4N69e1/s6+jo+N3BiIiIiIiyhSdTU7lsFwlVq1ZFZGQkLCwsULVqVchkMgiCkKkfj0kgIiIiIlJv2S4SQkNDUbRoUcXPRERERESUP2W7SChTpkymnx8+fIjw8HCkpKQotslkMlFfIiIiIqIcxZOpqZxSBy6HhISgY8eOCAgIEE07+rQcKqcbERERERGpL6VOpjZmzBjY2NggOjoaBgYGuH//Pq5cuYKaNWvi0qVLKo5IRERERES5SamRhOvXr8PLywvm5ubQ0NCApqYmnJ2dMX/+fLi5ueHOnTuqzklERERElDWubqRySo0kpKenw9jYGABgbm6OiIgIABnHKjx+/Fh16YiIiIiIKNcpNZJQqVIl+Pv7w8bGBnXq1MHChQuho6ODDRs2oGzZsqrOSEREREREuUipImHatGl4//49AMDDwwNt2rSBi4sLihQpgv3796s0IBERERHRF8m5aI6qKVUktGjRQvGznZ0dHj16hJiYGBQqVEixwhEREREREaknpYqErBQuXFhVd0VERERERBJSWZFARERERCQJrm6kckqtbkRERERERPkXiwQiIiIiIhLhdCMiIiIiUm9yTjdSNY4kEBERERGRCIsEIiIiIiIS4XQjIiIiIlJvXN1I5TiSQEREREREInlmJKFoq9lSR5BE7K1NUkeQhFH1flJHoFwkFwSpIxBRDnme+FrqCJIoaWQudQSiHJVnigQiIiIiIqVwdSOVU3q60V9//YU+ffqgXr16ePnyJQBg586duHr1qsrCERERERFR7lOqSDh8+DBatGgBfX193LlzB8nJyQCAuLg4zJs3T6UBiYiIiIgodylVJMyZMwfr1q3Dxo0boa2trWh3cnKCn5+fysIREREREX2VXJ53L2pKqSLh8ePHaNCgQaZ2U1NTxMbGfm8mIiIiIiKSkFJFgpWVFYKCgjK1X716FWXLlv3uUEREREREJB2lVjcaPHgwxowZgy1btkAmkyEiIgLXr1/HxIkTMX36dFVnJCIiIiL6LEFIlzpCvqPUSMKUKVPQq1cvNG3aFImJiWjQoAEGDRqEoUOHYvTo0arOSERERESU76Wnp2P69OmwsbGBvr4+bG1tMXv2bAj/Ot+QIAiYMWMGihUrBn19fTRr1gxPnz4V3U9MTAx69+4NExMTmJmZYeDAgUhMTPymLEoVCTKZDL/++itiYmJw//593LhxA69fv8bs2QXzhGhERERERN9rwYIFWLt2LX7//XcEBgZiwYIFWLhwIVatWqXos3DhQqxcuRLr1q3DzZs3YWhoiBYtWiApKUnRp3fv3njw4AHOnTuHEydO4MqVKxgyZMg3ZZEJQt44FaqRgY3UESTx1meD1BEkwTMuFyx54o8M5RqZ1AEoV2lpFszzshbUMy4/fe0rdYQsfby0ReoIn6XfaEC2+7Zp0waWlpbYvHmzoq1z587Q19fHrl27IAgCihcvjgkTJmDixIkAMk5BYGlpiW3btqFHjx4IDAxExYoVcevW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uBwTk7/mRBIRERFRHsbVjVROqSJh+fLlKo5BRERERER5hdKrGxERERERUf6k9JIE6enpOHLkCAIDAwEADg4OaNeuHTQ11fvEW0RERESkZvL5iVGloFSREBQUhFatWuHly5coXz7jDL7z589HqVKlcPLkSdja2qo0JBERERER5R6lVjdyc3ODra0tnj9/Dj8/P/j5+SE8PBw2NjZwc3NTdUYiIiIiIspFSo0kXL58GTdu3EDhwoUVbUWKFMFvv/0GJycnlYUjIiIiIvoqTjdSOaVGEnR1dZGQkJCpPTExETo6Ot8dioiIiIiIpKNUkdCmTRsMGTIEN2/ehCAIEAQBN27cwLBhw9CuXTtVZyQiIiIiolykVJGwcuVK2Nraol69etDT04Oenh6cnJxgZ2fHcygQERERUe4ShLx7UVNKHZNgZmaGo0ePIigoSLEEaoUKFWBnZ6fScERERERElPuUGknw8PDAhw8fYGdnh7Zt26Jt27aws7PDx48f4eHhoeqMRERERESUi5QqEtzd3ZGYmJip/cOHD3B3d//uUERERERE2SaX592LmlKqSBAEATKZLFO7v7+/aFlUIiIiIiJSP990TEKhQoUgk8kgk8lQrlw5UaGQnp6OxMREDBs2TOUhiYiIiIgo93xTkbB8+XIIgoABAwbA3d0dpqamim06OjqwtrZGvXr1VB6SiIiIiOiz1HhaT171TUWCq6srAMDGxgb169eHtrZ2joQiIiIiIiLpKLUEqo2NDV69evXZ7aVLl1Y6EBERERERSUupIsHa2jrLA5c/SU9PVzoQEREREdE3ETjdSNWUKhLu3Lkjup6amoo7d+5g6dKlmDt3rkqCERERERGRNJQqEqpUqZKprWbNmihevDgWLVqETp06fXcwIiIiIiKShlJFwueUL18et27dUuVdEhERERF9GVc3UjmlioT4+HjRdUEQ8OrVK8yaNQv29vYqCUZERERERNJQqkgwMzPLdOCyIAgoVaoU9u3bp5JgREREREQkDaWKhIsXL4qua2hooGjRorCzs4OWlkpnMBERERERfZkgSJ0g31HqE33Dhg0BAA8fPkR4eDhSUlLw7t07PHnyBADQrl071SUkIiIiIqJcpVSREBISgk6dOuHevXuQyWQQ/q7ePk1B4nkSiIiIiIjUl4YyNxozZgysra0RHR0NAwMD3L9/H1euXEHN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586DGDx4AgDA1bUbJk0aiRIliuHJk2DMnr0UJ06o/u9YbsrL+52bS6ACQKtWzTB3zhTY2dkg9NlzrFi+AZu37MnVDEDeXQL1/dzsL3Of2wx/3SF1BKVku0hYuXIlhgwZAj09PaxcufKLfd3c3L45SE4XCXmVlOdJkJIqiwR1ktvnScgrcvM8CXlJbp4nIS/JzfMk5CW5dZ4Eyhtyu0jIK1gkfDt1LRKyPd1o2bJl6N27N/T09LBs2bLP9pPJZEoVCURERERESsnBpfQLqmwXCaGhoVn+/GkgIsuDQImIiIiISO0ovaTQ5s2bUalSJejp6UFPTw+VKlXCpk2bVJmNiIiIiIgkoNTqRjNmzMDSpUsxevRo1KtXDwBw/fp1jBs3DuHh4fDwyL8nISMiIiKiPIarG6mcUkXC2rVrsXHjRvTs2VPR1q5dOzg6OmL06NEsEoiIiIiI1JhS041SU1NRs2bNTO01atRAWlrad4ciIiIiIiLpKFUk9O3bF2vXrs3UvmHDBvTu3fu7QxERERERZZtcnncvairb043Gjx+v+Fkmk2HTpk3w9PRE3bp1AQA3b95EeHg4fv45765TS0REREREX5ftIuHOnTui6zVq1AAABAcHAwDMzc1hbm6OBw8eqDAeERERERHltmwXCRcvXszJHEREREREyuHqRiqn9HkSiIiIiIgof2KRQEREREREIkqdJ4GIiIiIKM8Q1HcVobyKIwlERERERCTCIoGIiIiIiEQ43YiIiIiI1BtXN1I5jiQQEREREZEIiwQiIiIiIhLhdCMiIiIiUmuCnKsbqRpHEoiIiIiISIRFAhERERERiXC6ERERERGpN65upHIcSSAiIiIiIhEWCUREREREJMLpRkRERESk3jjdSOU4kkBERERERCIsEoiIiIiISITTjYiIiIhIvQk8mZqqcSSBiIiIiIhEWCQQEREREZEIpxsRERERkXrj6kYqx5EEIiIiIiISYZFAREREREQieWa6UfT7WKkjSEJDJpM6giRKul+WOoIkno90lDqCJEqvCZA6giSqFi4rdQRJRCbFSB1BErIC+vdcEArmNI+C+nznVQKnG6kcRxKIiIiIiEiERQIREREREYnkmelGRERERERK4XQjleNIAhERERERibBIICIiIiIiEU43IiIiIiL1JpdLnSDf4UgCERERERGJsEggIiIiIiIR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7du3o1ChQgCAd+/eoX///nBxcVF9SiIiIiKiz/j2Bf3pa5Q6cHnJkiWYP3++okAAgEKFCmHOnDlYsmSJysIREREREVHuU6pIiI+Px+vXrzO1v379GgkJCd8dioiIiIiIpKPU6kYdO3ZE//79sWTJEtSuXRsAcPPmTUyaNAmdOnVSaUAiIiIioi/h6kaqp1SRsG7dOkycOBG9evVCampqxh1paWHgwIFYtGiRSgMSEREREVHuUqpIMDAwwJo1a7Bo0SIEBwcDAGxtbWFoaKjScERERERElPuUKhI+MTQ0hKOjo6qyEBERERF9M7nA6UaqptSBy0RERERElH+xSCAiIiIiIpHvmm5ERERERCQ1gdONVI4jCUREREREJMIigYiIiIiIRDjdiIiIiIjUmiBInSD/4UgCERERERGJsEggIiIiIiIRTjciIiIiIrXGk6mpHkcSiIiIiIhIhEUCERERERGJcLoREREREak1nkxN9TiSQEREREREIiwSiIiIiIhIhNONiIiIiEit8WRqqseRBCIiIiIiEmGRQEREREREIpxuRERERERqjSdTUz2OJBARERERkQiLBCIiIiIiEskz043S5elSR5BEQT0Y/31qstQRJFHG2ELqCJKwGrxL6giSiNk/WuoIkijcfZXUESSRlJ4qdQTKRZzckrfwZGqqx5EEIiIiIiISYZFAREREREQieWa6ERERERGRMri6kepxJIGIiIiIiERYJBARERERkQinGxERERGRWiuoq0XmJI4kEBERERGRCIsEIiIiIiIS4XQjIiIiIlJrXN1I9TiSQEREREREIiwSiIiIiIhIhNONiIiIiEitCZxupHIcSSAiIiIiIhEWCUREREREJMLpRkRERESk1uRSB8iHOJJAREREREQiLBKIiIiIiEiE042IiIiISK0J4OpGqsaRBCIiIiIiEmGRQEREREREIpxuRERERERqTS5InSD/4UgCERERERGJsEggIiIiIiIRTjciIiIiIrUm5+pGKseRBCIiIiIiEmGRQEREREREIpxuRERERERqjSdTUz2OJBARERERkYhSIwmFChWCTJa5YpPJZNDT04OdnR369euH/v37f3dAIiIiIiLKXUoVCTNmzMDcuXPRsmVL1K5dGwDg4+ODM2fOYOTIkQgNDcXw4cORlpaGwYMHqzQwEREREdG/yaUOkA8pVSRc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ik9JRERERKTBAgICEBMTgzp16sjb0tPTcenSJaxcuRInT55ESkoK4uLiBL0Jr169QqlSpQAApUqVgr+/cIf5z6sffT4np/I0J2Hx4sXw8fGRFwgAUKRIEcyZMweLF6vXyihEREREpN4yIMm3t5xq0aIF7t27h9u3b8tv9erVQ69eveRf6+np4ezZ//b5CQ4ORlhYGBwcHAAADg4OuHfvHmJi/tsj5fTp0zAxMYGVlVWu/pvmaSmGDx8+4PXr11naX79+ne3+CURERERE9HWFChWCtbW1oM3Y2BjFihWTtw8YMADjx49H0aJFYWJiglGjRsHBwQH29vYAACcnJ1hZWaFPnz5YsGABoqOjMW3aNIwYMSJHQ56+lKcioWPHjujXrx8WL14s2Cdh4sSJcHd3z8tTEhERERHRNyxduhRSqRSdOnVCcnIyWrdujT/++EN+XEdHB//88w+GDRsGBwcHGBsbw8PDA97e3rn+XnnaJyExMRGenp7YtGkTUlNTAQC6uroYMGAAFi5cCGNj41wH4T4J2oX7JGgX7pOgXbhPgnbhPgnaJb/uk3CwVE+xI3xVh+gdYkfIkzy9ohkZGeGPP/7AwoUL8fTpUwBApUqV8lQcEBERERFR/vJDH3sYGxtn2S6aiIiIiIjUm3b2jRIRERGRxsgQO4AGytMSqEREREREpLlYJBARERERkQCHGxERERGRWsuQ5HzTMsoZ9iQQEREREZEAiwQiIiIiIhLgcCMiIiIiUmvaujmtMrEngYiIiIiIBFgkEBERERGRAIcbEREREZFa42ZqiseeBCIiIiIiEmCRQEREREREAhxuRERERERqLYN7qSkcexKIiIiIiEiARQIREREREQlwuBERERERqbUMcLyRorEngYiIiIiIBFgkEBERERGRAIcbEREREZFak4kdQAOxJ4GIiIiIiARYJBARERERkQCHGxERERGRWuNmaorHngQiIiIiIhLINz0JnHBC2uDZh2ixI4hCKtHOj3gKd10mdgRRxL+8KHYEURQo4yh2BFFo579uvm8hzZdvigQiIiIiorzIEDuABuJwIyIiIiIiEmCRQEREREREAhxuRERERERqjXNEFI89CUREREREJMAigYiIiIiIBDjciIiIiIjUGjdTUzz2JBARERERkQCLBCIiIiIiEuBwIyIiIiJSa9xMTfHYk0BERERERAIsEoiIiIiISIDDjYiIiIhIrXG4keKxJ4GIiIiIiARYJBARERERkQCHGxERERGRWpNxMzWFY08CEREREREJsEggIiIiIiIBDjciIiIiIrXG1Y0Ujz0JREREREQkwCKBiIiIiIgEONyIiIiIiNQahxspHnsSiIiIiIhIgEUCEREREREJcLgREREREak1mdgBNBB7EoiIiIiISIBFAhERERERCeR6uNH48eOzbZdIJDA0NETlypXh5uaGokWL/nA4IiIiIqLvyZCInUDz5LpIuHXrFgIDA5Geno5q1aoBAB4/fgwdHR1Ur14df/zxByZMmIDLly/DyspK4YGJiIiIiEi5cj3cyM3NDS1btkRkZCQCAgIQEBCAly9folWrVujRowciIiLw008/Ydy4ccrIS0RERERESiaRyWS5mhBetmxZnD59Oksvwf379+Hk5ISIiAgEBgbCyckJb968yfHz6uqXzU0MUnOGuvpiRxBFukw7t3uRSrSzHzgtI13sCKKIf3lR7AiiKFDGUewIotDOf93au5pOWkqE2BGytdS8t9gRvmpc2J9iR8iTXPckvH//HjExMVnaX79+jQ8fPgAAChcujJSUlB9PR0REREREKpen4Ub9+/fHgQMH8PLlS7x8+RIHDhzAgAED0KFDBwCAv78/qlatquisCjNkcF8EBpxG7JtHiH3zCJcvHUab1s3EjqV02nLdEzyH4eK/BxH16h6ev7iBnbvXokqVivLj5uZlEZ/4PNtbx47OIib/MY0bN8C+fRvx7Jk/Pn0KRfv2ToLjZmbFsW7dIjx75o+3bx/h0KGtqFTJQpywCuTpORyX/j2E6FdBePHiJnbtXif4ef+vAwe3ICHxBdr9z38fddOkSUP8vX8Tnj+7ieSkcLi2by0/pquri9/nTEHAzdOIfRuM589uYuPGpShduqSIifMmISER83zXoJW7B+o2c0OvIeNx72Gw/LhMJsPK9dvws2tP1G3mhoFjpiA0XPhJp1MnD1g3biu4bdi+R9WXolCTJ43E1StH8e5tMCJf3sH+fRtRtWolsWOp3MSJI5CaEoHFi7zEjqJ0jk0a4uCBLQh7EYC0lAi4urb+/oOIfkCui4S1a9eiRYsW6N69OypUqIAKFSqge/fuaNGiBdasWQMAqF69OjZs2KDwsIoSERGFqVN90MC+LRo6OOP8BT/8vX8TrKzyb2GjCNpy3U0cG2Ld2u1o/rM72rfvCz09XRw6sg1GRgUAAC9fRqGiZX3Bbc7sJfj4MR6nTl0QN/wPMDY2wr17DzF27PRsj+/Zsx6Wlubo0mUg7O2dERYWgWPH/pL/d1FXn3/ezX7uiPbt+0BPTxeHv/h5f2nkyAHI5QjLfMvYqADu3nuIMWOnZTlmZFQAdnbWmOuzDPb2bdGt+yBUrVIJ+/dtEiHpj5kxbxmu3rgFnxmeOLB9NRo1qINBY37Dq9eZw1k3/bUXf+07jBkTR2HHel8UMDTEkPHTkJws7M0eObAPLhz+S37r2dlVjMtRmJ8c7bF69VY0dmyPNs49oKerh+NHd6j9v+fcqFfXFoMG9sbduw/EjqISxsZGuHv3AUaNmSp2lHwpIx/f1FWu5yR8Fh8fj2fPngEAKlasiIIFC/5QELHnJMREB2Hyr3OwecsuUXOomljXrco5CcWLF8WLsAC0btUNfn7+2Z7jd/Uf3L4dhBHDflVqFlXNSfj0KRRduw7CkSOnAACVK1vi3r0LqFOnJR4+fAIgc9niFy9uYubMhdii5J+/KuckFC9eFKFhgXBq1VXw87axscK+/Rvh2MQVz57fQLdug/HP///3URZVzUlITgpHly4DcfjIya+eU7euLa74/YPKVRoiPDxSqXkUNSchKTkZDVu5Y/m8mWjaqIG8vWv/UWhiXw+jBvVFM7de8Ojujn49OwMAPsYnoGn7HpgzdTycW/4MILMnoU/XDujTraNCcn2NmHMSihcviujIe2jW3B3/Xr6u0u8txpwEY2Mj+PufxKhRv+G3KaNx584DTPCcqdIMYn7ckJYSAffO/XH48Nf/zSvze+dHi/PxnIQJ2jIn4bOCBQuiaNGiKFq06A8XCGKSSqXo2tUVxsZGuHY9QOw4KqNN121iUggA8O5dXLbHa9tZw9a2JrZtUe/hB99iYJBZlCUlJcvbZDIZUlJS0KhRPbFiKUV2P+8CBQyxafMyjBs3A69evRYpmbhMTQshIyMDcXEfxI6SY+lp6UhPz4CBvp6g3cBAH4F37+NlZDTevH0Hh3p28mOFChrDxqoa7gQ9Ejxmw5970bhtV3T+ZQQ2/bUPaWmaNanc1NQEABD7ldc5TbNi+VwcP3YW5879K3YUIo2V630SMjIyMGfOHCxevBjx8fEAgEKFCmHChAmYOnUqpNLv1x3JyclITk4WtMlkMkhU+GmjtXV1XL50GIaGBoiPT0DnLgPln7BqMm27bolEgvkLp+PKlRt48OBxtud4eHTFo4dPcP16oIrTqU5w8FOEhb3E7NmTMXLkFCQkfMLo0QNQrlwZlCplJnY8hZFIJFiwcEaWn/f8BTNw/XoAjv5zWsR04jEwMMDvc6Zg955D+PgxXuw4OWZsbARb6xpYs2UnKlYwR7GihXHszEXcCXoE87Kl8Sb2HQCgWNEigscVK1oEb96+k9/v1cUNNapWhqlJIdy+9wDL1m7Bm7exmDR6sEqvR1kkEgmWLPKCn58/7t8P/v4D1FzXrq6ws7OGvYOL2FEoH9GMgaT5S66LhKlTp2Ljxo2YN28eGjduDAC4fPkyZs2ahaSkJPz+++/ffQ4fHx94eQknGUmkBSHRMcltnDwLDn6KuvWdYGpSCJ06uWDTRl80b9lJo98wA9p33Ut9vWFlVQ2tWnbJ9rihoQG6dHXD/HkrVJxMtdLS0tC9+xCsXr0AUVH3kJaWhnPnLuPEifMqLc6VbanvbFhZVUPLlp3lbc4uLdG0qQMaaekbCl1dXez4azUkEglGjfpN7Di55jPdEzN8lqJ5h97Q0ZGiRtXKaNuyKR4Eh+T4OTy6u8u/rlbZEnp6uvBesAJjh/4CfX31X455xfK5qFmzGpo2U+5wqvygXLkyWLLYG22de2T5sJGIFCvXRcLWrVuxYcMGuLr+N+nLxsYGZcuWxfDhw3NUJEyZMgXjx48XtBUpVj23UX5Iamoqnj59AQAIvHUP9erWxqiRAzF8xGSV5lA1bbruxUu80KZtc7Ru1Q2REdHZntOhozOMjAyxc8ffKk6nerduBcHe3hkmJoWgr6+HN29icenSQQQE3BM7mkIsXuKFtm2bw6lVV8HP++emjVCxYgVERt0VnL9jx2r4+d1A2zbdVR1VZT4XCObmZdG6TTe16kX4zLxcGWxZtRCJn5KQkJCIEsWLYsJ0H5QrUwrF/78H4W3sO5QoXlT+mLex71CtytdX+rGxqo609HRERMXAskI5pV+DMi3znQMX55Zo1sIdERFRYsdRujp1aqFkyRLwv35C3qarqwtHR3sMH/4LjAtaIiNDnaeKEuUfuS4SYmNjUb161jf01atXR2xsbI6ew8DAAAYGBoI2sT/NlEql8nHb2kRTr3vxEi+0d3VC29Y9EBr68qvneXh0xbGjZ/HmTc5+dzXBhw8fAQCVKlmgTh0beHktFjnRj1u8xAuurq3RpnX3LD/vxYtXZ5mYfePmKUyeNBvHjp1RZUyV+lwgVK5sCafWXREbGyd2pB9iVMAQRgUM8f7DR1zxD8D44f0zC4ViRXAt4Daq///yn/EJCbj7IBhdO3695+jRk6eQSqUoWsRUVfGVYpnvHHRwa4MWrbrgxYtwseOoxLlzl1HbrrmgbcP6JQgOfoqFi1axQNBiGZrTKZ5v5LpIsLW1xcqVK7F8+XJB+8qVK2Fra6uwYMr0+5xfceLEeYSFR6BQoYLo0b0DmjZ1gLNLT7GjKZW2XPdSX2906eqG7l0H42N8PMxKFgcAfHj/UTBxt2LFCmjcpAHcO/YTK6pCGRsbCfY9sLAoDxsbK7x7F4fw8Ei4uzvj9etYhIdHwNq6OhYtmokjR07h7Fn1nvi31Hc2unZ1Q7eugxAfn4CSJUsAAN6//4CkpGS8evU628nK4S8jv1lA5nff+nlHRcVg1861qG1njY4df4GOjo78v0tsbBxSU1NFSp17ftcDIJPJYGFeDmEvI7F41UZYmpdDBxcnSCQS9OnaAeu27kKFcmVRtkxJrFy/HWbFi6GFYyMAwO2gh7h3/xHq17GFsVEB3Al6iAXL16GdUzOY/v8kd3W0Yvlc9OjeAe6d+uPjx/gvfu8/IikpSeR0yhMfn5Bl3kVCQiLevn2n8fMxjI2NULmypfy+pYU5bG1rIjb2ndJXLCPtlOsiYcGCBXBxccGZM2fg4OAAALh69SrCw8Nx7NgxhQdUhhIlimPzpmUoXdoM799/xL17D+Hs0hNn1PzN0vdoy3UPGtwHAHDilPDT4yGDPfHXn/vl9/t4dEFERBTOntGM669TxwanTu2W31+wYAYAYPv2vRg82BOlSplh/vzpMDMrjujoGPz119/w8Vn+tadTG4P//+d98otrBzJ/3n/+uU+MSCpRt64NTp/aK7+/cGHm8o/btu/FnDlL5Jvp3bwhXOa1lVMXXLp0TXVBf9DH+AT4rtmMV6/fwNSkEFo1bYLRQzygp5v556t/ry749CkJsxYsx8f4eNSxqYk1i2fLe0j19fRw/MxF/LHpL6SkpKJsmZLo060jPLqr9/j9YUM9AADnzu4XtPcfMA7b1HyjOMpevbq2OHvmv9e0xYtmAQC2btuDAQPHiZSKNFme9kmIjIzEqlWr8OhR5hJzNWrUwPDhw1GmTJk8BxF7nwRSLVXuk5CfqGqfhPxGlfsk5Ceq2ichv1HUPgnqRsx9EsSknf+6tXc1nfy6T8K8Cvl3n4RfQ9Vzn4Rc9SSkpqaiTZs2WLNmTY4mKBMRERERkfrJ1WZqenp6uHv37vdPJCIiIiIitZXrHZd79+6NjRs3KiMLEREREVGuyfLxTV3leuJyWloaNm3ahDNnzqBu3bowNjYWHF+yZInCwhERERERkerlqEi4e/curK2tIZVKERQUhDp16gAAHj9+LDhP7L0OiIiIiIjox+WoSLCzs0NUVBTMzMwQGhqKGzduoFixYsrORkRERET0XRlqPbAnf8rRnITChQvj+fPnAIAXL15wR0MiIiIiIg2Wo56ETp06oWnTpihdujQkEgnq1asHHR2dbM999uyZQgMSEREREZFq5ahIWLduHdzd3RESEoLRo0dj0KBBKFRIfbezJyIiIiLNwTEuipfj1Y3atGkDAAgICMCYMWNYJBARERERaahcL4G6efNmZeQgIiIiIqJ8ItdFAhERERFRfsK1jRQv1zsuExERERGRZmORQEREREREAhxuRERERERqjasbKR57EoiIiIiISIBFAhERERERCXC4ERERERGptQyJ2Ak0D3sSiIiIiIhIgEUCEREREREJcLgREREREam1DG6npnDsSSAiIiIiIgEWCUREREREJMDhRkRERESk1jjYSPHYk0BERERERAIsEoiIiIiISIDDjYiIiIhIrWWIHUADsSeBiIiIiIgEWCQQEREREZEAhxsRERERkVrjZmqKx54EIiIiIiISYJFAREREREQCHG5ERERERGqNg40UL98UCTpS7ezUyMjQzkW7pBKJ2BFEIZXoiB1BFCYGRmJHEEVSWorYEURhXPYnsSOI4uOBiWJHEEXhTovFjiAKqUQ737eQ9uBvOBERERERCeSbngQiIiIiorzQznEZysWeBCIiIiIiEmCRQEREREREAhxuRERERERqjZupKR57EoiIiIiISIBFAhERERERCXC4ERERERGpNQ42Ujz2JBARERERkQCLBCIiIiIiEuBwIyIiIiJSa9xMTfHYk0BERERERAIsEoiIiIiISIDDjYiIiIhIrcm4vpHCsSeBiIiIiIgEWCQQEREREZEAhxsRERERkVrj6kaKx54EIiIiIiISYJFARERE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",
"text/plain": [
"<Figure size 1000x1000 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"Test Accuracy: 79.45 %\n",
"Test Precision: 79.38 %\n",
"Test Recall: 79.45 %\n"
]
}
],
"source": [
"# Confusion Matrix for Test Data\n",
"preds_test = torch.zeros(len(Test_dataset))\n",
"true_label = torch.zeros(len(Test_dataset))\n",
"for i in range(len(Test_dataset)):\n",
" true_label[i] = Test_dataset[i][1].to(device).argmax()\n",
" with torch.no_grad():\n",
" preds_test[i] = based_model((Test_dataset[i][0][None,...]).to(device)).argmax()\n",
"\n",
"\n",
"test_acc = accuracy_score(true_label.numpy(), preds_test.numpy())\n",
"test_prc = precision_score(true_label.numpy(), preds_test.numpy(), average='macro')\n",
"test_rcl = recall_score(true_label.numpy(), preds_test.numpy(), average='macro')\n",
"test_cf = confusion_matrix(true_label.numpy(), preds_test.numpy())\n",
"\n",
"\n",
"plt.figure(figsize=(10, 10))\n",
"sns.heatmap(test_cf, xticklabels=Cifar10_classes, yticklabels=Cifar10_classes, annot=True, fmt='.0f')\n",
"plt.title('Confusion Matrix for Test Data')\n",
"plt.show()\n",
"print(\"\\n\\n\")\n",
"print(f\"Test Accuracy: {test_acc*100:.2f} %\")\n",
"print(f\"Test Precision: {test_prc*100:.2f} %\")\n",
"print(f\"Test Recall: {test_rcl*100:.2f} %\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RsL1Z-PeTP4S"
},
"source": [
"## Training a model without transfer learning:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "rBTHnIvoTa3e"
},
"outputs": [],
"source": [
"# Load just ResNet18 model without any pre-trained weights:\n",
"resnet18_model = models.resnet18(weights=None).to(device)\n",
"# Modified FC layers\n",
"resnet18_model.fc = nn.Sequential(\n",
" nn.BatchNorm1d(resnet18_model.fc.in_features),\n",
" nn.Linear(resnet18_model.fc.in_features, 10),\n",
" nn.Softmax(dim=1)).to(device)\n",
"# Set all parameters in resnet18 requires grad to update it's weights.\n",
"for param in resnet18_model.parameters():\n",
" param.requires_grad = True"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "45GplLPfTt3h",
"outputId": "12ec0e04-3e64-491e-938f-c6903c00fca6"
},
"outputs": [],
"source": [
"# Defining the model hyper parameters:\n",
"lr = 2e-4\n",
"epochs = 2\n",
"\n",
"loss_fn = nn.CrossEntropyLoss()\n",
"optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, resnet18_model.parameters()), lr=lr)\n",
"\n",
"for t in range(epochs):\n",
" print(f\"Epoch {t+1}\\n-------------------------------\")\n",
" train_loop(train_loader, resnet18_model, loss_fn, optimizer)\n",
" test_loop(validate_loader, resnet18_model, loss_fn)\n",
"print(\"Done!\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "GyIrJCdPTyNc",
"outputId": "fdd2bf73-260c-4fa4-8bcd-b6362a6d3290"
},
"outputs": [],
"source": [
"# compute model accuracy and Ave loss on train, valid and test data.\n",
"resnet18_model.eval()\n",
"# Define cross entropy loss function\n",
"loss_fn_eval = nn.CrossEntropyLoss()\n",
"# resnet18_model evaluation\n",
"print(\"Evaluation results for train data:\")\n",
"test_loop(train_loader, resnet18_model, loss_fn_eval)\n",
"print(\"Evaluation results for validate data:\")\n",
"test_loop(validate_loader, resnet18_model, loss_fn_eval)\n",
"print(\"Evaluation results for test data:\")\n",
"test_loop(test_loader, resnet18_model, loss_fn_eval)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "n0SUowFiAzX_"
},
"source": [
"## Knowledge Distillation: [Source](https://intellabs.github.io/distiller/knowledge_distillation.html)\n",
"\n",
"\n",
" Sometiems it is not efficient to utilize high parameter networks for minor applications moreover, the small networks might not be as powerfull as the bigger ones so one way to increase the accuracy of the model is to use a technique called knowledge distillation. Training the resnet18 model according to the **Knowledge Distillation** from a teacher (resnet50):\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0ddtTfKIAtnx"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "B-64mdLbEZwf"
},
"source": [
"In distillation, knowledge is transferred from the teacher model to the student by minimizing a loss function in which the target is the distribution of class probabilities predicted by the teacher model. That is - the output of a softmax function on the teacher model's logits. However, in many cases, this probability distribution has the correct class at a very high probability, with all other class probabilities very close to 0. As such, it doesn't provide much information beyond the ground truth labels already provided in the dataset. To tackle this issue, [Hinton et al](Geoffrey Hinton, Oriol Vinyals and Jeff Dean. Distilling the Knowledge in a Neural Network. arxiv:1503.02531)., 2015 introduced the concept of \"softmax temperature\". The probability pi\n",
" of class i\n",
" is calculated from the logits z\n",
" as:\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vJ6-HDwKEP42"
},
"source": [
"The overall loss function, incorporating both distillation and student losses, is calculated as:\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "GIciSgopD8cg"
},
"outputs": [],
"source": [
"# calculate softmax temperature\n",
"def softmax_temperature(Z, Temp=2):\n",
" return torch.exp(Z/Temp)/(torch.unsqueeze(torch.sum(torch.exp(Z/Temp),dim=1),1))\n",
"\n",
"# # calculate cross entropy\n",
"def cross_entropy(y_true,y_pred):\n",
" y_true=y_true.to(device)\n",
" y_pred=y_pred.to(device)\n",
" N_batch=len(y_true)\n",
" return -((y_true* torch.log(y_pred)).sum() /N_batch)\n",
"\n",
"# Calculate distiller_loss \n",
"def distiller_loss(Z_t, Z_s, y_true, Temp=2, alpha=0.1):\n",
" return (1-alpha)*cross_entropy(y_true,softmax_temperature(Z_s, Temp=1))+ alpha*(Temp**2)*cross_entropy(softmax_temperature(Z_t, Temp=Temp),softmax_temperature(Z_s, Temp=Temp))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "QpMLhkuAHkxm"
},
"outputs": [],
"source": [
"def teacher_train_loop(dataloader, model, loss_fn, optimizer):\n",
" model.train()\n",
" size = len(dataloader.dataset)\n",
" for batch, (img, y) in enumerate(dataloader):\n",
" img=img.to(device)\n",
" y=y.to(device)\n",
" # Compute prediction and loss\n",
" pred = model(img)\n",
" pred= softmax_temperature(pred, Temp=2)\n",
" loss = loss_fn(pred, y)\n",
"\n",
" # Backpropagation\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
"\n",
" if batch % 100 == 0:\n",
" loss, current = loss.item(), batch * len(img)\n",
" print(f\"loss: {loss:>7f} [{current:>5d}/{size:>5d}]\")\n",
"\n",
"\n",
"def teachear_test_loop(dataloader, model, loss_fn):\n",
" size = len(dataloader.dataset)\n",
" num_batches = len(dataloader)\n",
" valid_loss, correct = 0, 0\n",
"\n",
" with torch.no_grad():\n",
" for img, y in dataloader:\n",
" img=img.to(device)\n",
" y=y.to(device)\n",
" pred = model(img)\n",
" pred= softmax_temperature(pred, Temp=2)\n",
" valid_loss += loss_fn(pred, y).item()\n",
" correct += (pred.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n",
"\n",
" valid_loss /= num_batches\n",
" correct /= size\n",
" print(f\"Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {valid_loss:>8f} \\n\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lXTJnAbfXtAi"
},
"source": [
"Teacher Model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "HKJhuAKBGga2"
},
"outputs": [],
"source": [
"# Load pre-trained ResNet50 on imageNet\n",
"teacher_model = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1).to(device)\n",
"# Freeze all parameters \n",
"for param in teacher_model.parameters():\n",
" param.requires_grad = False \n",
"# Modified FC layers\n",
"teacher_model.fc = nn.Sequential(\n",
" nn.BatchNorm1d(teacher_model.fc.in_features),\n",
" nn.Linear(teacher_model.fc.in_features, 10)).to(device)\n",
"# Set all parameters in FC layer requires grad to update it's weights.\n",
"for param in teacher_model.fc.parameters():\n",
" param.requires_grad = True"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GjGZpSymXvEa"
},
"source": [
"Student Model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "PX08wrvCJfOz"
},
"outputs": [],
"source": [
"# Load pre-trained ResNet18 on imageNet\n",
"student_model = models.resnet18(weights=None).to(device)\n",
"# Modified FC layers\n",
"student_model.fc = nn.Sequential(\n",
" nn.BatchNorm1d(student_model.fc.in_features),\n",
" nn.Linear(student_model.fc.in_features, 10)).to(device)\n",
"# Set all parameters in resnet18 requires grad to update it's weights.\n",
"for param in student_model.parameters():\n",
" param.requires_grad = True"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ngi-yns1HZ1i",
"outputId": "02e35583-15bb-421d-956d-dda2d8dc1390"
},
"outputs": [],
"source": [
"# Defining the model hyper parameters:\n",
"lr = 1e-4\n",
"epochs = 5\n",
"weight_decay = 0.01\n",
"\n",
"loss_fn = nn.CrossEntropyLoss()\n",
"optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, teacher_model.parameters()), lr=lr, weight_decay = weight_decay)\n",
"\n",
"for t in range(epochs):\n",
" print(f\"Epoch {t+1}\\n-------------------------------\")\n",
" teacher_train_loop(train_loader, teacher_model, loss_fn, optimizer)\n",
" teachear_test_loop(validate_loader, teacher_model, loss_fn)\n",
"print(\"Done!\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "i4ygXSnbFqK9"
},
"outputs": [],
"source": [
"def distiller_training_loop(train_loader, validate_loader, test_loader, teacher_model, student_model, epoch=5, Temp=2, alpha=0.25):\n",
" teacher_model.eval()\n",
" student_model.train()\n",
" size_train = len(train_loader.dataset)\n",
" size_valid = len(validate_loader.dataset)\n",
" num_batches_valid = len(validate_loader)\n",
" size_test = len(test_loader.dataset)\n",
" num_batches_test = len(test_loader)\n",
"\n",
" # Set adam optimizer to train student model\n",
" optimizer_st = torch.optim.Adam(filter(lambda param: param.requires_grad, student_model.parameters()), lr=1e-4)\n",
"\n",
" # training and validating process \n",
" val_acc=[]\n",
" val_loss=[]\n",
" for Epoch in range(epoch):\n",
" print(f\"Epoch {Epoch+1}\\n-------------------------------\")\n",
" # compute distiller-loss over epoch and update student model weights\n",
" for batch, (X, y) in enumerate(train_loader):\n",
" X=X.to(device)\n",
" y=y.to(device)\n",
" # Compute logits of teacher and student model \n",
" Z_t = teacher_model(X)\n",
" Z_s = student_model(X)\n",
"\n",
" loss = distiller_loss(Z_t, Z_s, y_true=y, Temp=Temp, alpha=alpha)\n",
"\n",
" # Backpropagation\n",
" optimizer_st.zero_grad()\n",
" loss.backward()\n",
" optimizer_st.step()\n",
"\n",
" if batch % 100 == 0:\n",
" loss, current = loss.item(), batch * len(X)\n",
" print(f\"loss: {loss:>7f} [{current:>5d}/{size_train:>5d}]\")\n",
"\n",
" # validation:\n",
" loss_fn = nn.CrossEntropyLoss()\n",
" valid_loss, correct = 0, 0\n",
" with torch.no_grad():\n",
" for X, y in validate_loader:\n",
" X=X.to(device)\n",
" y=y.to(device)\n",
" pred_st = student_model(X)\n",
" pred_st = softmax_temperature(pred_st, Temp=Temp)\n",
" valid_loss += loss_fn(pred_st, y).item()\n",
" correct += (pred_st.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n",
"\n",
" valid_loss /= num_batches_valid\n",
" correct /= size_valid\n",
" print(f\"Validation Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {valid_loss:>8f} \\n\")\n",
" val_acc.append(100*correct)\n",
" val_loss.append(valid_loss)\n",
"\n",
"\n",
" # Testing process:\n",
" te_acc=[]\n",
" te_loss=[]\n",
" # test:\n",
" loss_fn = nn.CrossEntropyLoss()\n",
" test_loss, correct = 0, 0\n",
" with torch.no_grad():\n",
" for X, y in test_loader:\n",
" X=X.to(device)\n",
" y=y.to(device)\n",
" pred_st = student_model(X)\n",
" pred_st = softmax_temperature(pred_st, Temp=Temp)\n",
" test_loss += loss_fn(pred_st, y).item()\n",
" correct += (pred_st.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n",
"\n",
" test_loss /= num_batches_test\n",
" correct /= size_test\n",
" print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
" te_acc=100*correct\n",
" te_loss=test_loss\n",
"\n",
" return val_acc,val_loss,te_acc,te_loss"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "V9_EX8xHNZ5n",
"outputId": "482dba4d-9122-4ce8-957f-c2a77af741ae"
},
"outputs": [],
"source": [
"# trainig of student model according to knowledge distillation from a teacher with best hyperparameters:\n",
"training = distiller_training_loop(train_loader, validate_loader, test_loader,teacher_model= teacher_model, student_model=student_model, epoch=5, Temp=2, alpha=0.25)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "l3a2wAdsWvq1",
"outputId": "152b0f4f-b817-4dea-b734-07590c6c06c3"
},
"outputs": [],
"source": [
"# compute model accuracy and Ave loss on train, valid and test data.\n",
"student_model.eval()\n",
"# Define cross entropy loss function\n",
"loss_fn_eval = nn.CrossEntropyLoss()\n",
"# student_model evaluation\n",
"print(\"Evaluation results for train data:\")\n",
"teachear_test_loop(train_loader, student_model, loss_fn_eval)\n",
"print(\"Evaluation results for validate data:\")\n",
"teachear_test_loop(validate_loader, student_model, loss_fn_eval)\n",
"print(\"Evaluation results for test data:\")\n",
"teachear_test_loop(test_loader, student_model, loss_fn_eval)"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"provenance": []
},
"gpuClass": "standard",
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
|