carlfeynman commited on
Commit
9c06ef3
β€’
1 Parent(s): ea785e1

batchnorm2d replaced with layernorm2d

Browse files
Files changed (2) hide show
  1. classifier.pth +0 -0
  2. mnist_classifier.ipynb +71 -54
classifier.pth CHANGED
Binary files a/classifier.pth and b/classifier.pth differ
 
mnist_classifier.ipynb CHANGED
@@ -46,7 +46,7 @@
46
  "output_type": "stream",
47
  "text": [
48
  "Found cached dataset mnist (/Users/arun/.cache/huggingface/datasets/mnist/mnist/1.0.0/9d494b7f466d6931c64fb39d58bb1249a4d85c9eb9865d9bc20960b999e2a332)\n",
49
- "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00, 112.23it/s]\n"
50
  ]
51
  }
52
  ],
@@ -139,7 +139,7 @@
139
  },
140
  {
141
  "cell_type": "code",
142
- "execution_count": 147,
143
  "metadata": {},
144
  "outputs": [],
145
  "source": [
@@ -154,7 +154,7 @@
154
  },
155
  {
156
  "cell_type": "code",
157
- "execution_count": 148,
158
  "metadata": {},
159
  "outputs": [],
160
  "source": [
@@ -168,7 +168,7 @@
168
  "\n",
169
  "def _conv_block(ni, nf, ks=3, s=2, act=nn.ReLU, norm=None):\n",
170
  " return nn.Sequential(\n",
171
- " conv(ni, nf, ks=ks, s=1, norm=norm, act=act),\n",
172
  " conv(nf, nf, ks=ks, s=s, norm=norm, act=act),\n",
173
  " )\n",
174
  "\n",
@@ -186,7 +186,7 @@
186
  },
187
  {
188
  "cell_type": "code",
189
- "execution_count": 149,
190
  "metadata": {},
191
  "outputs": [],
192
  "source": [
@@ -203,19 +203,30 @@
203
  "\n",
204
  "def cnn_classifier():\n",
205
  " return nn.Sequential(\n",
206
- " ResBlock(1, 8,),\n",
207
- " ResBlock(8, 16, ),\n",
208
- " ResBlock(16, 32,),\n",
209
- " ResBlock(32, 64, ),\n",
210
- " ResBlock(64, 64,),\n",
211
  " conv(64, 10, act=False),\n",
212
  " nn.Flatten(),\n",
213
- " )"
 
 
 
 
 
 
 
 
 
 
 
214
  ]
215
  },
216
  {
217
  "cell_type": "code",
218
- "execution_count": 150,
219
  "metadata": {},
220
  "outputs": [],
221
  "source": [
@@ -226,7 +237,7 @@
226
  },
227
  {
228
  "cell_type": "code",
229
- "execution_count": 151,
230
  "metadata": {
231
  "tags": [
232
  "exclude"
@@ -237,16 +248,16 @@
237
  "name": "stdout",
238
  "output_type": "stream",
239
  "text": [
240
- "train, epoch:1, loss: 1.3684, accuracy: 0.5153\n",
241
- "eval, epoch:1, loss: 0.4238, accuracy: 0.8648\n",
242
- "train, epoch:2, loss: 0.2660, accuracy: 0.9162\n",
243
- "eval, epoch:2, loss: 0.1468, accuracy: 0.9552\n",
244
- "train, epoch:3, loss: 0.1479, accuracy: 0.9545\n",
245
- "eval, epoch:3, loss: 0.1101, accuracy: 0.9647\n",
246
- "train, epoch:4, loss: 0.1149, accuracy: 0.9650\n",
247
- "eval, epoch:4, loss: 0.0997, accuracy: 0.9705\n",
248
- "train, epoch:5, loss: 0.2118, accuracy: 0.9399\n",
249
- "eval, epoch:5, loss: 0.1625, accuracy: 0.9478\n"
250
  ]
251
  }
252
  ],
@@ -282,7 +293,7 @@
282
  },
283
  {
284
  "cell_type": "code",
285
- "execution_count": 152,
286
  "metadata": {
287
  "tags": [
288
  "exclude"
@@ -293,11 +304,11 @@
293
  "name": "stdout",
294
  "output_type": "stream",
295
  "text": [
296
- "eval, epoch:1, loss: 0.1625, accuracy: 0.9478\n",
297
- "eval, epoch:2, loss: 0.1625, accuracy: 0.9478\n",
298
- "eval, epoch:3, loss: 0.1625, accuracy: 0.9478\n",
299
- "eval, epoch:4, loss: 0.1625, accuracy: 0.9478\n",
300
- "eval, epoch:5, loss: 0.1625, accuracy: 0.9478\n"
301
  ]
302
  }
303
  ],
@@ -320,7 +331,7 @@
320
  },
321
  {
322
  "cell_type": "code",
323
- "execution_count": 153,
324
  "metadata": {
325
  "tags": [
326
  "exclude"
@@ -329,7 +340,7 @@
329
  "outputs": [
330
  {
331
  "data": {
332
- "image/png": "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",
333
  "text/plain": [
334
  "<Figure size 720x720 with 5 Axes>"
335
  ]
@@ -355,7 +366,7 @@
355
  },
356
  {
357
  "cell_type": "code",
358
- "execution_count": 158,
359
  "metadata": {
360
  "tags": [
361
  "exclude"
@@ -368,7 +379,7 @@
368
  },
369
  {
370
  "cell_type": "code",
371
- "execution_count": 159,
372
  "metadata": {},
373
  "outputs": [],
374
  "source": [
@@ -379,7 +390,7 @@
379
  },
380
  {
381
  "cell_type": "code",
382
- "execution_count": 160,
383
  "metadata": {
384
  "tags": [
385
  "exclude"
@@ -388,7 +399,7 @@
388
  "outputs": [
389
  {
390
  "data": {
391
- "image/png": "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",
392
  "text/plain": [
393
  "<Figure size 720x720 with 5 Axes>"
394
  ]
@@ -415,7 +426,7 @@
415
  },
416
  {
417
  "cell_type": "code",
418
- "execution_count": 161,
419
  "metadata": {
420
  "tags": [
421
  "exclude"
@@ -424,7 +435,7 @@
424
  "outputs": [
425
  {
426
  "data": {
427
- "image/png": "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",
428
  "text/plain": [
429
  "<Figure size 720x720 with 5 Axes>"
430
  ]
@@ -449,7 +460,7 @@
449
  },
450
  {
451
  "cell_type": "code",
452
- "execution_count": 164,
453
  "metadata": {},
454
  "outputs": [],
455
  "source": [
@@ -465,7 +476,7 @@
465
  },
466
  {
467
  "cell_type": "code",
468
- "execution_count": 167,
469
  "metadata": {
470
  "tags": [
471
  "exclude"
@@ -476,25 +487,32 @@
476
  "name": "stdout",
477
  "output_type": "stream",
478
  "text": [
479
- "tensor(4)\n"
 
 
 
 
 
 
 
480
  ]
481
  },
482
  {
483
  "data": {
484
  "text/plain": [
485
- "[{'digit': 0, 'prob': '0.12%', 'logits': tensor(-1.1319)},\n",
486
- " {'digit': 1, 'prob': '0.00%', 'logits': tensor(-4.7852)},\n",
487
- " {'digit': 2, 'prob': '2.15%', 'logits': tensor(1.7912)},\n",
488
- " {'digit': 3, 'prob': '0.07%', 'logits': tensor(-1.6584)},\n",
489
- " {'digit': 4, 'prob': '97.03%', 'logits': tensor(5.5990)},\n",
490
- " {'digit': 5, 'prob': '0.01%', 'logits': tensor(-3.5289)},\n",
491
- " {'digit': 6, 'prob': '0.00%', 'logits': tensor(-4.4016)},\n",
492
- " {'digit': 7, 'prob': '0.09%', 'logits': tensor(-1.3343)},\n",
493
- " {'digit': 8, 'prob': '0.07%', 'logits': tensor(-1.6577)},\n",
494
- " {'digit': 9, 'prob': '0.45%', 'logits': tensor(0.2194)}]"
495
  ]
496
  },
497
- "execution_count": 167,
498
  "metadata": {},
499
  "output_type": "execute_result"
500
  }
@@ -518,7 +536,7 @@
518
  },
519
  {
520
  "cell_type": "code",
521
- "execution_count": 168,
522
  "metadata": {
523
  "tags": [
524
  "exclude"
@@ -529,8 +547,7 @@
529
  "name": "stdout",
530
  "output_type": "stream",
531
  "text": [
532
- "[NbConvertApp] Converting notebook mnist_classifier.ipynb to script\n",
533
- "[NbConvertApp] Writing 3187 bytes to mnist_classifier.py\n"
534
  ]
535
  }
536
  ],
 
46
  "output_type": "stream",
47
  "text": [
48
  "Found cached dataset mnist (/Users/arun/.cache/huggingface/datasets/mnist/mnist/1.0.0/9d494b7f466d6931c64fb39d58bb1249a4d85c9eb9865d9bc20960b999e2a332)\n",
49
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00, 75.69it/s]\n"
50
  ]
51
  }
52
  ],
 
139
  },
140
  {
141
  "cell_type": "code",
142
+ "execution_count": 8,
143
  "metadata": {},
144
  "outputs": [],
145
  "source": [
 
154
  },
155
  {
156
  "cell_type": "code",
157
+ "execution_count": 47,
158
  "metadata": {},
159
  "outputs": [],
160
  "source": [
 
168
  "\n",
169
  "def _conv_block(ni, nf, ks=3, s=2, act=nn.ReLU, norm=None):\n",
170
  " return nn.Sequential(\n",
171
+ " conv(ni, nf, ks=ks, s=1, norm=None, act=act),\n",
172
  " conv(nf, nf, ks=ks, s=s, norm=norm, act=act),\n",
173
  " )\n",
174
  "\n",
 
186
  },
187
  {
188
  "cell_type": "code",
189
+ "execution_count": 48,
190
  "metadata": {},
191
  "outputs": [],
192
  "source": [
 
203
  "\n",
204
  "def cnn_classifier():\n",
205
  " return nn.Sequential(\n",
206
+ " ResBlock(1, 8, norm=nn.LayerNorm([8, 14, 14])),\n",
207
+ " ResBlock(8, 16, norm=nn.LayerNorm([16, 7, 7])),\n",
208
+ " ResBlock(16, 32, norm=nn.LayerNorm([32, 4, 4])),\n",
209
+ " ResBlock(32, 64, norm=nn.LayerNorm([64, 2, 2])),\n",
210
+ " ResBlock(64, 64, norm=nn.LayerNorm([64, 1, 1])),\n",
211
  " conv(64, 10, act=False),\n",
212
  " nn.Flatten(),\n",
213
+ " )\n",
214
+ "\n",
215
+ "# def cnn_classifier():\n",
216
+ "# return nn.Sequential(\n",
217
+ "# ResBlock(1, 8,),\n",
218
+ "# ResBlock(8, 16, ),\n",
219
+ "# ResBlock(16, 32,),\n",
220
+ "# ResBlock(32, 64, ),\n",
221
+ "# ResBlock(64, 64,),\n",
222
+ "# conv(64, 10, act=False),\n",
223
+ "# nn.Flatten(),\n",
224
+ "# )"
225
  ]
226
  },
227
  {
228
  "cell_type": "code",
229
+ "execution_count": 49,
230
  "metadata": {},
231
  "outputs": [],
232
  "source": [
 
237
  },
238
  {
239
  "cell_type": "code",
240
+ "execution_count": 50,
241
  "metadata": {
242
  "tags": [
243
  "exclude"
 
248
  "name": "stdout",
249
  "output_type": "stream",
250
  "text": [
251
+ "train, epoch:1, loss: 1.8902, accuracy: 0.3183\n",
252
+ "eval, epoch:1, loss: 1.0976, accuracy: 0.6274\n",
253
+ "train, epoch:2, loss: 0.5929, accuracy: 0.8003\n",
254
+ "eval, epoch:2, loss: 0.2895, accuracy: 0.9102\n",
255
+ "train, epoch:3, loss: 0.2396, accuracy: 0.9264\n",
256
+ "eval, epoch:3, loss: 0.1343, accuracy: 0.9597\n",
257
+ "train, epoch:4, loss: 0.1139, accuracy: 0.9651\n",
258
+ "eval, epoch:4, loss: 0.0801, accuracy: 0.9763\n",
259
+ "train, epoch:5, loss: 0.1368, accuracy: 0.9582\n",
260
+ "eval, epoch:5, loss: 0.0882, accuracy: 0.9722\n"
261
  ]
262
  }
263
  ],
 
293
  },
294
  {
295
  "cell_type": "code",
296
+ "execution_count": 51,
297
  "metadata": {
298
  "tags": [
299
  "exclude"
 
304
  "name": "stdout",
305
  "output_type": "stream",
306
  "text": [
307
+ "eval, epoch:1, loss: 0.0882, accuracy: 0.9722\n",
308
+ "eval, epoch:2, loss: 0.0882, accuracy: 0.9722\n",
309
+ "eval, epoch:3, loss: 0.0882, accuracy: 0.9722\n",
310
+ "eval, epoch:4, loss: 0.0882, accuracy: 0.9722\n",
311
+ "eval, epoch:5, loss: 0.0882, accuracy: 0.9722\n"
312
  ]
313
  }
314
  ],
 
331
  },
332
  {
333
  "cell_type": "code",
334
+ "execution_count": 52,
335
  "metadata": {
336
  "tags": [
337
  "exclude"
 
340
  "outputs": [
341
  {
342
  "data": {
343
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAB+CAYAAADLN3DXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAc5klEQVR4nO3dd3yV1RkH8N+ThL0CGCDISBDCFEQUQaVOtG7UOhARq1itiijWWm21rlZxIVKUqihacWCduGitG1GGIgioTBkyIwHCkiSnf7yXc97nmje8SW6Sm7y/7+fDh+fkvOvek5ucnCnGGBARERFFRUpVPwARERFRZWLlh4iIiCKFlR8iIiKKFFZ+iIiIKFJY+SEiIqJIYeWHiIiIIqXKKz8iskJEjq/q56gsInKbiDxb1c9RUVieNQfLsmZhedYcLMvyq/LKT2nE3oA9IpLv+9ehgu95sYh8WpH3iLufEZHtvtf3RGXdu7KJSLqIPC0iG2L/bquEe1Z2eZ4mIt/EyvIzEelWWfeuTCJyrYgsE5GtIvKjiIwRkbQKvmellaWI7Cci00UkV0TyRGSGiBxRGfeuCuIZHXu9uSJyr4hIBd+zsj+bB4nIHBHZEfv/oMq6d2Xi783iJbTyU9E/7GJeNMY09P1bVgn3rGy9fK9veFU9RCWU5xgA9QFkAegLYKiI/LaC71lpRKQTgMkArgCQDmAqgDcq6XMS/ywVfc+pAA42xjQG0ANALwDXVPA9K1M+gEsAZABoCmA0gKlVUZZApZTn7wAMgleOPQGcCuDyCr5npRGR2gBeB/AsvPJ8GsDrsa9X9rPw92ZilOr35j4rP7HmtZtEZKGIbBaRp0SkbizvaBFZLSI3isg6AE+JSIqI/ElElsb+YpgiIs181xsqIj/E8v5crpdaCiJygIi8H7vvJhGZLCLpvvy2IvKKiGyMHfMPEekKYAKA/rHaZF7s2A9FZLjvXFXLFZGxIrIq9lfwHBEZUFmvc1+SrDxPA3CvMWaHMWYFgInwfsGEeR3VoTxPBPCJMeZTY0wBvF+Y+wM4KuT5JUqmsjTGLDXG5O29FIAiAB1Dvo6kL0tjzC5jzHfGmKLY6yuE90uzWclnhpdM5QlgGIAHjDGrjTFrADwA4OKQryPpyxPA0QDSADxkjNltjHkYXrkeG/L8EiVZWZbndVSHsiyTsC0/Q+D9ID8AQA6Av/jyWsH7AdAe3l8L18D7i+EoAK0BbAYwHgDEa/J/FMDQWF5zAG32XkhEjtz7RpXgNBH5SUQWiMjvQz4/4H1j3x27b1cAbQHcFrtvKoA3AfwArxVifwAvGGMWwfurfUasNpke8l6zABwE7315DsBLe7/xf/FQIvNE5IK4L38sIuti31RZIe9ZGslUnhIX9wj5GqpDeQp++fpK8xrDSJqyFJELRGQrgE3wWgz+GfI1VIeytF8DsAvAGwCeMMZsCHnfsJKlPLsD+NqX/jr2tTCqQ3l2BzDP6P2d5iH8awwjWcoS4O/NXzLGlPgPwAoAV/jSJwNYGouPBvAzgLq+/EUAjvOlMwHsgVfLvhXem7M3r0Hs/OP39Ryx47vBK4RUAIcDWAtgcJhzi7nWIABfxeL+ADYCSCvmuIsBfBr3tQ8BDC/pmLjjN8NrkgO8b5xnSzj2VwBqw+sm+QeAb4p7rrL+S7LyfBbAKwAawWslWApgd00pTwBdAGyPva+1AdwCr0XkpppWlnHP1QnAnQBa1ZSyjDunLoDBAIYlohyTsTzhtWx1iStTA0BqQnnGPosvxH1tMoDbamBZ8vdmMf/C9jWu8sU/xN7IvTYaY3b50u0BvCoiRb6vFQJoGTvPXssYs11EckM+A4wxC33Jz0RkLIDfAHh+X+eKSAsADwMYAO+XbQq8NxfwarM/GK9rotxE5HoAw+G9XgOgMYD9wpxrjPk4Fv4sIiMBbIVX456fiGeLSYryhPfXzjgAiwHkwivHwWFOrA7laYz5VkSGwfswZsKr7C0EsDoRzxWTLGVpGWMWi8gCAI8AOGtfx1eHsvSLvafPi8giEZlrjPl6nyeFlyzlmQ/vvdmrMYB8E/tNU5JqUp7xrw+x9LZEPFdMUpQlf28WL2y3V1tf3A7Aj/77xh27CsBJxph037+6xus3Xuu/lojUh9eEV1YGuluhJHfHju9pvEGZF/rOXQWgnRQ/8Ky4D/t2eAN192q1N4j1U94I4FwATY3X5LelFM9Z3P0TPcsiKcrTGPOTMWaIMaaVMaY7vO/HmSFPrxblaYz5tzGmhzGmOYC/wvshNyvMuSElRVkWIw1ec38Y1aIsi1ELQKJnzSRLeS6A13W5V6/Y18KoDuW5AEBPETWDrSfCv8YwkqUs4/H3JsJXfq4SkTaxAVg3A3ixhGMnAPibiLQHABHJEJEzYnn/BnBqrI+yNoA7SvEMEJEzRKSpePrCazl43Zf/oQRPl24Er7afJyL7A7jBlzcT3jfYPSLSQETqipvGuh5AG9GzAOYCOEtE6otIRwCXxt2nALHmQBG5Fb/8CyPo9XUXb/plqog0hDfIcA28JtFESpbyPEBEmsde70nw+r7v8uVX6/KMvYY+sdeXAW8MzFRjzLdhzw8hWcpyeOyvxL1jFG4C8D9ffrUuSxHpt/e9EZF6InIjvL/KvwhzfikkRXkCeAbAKBHZX0RaA7gewKS9mdW9POF1wRQCuEZE6ojI1bGvvx/y/DCSoiz5e7N4Yd/A5wD8B8Cy2L+7Sjh2LLzBgP8RkW0APgdwGAAYYxYAuCp2vbXwms9sF4CIDBCR/BKufT6AJfCaJp8BMNoY87Qvvy2A6QHn3g7gYHi1ybfgjTVB7LkK4c086ghgZeyZzotlvw/vr4F1IrIp9rUx8Ppc18ObIjnZd59pAN4B8D28ps5d0M2fingD0IbEki3hfUC2wnufswCcaozZE3R+GSVLefaB1yy5Dd5fGENi19yrupcn4L1/eQC+i/1/WdC5ZZQsZXkEgPkish3A27F/N/vyq3tZ1oE3ADUX3g/WkwGcYoz5Mej8MkqW8vwnvOUL5sMbP/EW9AD2al2expif4Y1fuQje5/ISAINiX0+UZClL/t4s7hr76sIVkRXwBim9V+KBVUxE2gB4yRjTv6qfJZmxPGsOlmXNwvKsOViWya9KFuiqCMaY1fBGn1MNwPKsOViWNQvLs+aIcllWq+0tiIiIiMprn91eRERERDUJW36IiIgoUlj5ISIiokgJNeB5YMo57BurYv8teikhCx2yLKteosoSYHkmA342aw5+NmuWksqTLT9EREQUKaz8EBERUaSw8kNERESRwsoPERERRQorP0RERBQprPwQERFRpLDyQ0RERJHCyg8RERFFCis/REREFCms/BAREVGksPJDREREkcLKDxEREUVKqI1NiYgSpeDYPja+e+IEldendqqNU0X/bVZoigKvecuGg2z80d2Hq7yGUz4vy2MSRU5aZisbrzmng8pLHbjJxqe2W6DyVu5sZuN5GzMDr/9+76dVemJedxu/d96hKq9wwXchnrjs2PJDREREkcLKDxEREUUKu72IKOHSstur9MIbW9r42RNcV1fv2vrvryIYF5vC0Pe7vcVXNh48ooXK2zYl9GWoGJsu76/SM28db+M+o6+2ccuZ+eq45YMa2PiLIQ+ovKap9W18wItXqLxOf3JlaXbvLsMTU0kKjuuj0k88OdbGDVLExi1SG6BM2pWUWU+lRjVbZuO3M45WeamoWGz5ISIiokhh5YeIiIgihZUfIiIiipSkHPOTtn9rG+cerTsQN5++I/C80zvNt/Hy7c1tvOjtHHVcxrw9Nq7z1qwyPydR1Eit2i7Ro5PKK6rrfpwc9/gnKu+1pq+Euv6Wol02PvSt61RenQ1uFMCI37yp8n7XZIWNj2mup8i+ldHFxoUbN4Z6jqhLbdzYxnXPXK/y/OOyZt04zsb35XZTxy3+6GgbbywyKq9hihvP9e2541VeTgM3BqjlR3rkR5PJXLagvGpt0eOoJuUdZuMFW9009fw9ddRx36924/ZqrdR5vm8JZM4oUFn1F+faeMX5rVReu3e22jhtvp4+r79jEo8tP0RERBQprPwQERFRpCRFt9ePN+gVWe+5/Ekbn1Bve+B5KRCVLgpqKLt6WuA1Jm7R3WqFvvrgfzfqZtyF0/WKl36tP3VNfQ3m/Rh4XLzCjW7VTE7rdFLTm9h445muHHafkaeOm9f3eRvHrwDce9YQGzea3FjlNXzpi0Q8ZuSsvv4QG381YlwJR4bzcv5+Kn3TJ2fbOOeKmSrPP32+39ClcVdy3SMf5HZWOezqKoMWbtjAhwe+FOqUG5ov1Omz/Om6oW/9/SluKYQPjtXn3bnzEhvXf1V/f8BUdEdJzWBmf6PSs884wMZ5E1yVYFh73cU47t1BNm5972eh7+dfsKLtnctUXlWWGFt+iIiIKFJY+SEiIqJIYeWHiIiIIiUpxvzUytc9fyWN8/Hr9tRVKt1ksYvz27rxQN1O/F4d93wHNwbosiarVJ5/3JB/+iwAoGPws6QMc/cLHHtUjEPuH2HjVmPC96PWNKnd9TiNonFuqfx72j9m48veGa6OO36sGwOQlqfHTBWc4sYNHX7TDJVX62Y3PuiDe/WYs8bPczptkB2ZwTurh3XM/HNs3OgPtVVezjezA89bN9AtgdGzdvDi95t2NlTpOtgUcCTtZfr3UumLJr2R0Ouft/TXKn1I+kobx48V8jum3i6dHveIjY81V6q8+q9yHF8YRUcepNJ3/Mv9fO1cy32++z46Sh2XNcGNFQq/8UzyYssPERERRQorP0RERBQpSdHt1fKzvNDH9vyn6ybKuiO4m6ipL86/R7/MQS1PC3Wvtafpnam3tw11WolqbdXT89s8MsfGUZuo6Z/OfsVrU1XemBUDbXzf+RfYuNOs4Kbt+PevrdscGgv/pQtv2f3pNj77xukqb87CHjYu+npR4P2iqPFS9/fSXzbo3aFvznBdi4MXn63yFn3XxsaZH7hrFH2juxi3Du7nEvqjgqEj3wl8Lv/K0BibEZe7IvA88uxqqVfsTU8NXkm/TNe/tJFKf9DS7RS/Z7zuwrx5v/kI48Cbv1bppa+W8eEiIO8i934/cvtYlefvQj7kvmtt3PYh/fu1JnR1+bHlh4iIiCKFlR8iIiKKFFZ+iIiIKFKqbMxPWpbbVqL/v74KPC5+imT2I27H5rB9kKZA7zJbsCbc9hMZE/Rx8SMJEiFK43xS6tdX6bTX69n4lgVnqLzWQ9xU2KLtP5T73gU/6CUN2p3j0p+c1l/lbb3D7TSceUkzlVeY+1O5n6U6a/mwGwcw7yk9jmNw66EusV5vKVH/9+5Hzabe7rt+wJ/09e9qoXf4DuvQqW4H+Jy3ZpZwJBVn/aF63E2P2rm+VD2EsblIT0sfMOkPNs5e+aXKS1nstjl4Z43eRijsmB8K74DLv7Vxnzpxy0t8NMzG2Q9FZ7kVtvwQERFRpLDyQ0RERJFSZd1eBRPdSpI3/WKFTzfHde2EA1TO9otcfa3Zd3sS/lz1PnbNg0XbtiX8+lG29Em9RPaijpNsfPohJ6u8gu3hVvkOK35V05Unuab8rD/r1Z/r+mbd17TpnYkU//lIqeeWExg+U3dln97g/Qp9lm73b7BxQQnHkZPaMdvGWf10t3DL1HBdXWsLd9r4pAl/VHlZf3ddKFHq3k8GRUf1Vunnsp+y8Q3rdF6HoQtsHKVyYssPERERRQorP0RERBQprPwQERFRpFTZmJ+3u7hdg0vaBf3j+4KnvqbErX9fmt3Ug67xQr6b0H7L53r6ddcb19i4YN36Ut8ritL2dztxLxowSeX1fvBqG2euTfwUS+nd3cb1/rZO5dXZ3DT+cCql1O6dVXrIi9NsfHqDzeW+/vg8Pd5v1S637MA9rWapvCW/zbRx1i0ryn3vmmj53XpJh4793BISb+ZMjT88lC93t7Jxm7+H/wzvHNTXxld2eKVM9z63mV7S4I/DLrdx06dnxB9e46U0cktPFNySG3jc6+/2U+nsgui9VwBbfoiIiChiWPkhIiKiSEmKXd23xK0MetbCC2289utWKq/pAgTa7Ho5kNlrXeBxx7T63sa3xq0mem5DN2X23OMfV3nj3utk4yde0CtPt70rOitjlsb3I9vbeNZu3S2Z+UBi37Nt5+vm3HNvedfGV6UvVXk9HxuR0HtH0eZeuuvQ/9kJa85unR7y2lU27jhK7/ie2t19/vAf3e314bD7bHzhByNVXtr7c0r9XDXRrwfOVukHMj8PODK8B2+4wMb1EH5l7dyu7lfP4EZlG0Lw3rbuKp3xnuvGi+JyBxvP72Hj2d0eVXnTd7mlZTreE/dLtLNbgmRrj+Y2Lqyth4SsG1CEIJkfuXaU9Pf1z9rCjRvjD08KbPkhIiKiSGHlh4iIiCKlyrq9Tu97qksU6ea0emuX27gDliOssPN3ZjZId8+RfmrgcUuubK/Sc4aNsfHg381TeYdnX2vjnEt183KU+Gd3AcBDZ7mVRS/7eqjKa434lb2LJ2m+b9MD9QyjXaPdStBrV+rG7of/d6KNs06arPKyx7qmX67iXDaNftDd1VevOdLGHyzrpPIyXnYrBtfNdeVUZ32+Oq7jgrJ1xeznW5F45a/1xo0dKnZx6aRWeMzBNj644ZsJuebIH4+wcaO5bnhBSV1NqRl6W2jTZ2vAkeH9tKeBSofdsLqmyusSPNs5PcX1L58wY6XKO7GBGx7QtbbefDq0QS58a0ddlTVqzrk2PuByvUl1Yd6Wst0vAdjyQ0RERJHCyg8RERFFCis/REREFClVt6t7FfbPFvl2DC8qYffwrD/rZ+y7Y5SNH7lkgsqbdvxYG1/b9WKVV7hocVkes1oqbKFHXp1Qz72/t9XSowLixwf5Lbs0y8a/OtXtEJ5eS0/T/GS0m97e+eUvVd6BX+yx8Z+fukjltcnj0gTlJdPnqvSKfqk2zi6ahzBKNd5q/SYbxq/+7F/KoFd//XnTe89Hy7Kzatl4SKO1ZbrGDesO09e8wr33ZkUJa4/4zxmvlyyZ339SmZ6FyqZ77Xq+eIXKW13gxtxO3OLK6W+zTg68Xq2VdVS6oL0b//fBUeNU3ncDnrFxh9uvUHmdRpZ/uYWyYssPERERRQorP0RERBQpSbHCc3XR9m+uq2TEbt18N3/UIzZedI3u+sn5fcU+VzJJWb5apc9c7JYS+Kz38/rYmW4F0fhNaQcuONvG3955oI3rTtWryDaCazZddo/euLHtHtf10n7iEpXH6e0VoKiC39UC122aX1i3hAOja9epfVX63dMf9KXK9p5NX9tBpZvNCdfVlZbtlgqZ0GdyCUeWzaz17VS6Gb4PODIast9w09l7ZA9RebuWu01PW+jF0ZE+262wXbjELS3TCXoYQVi/z7pApV/8dIqNz/mV7uaaW6Y7JAZbfoiIiChSWPkhIiKiSGHlh4iIiCKFY37KSOJWEi80brrgiAHvqbxpaFwZj5QU4pcrNye76eZ9L9E7qRvfpsGZE+eqvDo7VvhSKxAkrW0bG78z+D6VN2j8H23cej2ntlel1E6+cSO1awUfWIIdWe5zdGPz4D0rvvyyo0p3wqaAI2uewrp6J+7stLKN89lUuNPGuz7aLy433NiaFfc3tPERdfeUcGTZ7HfeGpUO3nM8GlI+ckuC7P9R+PMSPVJvR+cWKl1HyvZ5r2hs+SEiIqJIYeWHiIiIIoXdXhVg3MfHq3QOZgYcWfMV7dhh4xb/CO56KmuT9Y4n3arCJ3yiu9U6Peje9+D9jqk05FC37MBP3RuqvNxe7l3u2lvv3jwu263y2iatHhJtdG53d++H9ErGJe02XtM0maVXpf/VPLej9sc9p8QfHmhVoVvBt/V9wZ/btDb72zj3MV2uf+2YmF3k/Tq/cqWNc3bPSfj1qWwkzVUlhj/8qsqrJe5n9Etf91F5nVB1ZciWHyIiIooUVn6IiIgoUlj5ISIiokjhmJ9SSKlf38YF/bcGHtf8y9TAPCqf3accqtLPdB5j46FjR6k8UxCl0R4Vo/CYg1X6romP27hPnfijgy342U13PW/u+TZOTdGjvbo03WDjx9p+GPr6OXXdOJ9Plkd364uCH1ap9Jbph9t4dbedKq+ksVfDx420ccujdgYed9x4N6d6RNPFoZ+zJOt90+yPef4GlZdzq9tygZ/vqpOa3kSl97zslqEY0mi2ylu6J9/GXe/IVXlVWYJs+SEiIqJIYeWHiIiIIoXdXqWw7KZeNv6m/z9U3ujcbjbOePEblRf1lUfLKzUjw8bjxz+s8k58wq3i3O5NruKcaM3u1FPW/V1dX/2sv7MvG+u6Smrl68UFWrzmVgVuusl1j6iVnwHMPsNNpcd1H4Z+zmPruSne916md5Vu/viM0Nepadre5T4TYwYdo/IeyPw8/nBrzvXjKuyZ4p2w8CyVXjujtY073KrLjktWOCkNGqh0nu+zkz51gcor2rat3Nf/uV8XG2/9Q57Km9H15cDrXHzd9Tauv+yLUj9HRWHLDxEREUUKKz9EREQUKaz8EBERUaRwzE8c/9Te5afVVnkzzrnfxinQ00Qf//QoG+dsi+52FhVh6Ui3S/fc3W1UXvZzbopzoncnjqrU7p1t/GC7iXG57vv+vPeuVDldJ7lxBkXZupyWjswp9l6XnzlNpUuaLl3kGz23vnC3ymsk7u+4VkNWqLw9j4OS2LYprVW6fYTHaJXGkr/2VOnFFz5q44GXnqbyNj/Xw8YtPl4feM1vr3HjK/90/FSV97sm0wPPW13gprMP9I3DBIB2ryXPOB8/tvwQERFRpLDyQ0RERJFSY7u9/Ksxo1N7lbf0vHQbjxr0hsr7TSM3xbNJil4pdnWBm2h5xOSrVF7XB5bYmN0v5edfQfS6s1wZ/X3Seeq4Nks4vT3h1m+y4ZStumnd3y31/ckT9HknJ/Yx4qfSX3HvNTbOeFR3jRQdeZCNa+VuT+yD1BBLTmmqv/Bl8cdVhL9s0Lt5v/pufxt3eGqWyuN09nA6PrtZpU8/7Nc2npLzospremd9lNYeo3+TXbv2MBu/Mb+XyssZ/7ON282qHj+T2fJDREREkcLKDxEREUUKKz9EREQUKVU25ufn/7pxOPm79fbQ8u/moa6xsZ/uk2zfwe0IfVDz1Ta+r9WzgddIgaj0Zt8wg5xpl6u8Lg/vsHGHuXrMAcf5JNaie93U6EvTvrJx+9c3qeP4vide4Sa38/LLtw9UeYMfmGfj/VKDdwWP9+BPbmn8x+YeGXicyXPLS3R55CeVl7EoeAp0yqdzbczvieIV5W1R6cPmuG1AvujzXMLvN3DB2Tauf4HeXiF7kytLjvEpm6J536r0brfaCi7oeYnKW3FmMxuPGaqXr6gre2z8249/a+O2r6eq4+q95pZw6YQ5Kq86liFbfoiIiChSWPkhIiKiSKmybq/3ur1q46L4RrPe4a4R32Xlv87ygl02vn7t0eq4adMOsXHmpwUqr8HcVTbOWTs77vpUUeJ3EB599BQb3/bYhTZuvbB6TKOsKRq+pFdnvfil4C6rsDriq30fBHZfJZrZrVfFzrzSrcp7bF+9Wvdlf3e7dA9uFLwi8KH3jLBxozW6xBp/tc7GBb6uVKp48V1i7VxvNcbc3jXwvJy47qyajC0/REREFCms/BAREVGksPJDREREkVJlY36Ou8xNIy+op+tgG87ZaeNmjXeovIuz3BTJB+cdp/JSFzW0cfu33dRKM2u+Oi4LwVNmCwJzqCKtvlIvl96l9v9s3PZtN72d40CIEqNg9Rob1/fFADD5lTYuRhsEaYngMXj8WUrJjC0/REREFCms/BAREVGkVFm3V5233U6+deLysl9GoFeR4Y7DvMDjquOKk1E26cqHVPo3L1xn4+yFwd2UREREpcWWHyIiIooUVn6IiIgoUlj5ISIiokipsjE/RH43Z/dV6ewSliMgIiIqD7b8EBERUaSw8kNERESRIsZwUjgRERFFB1t+iIiIKFJY+SEiIqJIYeWHiIiIIoWVHyIiIooUVn6IiIgoUlj5ISIiokj5P0TtsIzRFepPAAAAAElFTkSuQmCC",
344
  "text/plain": [
345
  "<Figure size 720x720 with 5 Axes>"
346
  ]
 
366
  },
367
  {
368
  "cell_type": "code",
369
+ "execution_count": 53,
370
  "metadata": {
371
  "tags": [
372
  "exclude"
 
379
  },
380
  {
381
  "cell_type": "code",
382
+ "execution_count": 54,
383
  "metadata": {},
384
  "outputs": [],
385
  "source": [
 
390
  },
391
  {
392
  "cell_type": "code",
393
+ "execution_count": 55,
394
  "metadata": {
395
  "tags": [
396
  "exclude"
 
399
  "outputs": [
400
  {
401
  "data": {
402
+ "image/png": "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",
403
  "text/plain": [
404
  "<Figure size 720x720 with 5 Axes>"
405
  ]
 
426
  },
427
  {
428
  "cell_type": "code",
429
+ "execution_count": 56,
430
  "metadata": {
431
  "tags": [
432
  "exclude"
 
435
  "outputs": [
436
  {
437
  "data": {
438
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAB+CAYAAADLN3DXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAaPklEQVR4nO3dd3hVRfoH8O+bRopEOpEiCCSAiiKIgg1RdBXrsmtDEVQUxMK6Cuy6P8W26C6yrqhrxQa6CIrYXRFsKAKiSBMQpKj0SO9J5vfHOZk5c5/ccJLcfr6f58nzvJM55565d3Jv5k47opQCERERUVCkxbsARERERLHExg8REREFChs/REREFChs/BAREVGgsPFDREREgcLGDxEREQVK3Bs/IrJKRHrGuxyxIiL3iMj4eJcjWlifqYN1mVpYn6mDdVlzcW/8VIWI/ElEfhKR7SKyVkQeEZGMKF+zv4jMiOY1PNdqICJfikixiGwVkZkicnIsrh0PItJDRD4RkW0isipG14xZfbrXe0ZElopImYj0j9V140VEskRkiYj8EoNrxbQuPdftJyJKRAbE+tqxIiIfiMhOz89+EVkQ5WvG8rP21JDnt9Ot0z/E4vqxJiKdRORz93luEJEhUb5erD9n00XkAbddsENEvhOROpWdE9HGT7QbIgDeAdBJKZUP4GgAxwK4NcrXjKWdAK4F0BBAXQD/APBODF7XCsXgursAPA9gaJSvE0/fAxgM4Nt4FiKGf0NDAWyM0bViTkTqAvgrgEVxLkdU61Mpda5S6pDyHwBfAZgUzWvGklLqi5Dndz6cz98PY12WGHyBbwDneT0NoD6ANgA+iuY14+BeACcB6AYgH0BfAHsrO+GgjR+3e+2vIrJYRLaIyAsiku3mnS4iv4jIcBFZD+AFEUkTkb+IyAq3B2OiiNTzPF5fEVnt5v2tKs9OKbVCKbW1/KEAlMGpyIMSkdYiMt297mYRecXbMhSR5iIyWUQ2ucc8LiLtATwFoJvbYt7qHvup91tfaCtXRB4VkZ/dHqq5InKqz+e3Vym1VClV5j6/UjiNoHqVn+lfgtXnbKXUOAA/VeN5JHx9us/xCaXUNBzkjVgdiVSX7vlHALgKwINVPC8p6tL1IIAxADZX8byDSrT69DxOSwCnAhjn8/hkqs9y/QC8rpTaVc3zLQlWl38G8D+l1CtKqX1KqR1KqR98Po+Er0txvpD8CcD1SqnVyrFQKVWzxo/rSgC/A9AaQBGA//PkFcD559wCwA1wemIuBtAdQBMAWwA84RbySABPwmmVNYHTCm3meRKnlL9Q4YhIHxHZDufD51g4rVk/BM4HVxMA7QE0B3CP+5jpAN4FsBpASwBNAUxw/0AGAZjpfkOo4/NacwB0hPO6vApgUvkffgXPZ76I9An9HZx/lm8DeE4pFelv0glTnzWQNPUZZYlUl48BuBPAnio+h6SoSxE5AcDxcD7YoyWR6rPc1QC+UEqt9Hl8UtSn5/e5AP4I4CWf1/QrUeqyK4DfROQrEdkoIu+IyOE+n0My1GUHACUA/igi60VkmYjcdNCrKaUq/QGwCsAgT7oXgBVufDqA/QCyPfk/ADjTkz4MwAEAGQDudl+c8rw89/yeBytHBeUqBHA/gIKqnuuefzGA79y4G4BNADIqOK4/gBkhv/sUwIDKjgk5fguAY934HgDjfZQvG8AVAPpV5/klU30C6AlgVQ2fV6LX5wwA/VO1LgH8HsCHnmv/kkp1CSAdwDcAulV0nVSrz5ByLa/J324i1mfIOX0BrAQgqViXAJYB2AqgC5z/K2MAfJkqdQmgDwAFYCyAHADHuOU6q7Ln4nes8WdPvBpOK7DcJmV3L7UA8KaIlHl+VwqgsXuefiyl1C4RKfZZBotS6kcRWQTgPwB6H+x4EWkEp9JPBVAbTq/XFje7OYDVSqmS6pSlgmvdDmAAnOer4IxBNqjKY7iv6X9F5AcRmaeU+j4SZXMlXH1WVbLVZxTFvS5FJA/AP+F8wFdZktTlYADzlVIzI1GOSsS9Pr1E5BQ4vRSvV+GcZKhPr34AXlbuf9IISpS63APgTaXUHAAQkXsBbBaRQ5VS2yo7MUnqsryn+T6l1B4A80VkApzPo6nhTvI77NXcEx8OYK0nHfoH8zOAc5VSdTw/2UqpXwGs8z6W291Y32cZKpIBp0vRjwfdsh6jnAnTV8Hp0isv8+FS8cSzit4QuwDketIF5YE7TjkcwKUA6iqny2+b51pVlQmgVTXPDSdR67MqkrU+Iy0R6rIQTrf3F+4chskADnO7oFv6OD8Z6vJMAL93n9N6OJMrR4vI4z7OrYpEqE+vfgAmK6V2VuGcZKjP8sdoDqcn5mW/51RBotTl/JDrlcd+XqdkqMv5lVwzLL+Nn5tEpJk4E7DuBPBaJcc+BeDvItICAESkoYhc5Oa9DuB8d4wyC8B9VSgDRGSA2xItHwf9K4BpnvxPReSeMKfXhjObf6uINIW9wmg2nD+wh0QkT0SyxSwx3wCgmVvecvMA9BaRXBFpA+C6kOuUwO0OFJG74bRg/Ty/ruWvjYjkiMhwOC3/WX7Or4JEqc80d0w300lKtvd1Tvb6dJ9DlvscBUCmW5ZIrrJMhLpcCOfDuaP7MwDO69wR7jfWFKjL/nDmPJQ/x2/grDCp9kTiMBKhPuE+Xg6ASwC8WEFestdnub4AvlJKrajieX4kSl2+AKfh3lFEMgHcBWe4aat7raSuS7fuvgDwNxGpJc6E68vgzEcKy+8L+CqcpXE/uT8PVHLso3Am6n4kIjsAfA3gRLeQiwDc5D7eOjjdZ3o/EHH3XqjksU8GsEBEdgF43/2505PfHMCXYc69F0AnOK3J9+B8O4VbrlIAF8BZObbGLdNlbvZ0OMta14tI+QqPR+CMuW6AM0nuFc91/gfgAzjjrKvhTFz2dn9aRGSRiFzpJmvBmeRWDOBXON125yml1oY7v5oSpT5Pg9Nl+T6cb0Z7YC/BTPb6hPt89sDpKXjGjU8Ld341xL0ulVIlSqn15T8AfgNQ5qZL3cOSui6VUltDnuN+ANsPNmxQDXGvT4+L4dTJJxXkJXV9elyNyE90LpcQdamUmg7n/+R7cLahaANnnky5VKjLK+AMHRa75bxLOatsw5KDDXOKs/ncAKXUx5UeGGci0gzAJKVUt3iXJZGxPlMH6zK1sD5TB+sy8cVl87xoUEr9Amf2OaUA1mfqYF2mFtZn6ghyXSbV7S2IiIiIauqgw15EREREqYQ9P0RERBQobPwQERFRoPia8HxW2iUcG4uzqWWTIrKpHusy/iJVlwDrMxHwvZk6+N5MLZXVJ3t+iIiIKFBSZqk7ERERxV7GES10PGK6fRu4y9++RceFQ76OWZkOhj0/REREFChs/BAREVGgsPFDREREgcI5P0RERFRtW59M1/FxWXafSq3fErOPJTFLRURERBQlbPwQERFRoHDYi4iIiPw7oYOVHNN2rI43lO638lq+tVXHZVEtVNWw54eIiIgChY0fIiIiChQ2foiIiChQUmvOj2ccctk1OTp+85zHrMM6ZGXqOF3s9l/v5WfpeMddzay8tM++i0gxiYiIklXOqI1W+pgss9S9y0PDrLzG876KSZmqij0/REREFChs/BAREVGgJPWw17rbT7LS9w16Wcfn5W7T8du7GlrHzduXreO0kMV3r7X+UMfH3tLPymv+WfXLStF3+/JFVvrMnH06Dh3ePK/zOTouWbc+ugUjIkpym2/opuOPW4228qbtqavjJhOXW3ml0S1WtbHnh4iIiAKFjR8iIiIKFDZ+iIiIKFCSbs5PRkFjHY8YON7K887zOXL8zTouHLXMOq50c7GOJTPLyps4tYuOJx3/rJU3oM9tOs5/9euqFJti4ADSrXQZlIlVyMizUqDgKb6um53uWqLjomf32gfPXhCLIhElJO8cHwCYe8+TOl60X6y8Mef00nHphpXRLViEsOeHiIiIAoWNHyIiIgqUpBv2WnFjax1fmPe+lXf24t46LnzYLLfzDnOFUgfsO9AuXnOYjosK7SGx4gt36zj/VZ8FpqhKyzbbFqQj/FDWUeNuttKtiudGrUxBlV6/no53n9Daysv5zGxDULZ7N2Jp37lmKHtLD3toa0mPZ3T8SY9DrLxH2rSPbsESmLcuMybbn4OFh5jdfRfcbHbV//X0POu4Wt3M5+6szpH/wDzlL/Z7us64mRG/RtDIcUfp+OO77OXspcp81t74pyFWXs7y2dEtWBSw54eIiIgChY0fIiIiChQ2foiIiChQkm7OT+YuE/93R2MrL+eKnTqubJ6PV8mZna30hFOf0vEPB+zl0S0eZ1sx3tLbtrHS+c//puMzc8LPJclfYadD53pRzf3at52OZw991Mq7d6N5n809LrrvI+l8lJU+aeQsHY9oZM/1+mC32ZZ/xONXW3kFSMy7UUdDxmEFVrp4rJn/9Fmb/4Y97+Nxi3XcM2eHlZfm+W5dFnIboUjY3Xubla4zLuKXCISMpk10fM74GTo+JK2WdVzhmzfquOhd+32UjBuH8L85ERERBQobP0RERBQoSTfs1fRfZknda5NOtvJKN6/29Rhl3Y/T8SNjn7Dy2mdm6vjoGddZeS1nzPNbTIqg9MaNdJzxzE4rb1zLqbEuDoWxp3H4zm/vcFOvMwbpOGN6ZLYc8A51DZ7wppV3bq4ZjgkdfBk212yP0Wb8EisvUe9GXW1i78qb3qCBjre9kGvlfdYh/FCXV+hQl19rS/bpONMuFhqm1wJFT+hdDZY8ZKaPTKnzjo7/UWwPHxfebIaPk3GYKxR7foiIiChQ2PghIiKiQGHjh4iIiAIl6eb8qBJzF+aSleHn+EgtM27849gjrbxZ3R8Pe17PQbfq+IgP59nX9ltIiqw6+Tp8o81rvk/r+u0VOm48ZbmVl3LzOeLhhA5W8o6L39JxWsj3qk/2mK3xIzHPR53c0UoPe9mscz4t297G4IAytd1r8aVW3hGXz9dxKv5NeLeGWDqogZW3+NLHavz4M/eaz9lr37/ezvTO5Qn58Gw90dTR6vOyrbwFfcf4unb69Dq+jiPbxuvs7V2WnGH+H64sMbd/mXmeva0I8Es0ixVz7PkhIiKiQGHjh4iIiAIlIYe90vPNMIfUr2vlbTzd7EZZd6m9o++P15pl6k+f/pKOe+SE7tRqulmvXHm2lZP3mVnuWspdgBPC2rMbHfwg2F22ALD/c9PNX7ppWUTLFFQlZ5gu8xNHz7Hy+uWbYei5++zvVSPuMttG5OPral17x2VddfyXB1628k7JNnUfupzdO9RV6+xV1bp2stpVaO7OXpVhruHru+l4wZYmVl7m0No6Tt9qtp4oXDkLfpWe3sk8RuudlRxpaz/Z3Mm98An/1wu67X3Me2fOXfb2Lr+W7tFx/+F36Lj2z9V7nyYL9vwQERFRoLDxQ0RERIHCxg8REREFSkLO+Vl1y9E6/n5wzZdjVuaVIz6y0kM/OVHHU1fZ23vXG2/udJz7JsebY+WWwZN9Hdf7yaFWuumo4NyVO1aGPG1ue+C9bQRgz7X5YMcxVl7dj8ycq+ouKd/TZ6uOf5e7Lexxz21rZaWDNs/Hr6UHTE3cvuISKy/rWhNnrF5j5XlXrZfAH9XtWCt923Ov6riyW2R4l9IDQNvntuu4rCwVNyeIjuxr1um4LGTfge7Thui4aEJqz/PxYs8PERERBQobP0RERBQoCTns1XJKsY779epp5eVl+Ft+/tUU083asMdaK2/1yoY67tlxsZV3eQPT7Teqqz209V0n07F/u9xs5eVO5jBYvB3+xnorzU7xmts/tYWV7p4z05Oy7w5998YuOl54vr08urTYfg/6sXbYSVZ6Ssd/elL2cIh3qOu9i08IeaQVVb52qshbZj5LO7x0q5VXMNu8Q3KmzLby/A5nVWb/OebvYfPAXVae37vBX/PJtVa66Ptval6wANhwi/3emXuk2cX5gc32zuxtBy3Usd+7GGQ0b2alSxscqmMptT95y+YvQSJizw8REREFChs/REREFCgJOexVumipjotPtvOK4U8zeFb6PGjnFWGVju11DMDDx5hVDzcMy7HylvR4TsejR9s3R72j7CYdh3YhU9XtO9d0mbfOGhvHkqQ+ybSHr9SHZkftj9qFrrQzxz6zraWVM+84byr8MJf3Zpt7W9Sx84Zv0PG37eyVnpliVlt6b1YKAP8Zf4GOmy3jKr9ypcvMkN8Rd8Z2+G/jcWbH/W9PeKmSI21HTrxFx22HfWvl8ebS4aXl5em4zaXhd7Qf/0F3K91qnxnKTm9opoRsvNi+sam60Pz3HX3k61beydkHdLxb2VNTRmw4VceLhhxt5aXNmBe2nNHGnh8iIiIKFDZ+iIiIKFDY+CEiIqJAScg5P/HkXZbX9u+FVt60rrk6PjPHvqP8ukvNOGerKdEpWyo7cPbxVvry0e/r2DueHKr9pwN0XLQhuEuaa+LnO+zX/tt2j+o49A7pXltK8qz0+iGe5bViH1vrrE06/rLjBM/jh79CaM4Bz4SP0PlGLV9apeNILNOmqksvtHfWHt5voq/zQndxbjfG7EZccsDf1iYErP6z2d7l+1ahd0Ywb8jWr223cpY+abaGePdc894vCpkLmOZ5jDn77NlXnWb31fGzx46z8kYVmG1g5r5sbwlzX5ezdFxa/BtiiT0/REREFChs/BAREVGgcNirEqU//GilB7/fX8dL//AfK49LMGtmW8tMK33doaGbEDiWH9hnpetNzdZx6fbtoYeTD2MGPF2t84bXX2Slhw5b4PPM6n3nGunZmfbdR+3luvV+nRl6OMWAd6ir+2S7/q+obbYtCB3C7PC5Ga5u+qL93s9ayV2cq0N5hprTQsad08W859571x6W8tpeZv6TtZ12vZXX5C1TT3lv2MNXTWDulHDN3bdYeQsHmm1humbb733JsofWYok9P0RERBQobPwQERFRoLDxQ0RERIES3Tk/aek6TD/EXhabjPMzCr7yjKP+IX7lCJo1JXt0fPkjw6y8ghd5K4OaGjSrr5Ve2P3ZqF5vxEZzH4wRjeb6Pm/aiFN0XG8K5/gkglWXFuj4rXqTrLxMMZ//H+3OtvKajTX/ejI/5hyfSGg8x2wJUjYwZBaqMrOuykJmqM7eZ/6vDRt+m44LJ9nzevw6qdd8K+293oA1p9p523dU6xqRwJ4fIiIiChQ2foiIiChQojrsVdrd7Dj5t7HPW3kjL7lSx2quvWQ2UaQXtbbSw+4fH/ZYCZtDNbVgv+laL3iUw1yR1qrPPCt9Wt9bdbytjf2XnXXsFh0PLJph5T026QKE02qM2Tn9h4fM++reXt+FPafXkoutdM6U2WGPpdhZc7fZyfv96/6p4zLYOzV7h7pGDulv5dX6eE50ChdguV8u1fF1a3pYeSOamB3zD8/IsfKOzNyr4y1tzVBl7eOO8n3tH6+ureMXmzxs5a0sMZ8hv9xh/09N2zXP9zUijT0/REREFChs/BAREVGgsPFDREREgRLVOT8/9TbbYXerVWrlbeySr+OG/le7Rl1athmnXn9GIyvvvNxtYc+r90FO2DyqmHjuGryzRRwLQpY648wy8jqVHPc26lvpFgg/H8v77q/buKGOQ+/q/t0+830s61r7MXi39vhIy7O3KZl8rZnT0SSjVujh2sDp/XVc9B7n+ESbd/uYTde3s/KmTSrS8VW1V1l5h6SZOvz+Rs/d4G+0H997y4zQ5fJeB5R9y4rz7x+i4wYzEmeLCvb8EBERUaCw8UNERESBEtVhr7ZjPbs39rbznho+Rse3b7jZyst9s3o7S/qV3raNjpcObGDlnXaSWXb/dvPHEU7nOVdZ6WZvmfNKQw+mCqU3Mq/9wv7hX2tKftLZLJud1fllHYfe7bvPOzfpuHD119EuFoWx+YZuOm7bb4mV1yozM/TwChXdwKGueClbaNfZG+3NFI6nBl1k5eX3XqfjqUe94evx5+6z01d+OUDHh71lD3s1eD1xhrq82PNDREREgcLGDxEREQUKGz9EREQUKFGd85O2bZeOp+3JtfLOzNmt43//6zErb8JdJ4Z9zNe/7qLj+t+lhz2uuLOZeXNUu5+tvAFNP9RxZcvXlx3Yb6WvHvlnHTebuNjKS8a71BPFyu7meRX+/pM9h1jpdk//pmPOnYudjJaHW+nTB5p5lyMLws/BXH7AbEBw6/LL7MfEmgiVjiKp4VMhc3CeMuH56Fytx2yD8LepSVTs+SEiIqJAYeOHiIiIAiWqw14lK1fr+LGzzrHybh7cRMev/fFRK29k42/CPubIizx5F4U9zLejPre3kc2fbobnGn220cprsMx0F7JLPnae7OvdJ2F+3MpB/qXn51vpEaPH6jhTzHD14P/1t44rXBzdbS7ISG9odtpOf8ke4q9sqOuXErPOefiqS3Sc0ZPDXJQ82PNDREREgcLGDxEREQUKGz9EREQUKFGd8+Plnf8DAK2HmvQd026y8lZdaO4eO+uCR6y8UZtO0XFlc4M6ze6r453r7OW07f9drOMjfgyZQ6LM3Wo5rycxpO01y2lDb4dACaqgoZWsnbZXx5tLzfySptNiViIKsfx2c5ufBW3GVHKk7bIHhuq4/rOJeesCooNhzw8REREFChs/REREFCgxG/aqTNaH9t1/i8wGzOg7+OSQo82wVGW7UTbB4rB5HM5KDKWbzfBju4n20GdZnqml9j8tjVmZKDJKl62w0utLDtXxw7+aO4bnTubS9ljZeYm9c/70PqM8qVphz7t/Uycr3XDCQh1zGJqSFXt+iIiIKFDY+CEiIqJAYeOHiIiIAiUh5vxQMKl9Zpv8Nrd9HfY4ztFKfk//7mwdq23b41iSYCk7paOOH/zH01Zew/Tw83yOef5WHbceZ9/mp2zHitDDiZIOe36IiIgoUNj4ISIiokDhsBcRRV3JT6viXYRAylq7VceTtxxv5Z1YYHZnHlXcwcpr/epmHYduW0CUCtjzQ0RERIHCxg8REREFChs/REREFCic80NElKK8c61+CLkb0IXoUsmZP0alPESJgj0/REREFChs/BAREVGgiFLq4EcRERERpQj2/BAREVGgsPFDREREgcLGDxEREQUKGz9EREQUKGz8EBERUaCw8UNERESB8v9D4PCrWQgE7QAAAABJRU5ErkJggg==",
439
  "text/plain": [
440
  "<Figure size 720x720 with 5 Axes>"
441
  ]
 
460
  },
461
  {
462
  "cell_type": "code",
463
+ "execution_count": 57,
464
  "metadata": {},
465
  "outputs": [],
466
  "source": [
 
476
  },
477
  {
478
  "cell_type": "code",
479
+ "execution_count": 58,
480
  "metadata": {
481
  "tags": [
482
  "exclude"
 
487
  "name": "stdout",
488
  "output_type": "stream",
489
  "text": [
490
+ "tensor(3)\n"
491
+ ]
492
+ },
493
+ {
494
+ "name": "stderr",
495
+ "output_type": "stream",
496
+ "text": [
497
+ "[W NNPACK.cpp:64] Could not initialize NNPACK! Reason: Unsupported hardware.\n"
498
  ]
499
  },
500
  {
501
  "data": {
502
  "text/plain": [
503
+ "[{'digit': 0, 'prob': '0.00%', 'logits': tensor(-5.5980)},\n",
504
+ " {'digit': 1, 'prob': '0.00%', 'logits': tensor(-0.4972)},\n",
505
+ " {'digit': 2, 'prob': '0.02%', 'logits': tensor(1.2516)},\n",
506
+ " {'digit': 3, 'prob': '99.95%', 'logits': tensor(9.9263)},\n",
507
+ " {'digit': 4, 'prob': '0.00%', 'logits': tensor(-5.5094)},\n",
508
+ " {'digit': 5, 'prob': '0.01%', 'logits': tensor(0.2367)},\n",
509
+ " {'digit': 6, 'prob': '0.00%', 'logits': tensor(-9.4633)},\n",
510
+ " {'digit': 7, 'prob': '0.00%', 'logits': tensor(-2.4315)},\n",
511
+ " {'digit': 8, 'prob': '0.02%', 'logits': tensor(1.4733)},\n",
512
+ " {'digit': 9, 'prob': '0.00%', 'logits': tensor(-0.0205)}]"
513
  ]
514
  },
515
+ "execution_count": 58,
516
  "metadata": {},
517
  "output_type": "execute_result"
518
  }
 
536
  },
537
  {
538
  "cell_type": "code",
539
+ "execution_count": 59,
540
  "metadata": {
541
  "tags": [
542
  "exclude"
 
547
  "name": "stdout",
548
  "output_type": "stream",
549
  "text": [
550
+ "[NbConvertApp] Converting notebook mnist_classifier.ipynb to script\n"
 
551
  ]
552
  }
553
  ],