You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
45 KiB
226 lines
45 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "purple-passport",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([512, 1, 28, 28]) torch.Size([512]) tensor(-0.4242) tensor(2.8215)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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ox/9qCJtAhojrlQAANGQVAAA0ZBUAADRMKdSgB49egTxY489lpSbNQvz8pAhQ5Jyeg7lgw8+KEPrUAh/uZWPPvooqBs3blwQr169uiJtQtN21FFHJeULL7wwqBs2bFjBx3nzzTeT8s9//vOgbuLEiSW2rnRcqQAAoiGpAACiKeoZ9U3lgTnplWn/8pe/BLH/O0svvfLQQw+Vr2E58JCuT/JvIZaku+66Kymnl8+ZOXNmRdpUgxY55w6vdiPyacj/5wwYMCCIzz///CA+4YQTknKLFi2inPO5554L4oMOOijKcXcgZ9/hSgUAEA1JBQAQDUkFABBNk72leKedwpfuz6NMmTIlqNt5552D+Fvf+lZSrsYcCurmj1dL4e3dTXgOBZEdc8wxQewv8ZOeU2ndunUQ33HHHUm5rrntLl26JOWBAwcW28yK4koFABANSQUAEE2THf5K31bq3zacvhS98cYbg/jWW28tX8NQkl69egVx+lbvkSNHVrI5aCLOOeecIB48eHBS3rJlS1CXftLr3XffnZRnz56d9zxt27ZNypdddllQN2bMmKTcoUOHoK53795BnF45vRy4UgEARENSAQBEQ1IBAETTZOZU9t9//yCePHlyzm2nT58exOedd145moSIzj333CD+8MMPg7gSY8loep599tkgbtOmTVJOz6HcfPPNJZ9n7NixSfm73/1uzu3uvPPOIK5Gv+dKBQAQDUkFABANSQUAEE2jnlM5+OCDk/If//jHoC69ZMLChQuTcvo7Dqh9Xbt2DeL08jnr1q2rYGvqduCBBwbxkiVLqtQS1MdPfvKTipzH/x5W+v8un/8UyGrhSgUAEA1JBQAQTaMa/jrssMOCeO7cuUl5l112CermzZsXxP7yCsU8DRPYLj2kNWfOnJzbtmrVKoiXL1+elP1hWzQNu+22WxCnnz7bv3//pLxx48agbsGCBUnZX/qlWrhSAQBEQ1IBAERDUgEARNOg51SOO+64IL766quD2J9H+cc//hHUff3rXw/i9LIeqH2HHHJIUj7++OODukMPPbQibRg6dGhSPuWUU4K6jh07Fnycgw46KCmnH62QXpbj448/LqaJqFH+cvZTp04N6vr27Ztzv2XLlgXx97///aT8zjvvxGlcPXClAgCIhqQCAIiGpAIAiKbBzakcccQRSTm9lHS3bt2C+IYbbkjK48eP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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0 0 0.10715392976999283\n",
|
|
"0 10 0.09441263973712921\n",
|
|
"0 20 0.08484604209661484\n",
|
|
"0 30 0.07904400676488876\n",
|
|
"0 40 0.07372516393661499\n",
|
|
"0 50 0.07012302428483963\n",
|
|
"0 60 0.06528689712285995\n",
|
|
"0 70 0.0632181391119957\n",
|
|
"0 80 0.06004096940159798\n",
|
|
"0 90 0.05767397955060005\n",
|
|
"0 100 0.055417053401470184\n",
|
|
"0 110 0.0505610816180706\n",
|
|
"1 0 0.05042746663093567\n",
|
|
"1 10 0.048977602273225784\n",
|
|
"1 20 0.04761997610330582\n",
|
|
"1 30 0.04650115221738815\n",
|
|
"1 40 0.047395240515470505\n",
|
|
"1 50 0.04471096768975258\n",
|
|
"1 60 0.042456548660993576\n",
|
|
"1 70 0.04422177001833916\n",
|
|
"1 80 0.04179307073354721\n",
|
|
"1 90 0.041145212948322296\n",
|
|
"1 100 0.041938502341508865\n",
|
|
"1 110 0.04079464077949524\n",
|
|
"2 0 0.040465932339429855\n",
|
|
"2 10 0.03748380392789841\n",
|
|
"2 20 0.04005386680364609\n",
|
|
"2 30 0.04020233079791069\n",
|
|
"2 40 0.037923917174339294\n",
|
|
"2 50 0.03816062957048416\n",
|
|
"2 60 0.03467276319861412\n",
|
|
"2 70 0.033208537846803665\n",
|
|
"2 80 0.035218071192502975\n",
|
|
"2 90 0.035675473511219025\n",
|
|
"2 100 0.03398799151182175\n",
|
|
"2 110 0.034241534769535065\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAzfUlEQVR4nO3deXxU5fX48c+BhEVBRAxgWYOCyqIsAVEQUcStKF1A4GdbrVRa61LcKmprXWpbt6q1UqUVcUEWaStUUUTRiopIUFb5AgFRggsBFHFhP78/zr2dyWQCQ5KbSTLn/XrN6965987MyZTO8bnP85xHVBXnnHMuUa10B+Ccc65q8gThnHMuKU8QzjnnkvIE4ZxzLilPEM4555LKSncAFeXwww/Xtm3bpjsM55yrVhYuXLhJVXOSnasxCaJt27bk5+enOwznnKtWROTD0s75LSbnnHNJeYJwzjmXlCcI55xzSdWYPgjnnEvFrl27KCwsZPv27ekOpVLVq1ePli1bkp2dnfJrIk0QInIW8ABQG/iHqv4p4Xw/4H7gOGC4qk6LO/ci0Bt4Q1UHRRmncy5zFBYW0rBhQ9q2bYuIpDucSqGqbN68mcLCQnJzc1N+XWS3mESkNvAQcDbQERghIh0TLvsIuAh4Oslb3A38OKr4nHOZafv27TRp0iRjkgOAiNCkSZMDbjVF2QfRCyhQ1bWquhOYDAyOv0BV16nqEmBv4otV9RVgW4TxOecyVCYlh1BZ/uYoE0QLYH3c88LgWIURkVEiki8i+UVFRWV+nz174O9/hx07KjA455yr5qr1KCZVHaeqeaqal5OTdCJgSp59FkaNgptvrrjYnHOuIjRo0CBtnx1lgtgAtIp73jI4VuV88oltX3klvXE451xVEmWCWAC0F5FcEakDDAdmRPh5ZbZqlW2XLYOvv05vLM65mm3MmDE89NBD/3t+yy238Pvf/54BAwbQvXt3unTpwvTp00u87rXXXmPQoNiAzssvv5wJEyYAsHDhQk455RR69OjBmWeeySfhf/WWU2TDXFV1t4hcDszChrmOV9XlInIbkK+qM0SkJ/BvoDFwrojcqqqdAERkLnAM0EBECoGRqjoriljDBLFjB7z3HvTtG8WnOOeqmtGjYdGiin3Prl3h/vtLPz9s2DBGjx7NZZddBsDUqVOZNWsWV155JYcccgibNm2id+/enHfeeSl1LO/atYsrrriC6dOnk5OTw5QpU7jpppsYP358uf+WSOdBqOpMYGbCsZvj9hdgt56SvfbkKGOLt2oVnHwyzJ0Lixd7gnDORadbt25s3LiRjz/+mKKiIho3bkzz5s256qqreP3116lVqxYbNmzgs88+o3nz5vt9v5UrV7Js2TIGDhwIwJ49ezjiiCMqJNaMn0m9fTusWwc/+QksX24JwjmXGfb1X/pRGjp0KNOmTePTTz9l2LBhTJw4kaKiIhYuXEh2djZt27YtMWchKyuLvXtjMwLC86pKp06dmDdvXoXHWa1HMVWErVth4EDIy4Pjj4clS9IdkXOuphs2bBiTJ09m2rRpDB06lK1bt9K0aVOys7N59dVX+fDDkhW427Rpw/vvv8+OHTv44osveCUYVXP00UdTVFT0vwSxa9culi9fXiFxZnwLolkzmBX0bLz8ss2H2LMHatdOb1zOuZqrU6dObNu2jRYtWnDEEUdwwQUXcO6559KlSxfy8vI45phjSrymVatWnH/++XTu3Jnc3Fy6desGQJ06dZg2bRpXXnklW7duZffu3YwePZpOnTqVO05R1XK/SVWQl5en5V0w6LHH4OKLYeVK6NChggJzzlUpK1as4Nhjj013GGmR7G8XkYWqmpfs+oy/xRTv+ONt6/0QzjnnCaKYjh3t1pInCOec8wRRTL16cPTR3lHtXE1XU26tH4iy/M2eIBL06AGvvw6ffZbuSJxzUahXrx6bN2/OqCQRrgdRr169A3pdxo9iSnTjjTB1Ktx0E/zjH+mOxjlX0Vq2bElhYSHlqQBdHYUryh0ITxAJjjkG+vf3fgjnaqrs7OwDWlUtk/ktpiSaNYONG9MdhXPOpZcniCSaNbM+iAy6RemccyV4gkiiaVOr7LrNFzx1zmUwTxBJNGtmWx/J5JzLZJ4gkmja1LbeD+Gcy2SeIJLwFoRzzkWcIETkLBFZKSIFIjImyfl+IvKuiOwWkSEJ5y4UkdXB48Io40zkLQjnnIswQYhIbeAh4GygIzBCRDomXPYRcBHwdMJrDwN+B5wA9AJ+JyKNo4o1UU6Obb0F4ZzLZFG2IHoBBaq6VlV3ApOBwfEXqOo6VV0C7E147ZnAbFXdoqqfA7OBsyKMtZjsbGtFvPOOD3V1zmWuKBNEC2B93PPC4FiFvVZERolIvojkV/S0+auugpkzreyGc85lomrdSa2q41Q1T1XzcsL7QhXk2muhZ0+47DLIsJItzjkHRJsgNgCt4p63DI5F/doKkZUFDz4ImzfDSy9V5ic751zVEGWCWAC0F5FcEakDDAdmpPjaWcAZItI46Jw+IzhWqToGXeqFhZX9yc45l36RJQhV3Q1cjv2wrwCmqupyEblNRM4DEJGeIlIIDAUeEZHlwWu3ALdjSWYBcFtwrFI1bAiNGnmCcM5lpkjLfavqTGBmwrGb4/YXYLePkr12PDA+yvhS0aqVJwjnXGaq1p3UlaFlS08QzrnM5AliPzxBOOcylSeI/WjVymZU79yZ7kicc65yeYLYj5YtbTb1hkodZOucc+nnCWI/OnSw7fLl6Y3DOecqmyeI/ejWDWrXtrpMzjmXSTxB7MfBB0OnTp4gnHOZxxNECnr1ggULvLKrcy6zeIJIQa9esGULrF2b7kicc67yeIJIQa9etvXbTM65TOIJIgWdOkH9+p4gnHOZxRNECrKyoHt3TxDOucziCSJFvXtDfj58+226I3HOucrhCSJFp51m5TbmzUt3JM45Vzk8QaTo5JNtwtycOemOxDnnKocniBQ1bAh9+sA998DTT6c7Gueci16kCUJEzhKRlSJSICJjkpyvKyJTgvPzRaRtcLyOiDwmIktFZLGI9I8yzlQ99RTk5sLYsemOxDnnohdZghCR2sBDwNlAR2CEiHRMuGwk8LmqHgXcB9wZHL8EQFW7AAOBe0Uk7a2dVq1g0CDrrN6xI93ROOdctKL80e0FFKjqWlXdCUwGBidcMxh4PNifBgwQEcESyhwAVd0IfAHkRRhryk480ZLDe++lOxLnnItWlAmiBbA+7nlhcCzpNaq6G9gKNAEWA+eJSJaI5AI9gFaJHyAio0QkX0Tyi4qKIvgTSjrpJNu+9ValfJxzzqVN2m/blGI8llDygfuBt4A9iRep6jhVzVPVvJycnEoJrHlz+M53YNGiSvk455xLm6wI33sDxf+rv2VwLNk1hSKSBTQCNquqAleFF4nIW8CqCGM9IMcfD0uWpDsK55yLVpQtiAVAexHJFZE6wHBgRsI1M4ALg/0hwBxVVRE5SEQOBhCRgcBuVX0/wlgPyHHHwfvv+zrVzrmaLbIWhKruFpHLgVlAbWC8qi4XkduAfFWdATwKPCkiBcAWLIkANAVmicherJXx46jiLIvjj4ddu2DlSujSJd3ROOdcNERryCo4eXl5mp+fXymftWoVHH00DBsGEyfaDGvnnKuORGShqiYdJVpVO6mrtA4d4PbbYcoUeO65dEfjnHPR8ARRRtdfD4cfDpMmpTsS55yLhieIMsrOhqFDYcYM+PrrdEfjnHMVzxNEOQwZYutDzJ6d7kicc67ieYIoh5NPhkaN4L77YOPGdEfjnHMVyxNEOWRnw9lnw+uvQ9++sKfEXG/nnKu+PEGU0113WV/E6tXwz3+mOxrnnKs4niDKqVUrG8nUrh08+mi6o3HOuYrjCaIC1K5t60TMnQvbt6c7GuecqxieICrI6afbiKb69a1PwjnnqjtPEBWkf//YvvdFOOdqAk8QFaRhQ1i6FNq3t61zzlV3niAqUOfOMGAAvPsu1JAaiM65DOYJooJ16wZbt8Ibb6Q7EuecKx9PEBXszDOhcWPrk3jwwXRH45xzZecJooK1aQNr1sC558KVV8Ijj6Q7IuecK5tIE4SInCUiK0WkQETGJDlfV0SmBOfni0jb4Hi2iDwuIktFZIWI3BBlnBWtcWOYNg0GDrSy4Dt2pDsi55w7cJElCBGpDTwEnA10BEaISMeEy0YCn6vqUcB9wJ3B8aFAXVXtAvQAfh4mj+oiKwuuucb6I154Id3ROOfcgYuyBdELKFDVtaq6E5gMDE64ZjDweLA/DRggIgIocLCIZAH1gZ3AlxHGGokBAyAnBx5/fP/XOudcVRNlgmgBrI97XhgcS3qNqu4GtgJNsGTxNfAJ8BFwj6puiTDWSGRlwSWXwPTpsGJFuqNxzrkDU1U7qXsBe4DvALnANSLSLvEiERklIvkikl9UVFTZMaZk9GioWxf+9rd0R+KccwcmygSxAWgV97xlcCzpNcHtpEbAZuD/AS+q6i5V3Qi8CeQlfoCqjlPVPFXNy8nJieBPKL+cHDjtNKv4evHF8Mkn6Y7IOedSE2WCWAC0F5FcEakDDAdmJFwzA7gw2B8CzFFVxW4rnQYgIgcDvYH/izDWSJ1+OmzaBI895sNenXPVR2QJIuhTuByYBawApqrqchG5TUTOCy57FGgiIgXA1UA4FPYhoIGILMcSzWOquiSqWKN2+umx/T/8ARYuTF8szjmXKtEaUjQoLy9P8/Pz0x1GUqrWevjiCxv6Wrs2fP65Ffhzzrl0EpGFqlriFj5AVmUHk4lErP9B1favvhry8+HUU9MdmXPOla6qjmKqkUTgJz+x/XfeSW8szjm3P54gKlmTJnDkkTB/Pnz4IXz1Vbojcs655DxBpEHv3vDWW9C2LbRr57WanHNVkyeINBgwAD77zPaLiuDhh9Mbj3POJeMJIg3OOMO2Ilb59dVX0xuPc84l46OY0qBFCzjuOKhfH445BmbOjI1wcs65qsJbEGny73/DlCnQp4/dZlq9Ot0ROedccZ4g0qRdO1t9rn9/e/6vf9l20KDYUFjnnEun/SYIEWkmIo+KyAvB844iMjL60DJD+/ZWiuPBB2HOHHj+eXjySbvl5Jxz6ZRKC2ICVk/pO8HzVcDoiOLJSDfcYFVeBwyIHduQWPfWOecqWSoJ4nBVnQrshf8V4dsTaVQZ5rTT4PXX4eabrWYTwOLF6Y3JOedSSRBfi0gTbBlQRKQ3tvKbq0B9+8Ktt8L3v2/PZ8+GY4+1CXXOOZcOqQxzvRpbt+FIEXkTyMHWbnARaNQIOnSwFeh27oQxY6BfP0setWunOzrnXCbZbwtCVd8FTgFOAn4OdKrOazNUBz/9qSUHgLlz4Y474D//SW9MzrnMk8oopp9gS4D2ALoDI4JjLiI/+xkccgh07Ro79pe/pC0c51yGSuUWU8+4/XrAAOBd4IlIInIcfjisW2cLCi1cCNOnw5132oJDBx0EdeqkO0LnXCZI5RbTFXGPS7BWRINU3lxEzhKRlSJSICJjkpyvKyJTgvPzRaRtcPwCEVkU99grIl0P7E+r3ho3hqwsOOEE6NYN9u61Y+HEOueci1pZZlJ/DeTu7yIRqY2tLX020BG7NdUx4bKRwOeqehRwH3AngKpOVNWuqtoV+DHwgaouKkOsNUKXLrH9efNgzZr0xeKcyxyp9EH8R0RmBI/ngJXAv1N4715AgaquVdWdwGRgcMI1g4HHg/1pwACREiXrRgSvzVhHHVX8eThXwjnnopRKH8Q9cfu7gQ9VtTCF17UA1sc9LwROKO0aVd0tIluBJsCmuGuGUTKxACAio4BRAK1bt04hpOopK+5/pa5dbQjsgw/Cyy9Dz56lvsw558plvwlCVf9bGYEkIyInAN+o6rJk51V1HDAOIC8vr0ZXL3r4Ydi40Sq/PvigHbv3Xpic0W0r51yUSr3FJCLbROTLJI9tIvJlCu+9AWgV97xlcCzpNSKSBTQCNsedHw5MSuUPqel+/nP47W9tudLQtGmwYEH6YnLO1WylJghVbaiqhyR5NFTVQ1J47wVAexHJFZE62I/9jIRrZgAXBvtDgDmqGpb0qAWcT4b3PyQKE8RFF0GrVnDeeTax7p579vky55w7YCmvKCciTbF5EACo6kf7uj7oU7gcqwRbGxivqstF5DYgX1VnAI8CT4pIAbAFSyKhfsB6VV2b8l+TAdq1g+XL4eijbduzJ0yYYOeuvTatoTnnahjR/Sw8ICLnAfdi5b43Am2AFaraKfrwUpeXl6f5+fnpDqPSTZpkLYgdO2DrVpuB7ZxzqRKRhaqal+xcKvMgbgd6A6tUNRebSf12BcbnymHECHj2Wdvv0MH7JJxzFSeVBLFLVTcDtUSklqq+CiTNNi49evSw7WefwTXXWGti3bq0huScqwFSSRBfiEgDYC4wUUQewGZTuyoiJwcuuAAOO8zWj7jqKltLYtOm/b/WOedKk0qCeBUbfvor4EVgDXBulEG5A/fUU/Dmm7Bnj02k277dhsE651xZpZIgsoCXgNeAhsCU4JaTq2KOOaZ43aaJE9MXi3Ou+kulmuutwYily4AjgP+KyMuRR+bKZEiw1t+gQfDGG7bWtXPOlUXK8yCwIa6fYjOdm0YTjiuvK66wZUtHjrS5Er/8pSWKQw9Nd2TOueomlWquvxSR14BXsEJ6l6jqcVEH5sqmcWP41a+gQQN4/HFYtQoGD4avfViBc+4ApdKCaAWMzuT1GKqr00+HJ56wuRJHHAGdO8Mzz0DdurZqnXPO7UsqfRA3eHKovoYPh7lzoW9fW2yod28bArtlS7ojc85VdWVZUc5VM337wnPP2e2nwkKbH3HrrbB5s8+VcM6VzhNEhqhVC0491fY7dICxY6FlS2jWzPoqnHMukSeIDDJsGOTmwgsvwEEHQYsW0KePjXRa6zVznXMJ9lvNtbrI1GquZbVmjQ19/eYb65MYOBD+ncpK4865GqW81VxdDXTkkdCkiS06dN11VhF2/fr9vsw5l0E8QTgGDrTtokVpDcM5V8VEmiBE5CwRWSkiBSIyJsn5uiIyJTg/X0Taxp07TkTmichyEVkqIvUSX+8qRli/afFi2z7/PHz8cfricc5VDZElCBGpDTwEnA10BEaISMeEy0YCn6vqUcB9wJ3Ba7OAp4BfBHWg+gO7ooo10zVsCEcdBb/9LfTqZXWcLroo3VE559ItyhZEL6BAVdeq6k5gMjA44ZrBQDjIchowQEQEOANYoqqLAVR1s6ruiTDWjNesmW0XLIB69WD2bNv/xz+gdWtbhMg5l1miTBAtgPhuz8LgWNJrVHU3sBWr99QBUBGZJSLvisivk32AiIwSkXwRyS8qKqrwPyCTXHedzbpesQJWrrRWxdixcOml1nk9Y0a6I3TOVbaq2kmdBfQFLgi23xeRAYkXqeo4Vc1T1bycnJzKjrFGGTwYJk2yNSVat7b6TVOmwN69dv7RR9Mbn3Ou8kWZIDZghf5CLYNjSa8J+h0aYeXEC4HXVXWTqn4DzAS6RxirS/Dzn8O331qCqFfPSoaHySJeQYHNqXDO1TxRJogFQHsRyRWROsBwIPFGxQzgwmB/CDBHbebeLKCLiBwUJI5TgPcjjNUl6N4dTjrJ9n/xCysXHs623rzZ+ihUoX176+B2ztU8B7Jg0AFR1d0icjn2Y18bGK+qy0XkNiBfVWcAjwJPikgBsAVLIqjq5yLyZyzJKDBTVZ+PKlaX3Isvwssv22S6+++3YbAbNlhNJ1UrHe6cq7m81Ibbr2+/tdpNofbtYfVqaNoUNm60Y3v3gkh64nPOlZ2X2nDlUr8+HHyw7d9+u61zPWFCLDmA3XZyztUsniBcSt54A5Ytg9/8Bpo3hwsusHpOoQ2Jww+cc9WeJwiXkq5doVOn2POsLJg4EUaPtueFhbZ9+2340Y9g9+7KjtA5V9E8QbgyO+EEuPpq21+xwlatu/NOSxxvv53e2Jxz5RfZKCaXGZo3t+111xU//tJLttSpc6768gThyiU7OzaaKRzd1KABzJplw2K7dYNGjeDCC+Gww9IdrXPuQHiCcOX27ru2Ol1WliWGt96Ce++1Ya8vvQTbt8OePXDttemO1Dl3ILwPwpVbixY2DLZuXTjvPOjc2Tqpd+2y5AA2+qlZM/h10rKLzrmqyBOEq3Dxo51CO3bYbai774ZVqyo/JufcgfME4Src0Ucnn1V9zjm2nTo1dmzpUjj7bPjqq8qJzTmXOk8QrsIddBC0a2e3lK67zsqIn3QSPPywjWz6xz9g2za79re/tZpPz3ulLeeqHO+kdpEYNMiSwF132fPhw237pz9Bv34wZIgljnAZjxUr0hOnc650niBcJO6/P/nxPn3gkUeshPif/gRffmnH582rtNCccynyW0yu0v3sZ3D88bHy4QDz59tQ2HPPhSuvhJ070xujc84ThEuTTp3g/fdjCWLrVhg/3sp1PPggPP74gb3fli1wySWxvg3nXPl5gnBp0bGjFfhbtw46dLBj118PbdvaCKgPPrAS4hdfDJddtv/3e+UV6/x+660oo3Yus0SaIETkLBFZKSIFIjImyfm6IjIlOD9fRNoGx9uKyLcisih4PBxlnK7ydewY2w+XNv38cxvy2ry5zZm4/np47DEYOza2HvaaNXDssbbM6Y4dduyee+CFF2z/s88q729wrqaLrJNaRGoDDwEDgUJggYjMUNX4taVHAp+r6lEiMhy4ExgWnFujql2jis+lV5cusf0+fWwBIrAf/7festtP770Xu+bTT+E737FSHv/3f3ZszRo7Fl8osLQE8e239h65uRX6ZzhXo0XZgugFFKjqWlXdCUwGBidcMxgI7zZPAwaI+MKVmSA3F558En74Q/je92LHO3a04n/z5lmZjttvt+MffGDbpUtj165da0ki3qefJv+8a66xuRnxq+A55/YtygTRAlgf97wwOJb0GlXdDWwFmgTnckXkPRH5r4icnOwDRGSUiOSLSH5RUVHFRu8i96MfwbRpcPjhsWNhggCoVctGNYFNsGvTxibbHX20HVu7FgoKir/nggU28S7R4sW27dTJJ+U5l6qq2kn9CdBaVbsBVwNPi8ghiRep6jhVzVPVvJxwxpWr1po3jyWINm1iHdgAH31k21NPtZLiyRLE3LmWVL75Jnbs66+hcWPb37QpecHA+fN9kSPnEkU5UW4D0CruecvgWLJrCkUkC2gEbFZVBXYAqOpCEVkDdADyI4zXpdF//mO3kUSsRAdY/0L9+rFrfvELa0E0bWq3ix54IPl77d5tLYbp063sx+9+Z8ePO86G06qWfE3v3rZNds65TBVlglgAtBeRXCwRDAf+X8I1M4ALgXnAEGCOqqqI5ABbVHWPiLQD2gNrI4zVpdmgQbH9sAVxSNBmFLEf7j//2daduOwymDx53+/3wgu2/Gm8Hj2sJPm0aaW/bt06G2rrnIvwFlPQp3A5MAtYAUxV1eUicpuInBdc9ijQREQKsFtJ4VDYfsASEVmEdV7/QlW3RBWrq1qygv9sCRPE+vU2Z6J+ffjjHy2BXHmlzcbu2dM6sidOhBNPjL3H2LEl37d5c6v9tHmzzdoOxe/Pnl3xf49z1VWktZhUdSYwM+HYzXH724GhSV73T+CfUcbmqq4jj7TtmWfatkXi0AasFZE4gW7DBhv91KMHLFxY8jXNm8daI1u22Cipe+6B0aNj17zxhs3Ids55sT5XBZ10kg1fbdfuwF53zTW29vWKFdC/vx2rWzc2oa5589iEu6Iim6U9f751eIc++sjqQNWpEzv2l7/YbafzzosdmzQJPv7YPtO5mqqqjmJyGe5AkwPYsNimTeGUU+DnP7d1sdetsyVQwc6Fg93ee8+SA9h8DID27eG11yypTJkSe99f/QoGJ8zgeeABuPlmW1bVuZrKWxCuRno4rjjLCSfAsmU21DWchvnoo7Zt186Gy4KNZFq92vbvu8/WrTjiiJLvvXevvd8339i8i127oFev4iOunKsJvAXharwHH4Rnn7VO7bAF8eqr1tcRX6ajZ8/Y/vz5Nsx2Q9zA7G+/te2HH9rcCrASIf37w7hxEf4B+7F9Ozz1lA/RdRXPE4Sr8erXj90iip+1fc451iF92GHQqFHyOk3PPhvbDyflheU+6tWDJ56w/bAl8eGHFR7+fs2YAT/+cfEyJM5VBE8QLqNkZ8f2r7gCate2VsKqVdC6dexc2Mn9r3/Fjq1cadvwh3jEiFgH+Lvv2i2ptm1tol5lCqvMbN5cuZ/raj5PEC7jLFliRfvat7fn9epZB3aYILp0sVtQAwbAnDmx14WJ4d137fZUWCcKbORUWKrjk0+i/xvibQlmCH3xReV+rqv5PEG4jNOlS6wvIt6hh8LTT8eK/fXqVfzchAnWOsjPt/6KU06xTu9w5ndo/XrrrxgwwBYxCo0eDVdddWCxXnllyRnhiTxBuKh4gnAuzogR1jkNsRYGwK232hyJ3/zGtnl51ncxfrzNvn7wQVvVDixBPP+8tT4uuSR2/IEH4P77YdEiGDXKRlq1amXJRNUWSHrzzeLxzJgBL72075g9Qbio+DBX50px1FGx/Ysush/88L/mwxFPF11k27AQIFiCePtt6/g+9FBrObzzTuy9unWzbZMm1m/w0Ue2vesuWyxp7tzYtUVFloj2JUwQn39+4H+jc/viCcK5UsS3IBo2tMlzt91mP/55eSWvb9TIrnv/fWtBXHIJdO8OP/1p8c7uUNipvGFDbLLeG2/A8uVWMuTee22uxZb9VCHzFoSLiicI50oRlh0H62uoWxfuuGPfr2nVytbRBhg+PDZ5LtkiRqFXXrF5DOefb4nkiSes5RAurbq/lkGYIJ54wlost9227+udS5X3QThXirIsftuypW1bt7aZ2WHp8MR+hHBVPIA//AEOPtj6MQYOtFLm8RP0vvxy30NnwwSxdatVu925057n59sKfaUtw+rc/niCcG4f7rjDOqZTNXy4rXg3bpzVhjr0ULvtFL8W9mGH2UiqeIMG2Wio4cOtTyIxoSTePnruOZg1K1aZNrR7d6zl8aMf2fDbsObUnj2xYoWJnnsuVnLEuZDfYnJuH2688cCu/+lP7RESsVbE0qXw3e/CzJnWtxG2NEJhn0a4sl2iLVssGTzwgJUz/8EPYscTWxdLltg8jXBiX9h53r9/7H3+/nfo08eO79plczqaNoXPPiv+Xvn5Fmvz5gfyLbiawhOEcxEL+yH697cif506WV9FvDBBJCv3AdaSOfLIkn0gYed2vKVLY2tqgN1i2rnTOsBDr70WSxBhCZH4Vg7YhMCePS15zJhR2l/najJPEM5F7OOPbXvSSfZje9hh9gMdr2tX22ZnW0IJCwOGwppPiRLXo8jKslLm8bewPv00dtvprLOswzz+ltX775d8X1WbpAclWxUuc0TaByEiZ4nIShEpEJExSc7XFZEpwfn5ItI24XxrEflKRK6NMk7nonT77bYAUffu1jmdk2N9Dn/5C/z3vzb/IX7RooYNS3+vNm1i+0uW2CJG994bm/X9wx/C66/D4sV2e6tFCyv9EZYJuecea6WE5UCmTIGf/MT2w6Vex4+3/pNw0t4338Q+89tvYdOmsn8XpRk/vnjHvKsiVDWSB1AbWAO0A+oAi4GOCdf8Eng42B8OTEk4Pw14Brh2f5/Xo0cPda4maNdOFVQvv1z1V7+y/fDRr5/q9dernnlm8dd8+KHquHGqc+fadXXrqrZsqdqnT/HX79ypeuKJ9njxxeLnQHXUKNUOHWLPTz1VtXHj2OdccYW97549Zf/79u5VLSqKPf/gA/usm26KHZs7V/W118r+GS51QL6W8rsaZQuiF1CgqmtVdScwGUhYl4vBwOPB/jRggIgNLhSR7wEfAMsjjNG5Kufii217001w993Fz7VuDX/6U8l5Fa1b28S8k06yRY527LB+iPjO5dxcu4XVvLlNxDvrrJKfPW6cVbYFa5UMHGjzMMJWxH//C4WF1j9RVk8/ba2oRYvseTjLfMWK2DUnnxyrqBvv9NNL9t+46ESZIFoA6+OeFwbHkl6jqruBrUATEWkAXA/cuq8PEJFRIpIvIvlFYc1j56q5G2+0DuPmzYuXJ4fiJcmTqVXLllsFG90Urq09alSsMm3iiKS//hX+/e/ixy6+2GaMtwj+H7thgyWJ5cF/roUJas+e1P+u0OzZtp040bYLFtg2TBClDcUFm1RYWHjgn+nKpqrOg7gFuE9Vv9rXRao6TlXzVDUvJ1l5TueqIZHi1Wa3bYutWLe/BAFw6aW2PfvsWF/DsGGxSXuJy6j+8IfFV9MDG4orEhuOu2aNVaLds8dmlN95pz0aNSq+qFL79sWH+SYT3/+xc2esBbF6tQ25jU8ADz8cG2UVL75fxEUnygSxAYhvDLYMjiW9RkSygEbAZuAE4C4RWQeMBm4UkcsjjNW5KqtBA1suFaBDh/1f37Sp3RYaM8bW1r7wQrtlE2rc2LatWsGvf20tihYtbLLciBF2LqxDFbYg/vrXWJJ6+WW7fTVmjC29euut1mNRWGg/5hMm2HUvvWQJZn38fQSsA/2II+z4739vcy1ycqzFU1BQfFTVpZfC2LEl/8Z0rNyXiaJMEAuA9iKSKyJ1sE7oxNHUM4ALg/0hwJyg3+RkVW2rqm2B+4E/qOpfI4zVuSqtVy9YuDD5fflkDj3UVsvr2tV+sONvVYW3hUaOLL7WxHe/G0skYSIKWxBvvWXbKVOgb1+45RZ7fvDB1pfw5pvwwgux9/r6ayttvmFD8bkbBQU2bPbXv7aWyx13WGvgggvs/PLlxfsiIDbhL37N7XXrbLuv21FffGFx//GPNtLLlUFpvdcV8QDOAVZho5luCo7dBpwX7NfDRikVAO8A7ZK8xy34KCbnKsxXX6n++te2TXZu4kQbaRTKybFRRo0axY7t3q36ox+pPvusjZgaPVr13HNjo5/eeEO1bVvbr1fPRj1t26batKlqdrbq0qWqzzwTu37xYtXatW0k0wUXFB9ZdeSR9plffhk7du+9qiefbO/17rt2/v77VSdMiMU4aFDx93HJsY9RTJEmiMp8eIJwLho9e9ovRceOyc+fe65q/fp2zYgRtm3QIPYaUP34Y9X5821/0iR73ZYtqrVqWeLZs0e1c2fVM86wYbXh68Cu2b49NhwWVPv3j+1fd529X6tWqr16xeJq3rx4gijP0FxV1XvuUR05snzvURXtK0FU1U5q51wVEXZuJ9aPCl18cWzm9w03wNChduupRw+44go7/sEHVmYEbMIgWF/IgAFW3LBWLTv+0kvWf3LJJbH337vXbk2F62dAbCZ6mzY2FHjKFOvTWL06ds2hhxaPc18T8QoKrA7W1KmlX/P88/DMM7aQ1JgS035rJk8Qzrl92l+C+N73rBTImDFW4mPqVCvvkZ8fKz7Yp4/1eWRnF683NX06TJpk+2G5kVq1rBJtvKlTY1Vrw5FcWVmWkMCq4IIll82brc3w0UfF3yM+eSSaMMGq3g4bVnppkfXrrfT6mjXWd6Na8pq33rJragpPEM65fQp/0FskzmKK8+MfW2dwosRJbTk5xTvM69eHevVsf+hQ+4FeuhQOPzx2zQ9+YIsgTZ9uzwcNsm2dOtbS+Nvfin/G6tVW/+qbb6wUyVVX2fGxY+G3v7W5FKNGxTq4X3iheEd6OIrqscessOK8ebFRWvHC8iVgnfKffQb9+sVGXX3wQWw98kRffx2rslullXbvqbo9vA/CuWjMnGn38B955MBfu3dv8X6AA+ksFrGO5q++Uj3ooNjrw3jC94rvvAbVJ55QnTXL9mfPtg71xBhAde1a1U2bivdlgOrf/qb69dex47//verChSVff9tt1tmuavHVrm3Hf/pT1Xfesb6TMMZvvy3e8R+WUymv//zHBhyUB95J7Zwrq08/tfpMS5aU7fXhD2rDhlYvKlV798Z+VMPOb1D95hvb/vKXJT+jVi3V4cNVDz3UHps22fm771Z94AHVJk1i186ebaOwwH5kt2+3zvbRo2Md6ske2dnWoR4+jx+NleyxYIFtH3jAEk98vPFJoyyGDLHEtHNn2d9jXwlC7Hz1l5eXp/n5+ekOwzmXIFy6dc8e618oi/x8m+2dk2NlSL76ym5P1a5t5ydNsj6HF1+0Duy6da3abeLEwqFDYdq0kvFt22Yd6127wkEHWVn2G2+0/cRZ28ceC+ecE5tbceyxJeduxGve3PpkGjSwuF95xTrnwWaVl2cxpu7drbz7mjXQrl3Z3kNEFqpqXrJz3gfhnIvUlClW0rysyQFsQaWtW2MF/ho0iCUHsBng118fWx72wguTzzo/8cSSx1QtOYB1yM+bZ8mhVi2bFBjv9NPhzDOLz0zfV3KA2JrgXwWFg+In7SUrIwLWP/LHP9oysKrJS4uoxl6/Zs2+YygrXzDIORep88+vmPc55BB77Mtpp1kL4dRTk58fPtxma48fHzv25z/H9keOtNFMn35qP9KJneyzZlniUIV//tM61Xfvho4dky+8FB97OLpp5szY8YKCkknohhusou6//mUJonNnGD3aEu1RR8WGCRcVWcsHIlxPvLR7T9Xt4X0QzrlUhX0Aq1cnP//AA6rTp6vefLNdN3KkamFhyeuOOSbWh7Gvfojhw2178MHFj7dta2t5LFqketppqs8/X/x848aqrVvHnterF/vsN9+MHQ8nC5btu/CJcs459z9Dh9o2fu3ueFdeaUNkw6G9xx6bfJhvOAS4b19bSjZc2W/sWFvZL+x/CYfmhqv3hdats+q348dbOfbvfjd2Liy6+NFHsRUHt2+PrdcR3laqVy+6FoQnCOdcxpk40W7PhD/gpQknB5aWSMIEceyxdkto8mSb0HfppdZPEc7n+N73LGncfnvstY89Zrff5syx5WfDiYJgE/deeQWaNLHnTz9t8yrAlq196SXrnK5b1z7H+yCcc66CZGeXXIwpmVNPtcl1Z5yR/Pzpp1uV3dxc6x9I1Ly59VkcfHBsnY7QwIHWhzFrlnXAn3++rRb4ySfWyQ7WH3LvvfY59evb9VOm2AJPCxfCCSfA448XX9O8IvkwV+eci8iQIfbjH66iB7FWy86dlqTee886x595pvSWSry+fa321eLFNnIrfhZ4WexrmKu3IJxzLiKPPlpyzYqxY+2WUdiC6dbtwNb47twZHnnE9vv0qZg4S+N9EM45F5FGjWIr+IUuvRTmzi37e3buHNtPdQGpsvIE4Zxz1cjRR9u2Xz+b6R2lSBOEiJwlIitFpEBESlRQF5G6IjIlOD9fRNoGx3uJyKLgsVhEvh9lnM45V1306wdXXx0rkx6lyPogRKQ28BAwECgEFojIDFWNn284EvhcVY8SkeHAncAwYBmQp6q7ReQIYLGI/EdVd0cVr3POVQd161beGttRtiB6AQWqulZVdwKTgcEJ1wwGHg/2pwEDRERU9Zu4ZFAPqBlDrZxzrhqJMkG0ANbHPS8MjiW9JkgIW4EmACJygogsB5YCv0jWehCRUSKSLyL5RUVFEfwJzjmXuapsJ7WqzlfVTkBP4AYRqZfkmnGqmqeqeTk5OZUfpHPO1WBRJogNQHwtxJbBsaTXiEgW0AjYHH+Bqq4AvgI645xzrtJEmSAWAO1FJFdE6gDDgRkJ18wAgknlDAHmqKoGr8kCEJE2wDHAughjdc45lyCyUUzBCKTLgVlAbWC8qi4Xkduw8rIzgEeBJ0WkANiCJRGAvsAYEdkF7AV+qaqboorVOedcSV6LyTnnMpgvOeqcc+6A1ZgWhIgUAR+W4y0OB6rLbSyPNRoeazQ81mhUVKxtVDXpMNAakyDKS0TyS2tmVTUeazQ81mh4rNGojFj9FpNzzrmkPEE455xLyhNEzLh0B3AAPNZoeKzR8FijEXms3gfhnHMuKW9BOOecS8oThHPOuaQyPkHsb9W7dBORdSKyNFhdLz84dpiIzBaR1cG28f7eJ8L4xovIRhFZFncsaXxi/hJ810tEpHsViPUWEdkQt4LhOXHnbghiXSkiZ1ZinK1E5FUReV9ElovIr4LjVe573UesVe57DT67noi8E6xUuVxEbg2O5warWhaIrXJZJziedNXLNMc6QUQ+iPtuuwbHK/7fgapm7AOrEbUGaAfUARYDHdMdV0KM64DDE47dBYwJ9scAd6Yxvn5Ad2DZ/uIDzgFeAAToDcyvArHeAlyb5NqOwb+HukBu8O+kdiXFeQTQPdhvCKwK4qly3+s+Yq1y32vw+QI0CPazgfnBdzYVGB4cfxi4NNj/JfBwsD8cmFIFYp0ADElyfYX/O8j0FkQqq95VRfEr8T0OfC9dgajq61ihxXilxTcYeELN28ChYkvKVopSYi3NYGCyqu5Q1Q+AAuzfS+RU9RNVfTfY3waswBbXqnLf6z5iLU3avleA4Dv6KniaHTwUOA1b1RJKfrclVr1Mc6ylqfB/B5meIFJZ9S7dFHhJRBaKyKjgWDNV/STY/xRolp7QSlVafFX1+748aJKPj7tdVyViDW5pdMP+67FKf68JsUIV/V5FpLaILAI2ArOxVswXGlu1Mj6mUle9TEesqhp+t3cE3+19IlI3MdZAub/bTE8Q1UFfVe0OnA1cJiL94k+qtS2r7Fjlqh4f8DfgSKAr8AlQScvB75+INAD+CYxW1S/jz1W17zVJrFX2e1XVParaFVvErBe23kyVlBiriHQGbsBi7gkcBlwf1edneoJIZdW7tFLVDcF2I/Bv7B/0Z2HTMdhuTF+ESZUWX5X7vlX1s+D/hHuBvxO73ZHWWEUkG/vBnaiq/woOV8nvNVmsVfV7jaeqXwCvAidit2PC9XHiY9rvqpeVIS7Ws4LbeqqqO4DHiPC7zfQEkcqqd2kjIgeLSMNwHzgDWEbxlfguBKanJ8JSlRbfDOAnwWiL3sDWuFsmaZFwj/b72PcLFuvwYBRLLtAeeKeSYhJsMa0VqvrnuFNV7nstLdaq+L0GceWIyKHBfn1gINZv8iq2qiWU/G5LrHqZxlj/L+4/EgTrK4n/biv230HUPfFV/YH1/K/C7kPelO54EmJrh434WAwsD+PD7oG+AqwGXgYOS2OMk7BbCLuwe54jS4sPG13xUPBdLwXyqkCsTwaxLAn+D3ZE3PU3BbGuBM6uxDj7YrePlgCLgsc5VfF73UesVe57DT77OOC9IK5lwM3B8XZYoioAngHqBsfrBc8LgvPtqkCsc4LvdhnwFLGRThX+78BLbTjnnEsq028xOeecK4UnCOecc0l5gnDOOZeUJwjnnHNJeYJwzjmXlCcI5yqYiIwWkYPSHYdz5eXDXJ2rYCKyDhuDvindsThXHt6CcK4cgtnuzwc1+5eJyO+A7wCvisirwTVniMg8EXlXRJ4J6haFa33cJbbexzsiclQ6/xbnEnmCcK58zgI+VtXjVbUzcD/wMXCqqp4qIocDvwFOVyu6mA9cHff6raraBfhr8FrnqgxPEM6Vz1JgoIjcKSInq+rWhPO9sUVy3gzKNl8ItIk7Pylue2LUwTp3ILL2f4lzrjSquipY2vEc4Pci8krCJYLV8R9R2luUsu9c2nkLwrlyEJHvAN+o6lPA3diSptuw5TcB3gb6hP0LQZ9Fh7i3GBa3nVc5UTuXGm9BOFc+XYC7RWQvViX2UuxW0Ysi8nHQD3ERMClu5a/fYBWEARqLyBJgB1BaK8O5tPBhrs6liQ+HdVWd32JyzjmXlLcgnHPOJeUtCOecc0l5gnDOOZeUJwjnnHNJeYJwzjmXlCcI55xzSf1/yE9CjkP0YpwAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"test acc: 0.8815\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 6 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import torch\n",
|
|
"from torch import nn\n",
|
|
"from torch.nn import functional as F\n",
|
|
"from torch import optim\n",
|
|
"\n",
|
|
"import torchvision\n",
|
|
"from matplotlib import pyplot as plt\n",
|
|
"import utils\n",
|
|
"\n",
|
|
"def plot_curve(data):\n",
|
|
" fig = plt.figure()\n",
|
|
" plt.plot(range(len(data)), data, color='blue')\n",
|
|
" plt.legend(['value'], loc='upper right')\n",
|
|
" plt.xlabel('step')\n",
|
|
" plt.ylabel('value')\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"\n",
|
|
"def plot_image(img, label, name):\n",
|
|
"\n",
|
|
" fig = plt.figure()\n",
|
|
" for i in range(6):\n",
|
|
" plt.subplot(2, 3, i+1)\n",
|
|
" plt.tight_layout()\n",
|
|
" plt.imshow(img[i, 0]*0.3081+0.1307, cmap='gray', interpolation='none')\n",
|
|
" plt.title(\"{}: {}\".format(name,label[i].item()))\n",
|
|
" plt.xticks([])\n",
|
|
" plt.yticks([])\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"def one_hot(label, depth=10):\n",
|
|
" out = torch.zeros(label.size(0), depth)\n",
|
|
" idx = torch.LongTensor(label).view(-1, 1)\n",
|
|
" out.scatter_(dim=1, index=idx, value=1)\n",
|
|
" return out\n",
|
|
"\n",
|
|
"batch_size=512\n",
|
|
"train_loader=torch.utils.data.DataLoader(torchvision.datasets.MNIST('mnist_data',train=True,download=True,transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Normalize((0.1307,),(0.3081,))])),batch_size=batch_size,shuffle=True)\n",
|
|
"\n",
|
|
"test_loader=torch.utils.data.DataLoader(torchvision.datasets.MNIST('mnist_data/',train=False,download=True,transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Normalize((0.1307,),(0.3081,))])),batch_size=batch_size,shuffle=True)\n",
|
|
"\n",
|
|
"x,y=next(iter(train_loader))\n",
|
|
"print(x.shape,y.shape,x.min(),x.max())\n",
|
|
"plot_image(x,y,'image_sample')\n",
|
|
"\n",
|
|
"class Net(nn.Module):\n",
|
|
" def __init__(self):\n",
|
|
" super(Net,self).__init__()\n",
|
|
" self.fc1=nn.Linear(28*28,256)\n",
|
|
" self.fc2=nn.Linear(256,64)\n",
|
|
" self.fc3=nn.Linear(64,10)\n",
|
|
" \n",
|
|
" def forward(self,x):\n",
|
|
" x=F.relu(self.fc1(x))\n",
|
|
" x=F.relu(self.fc2(x))\n",
|
|
" x=self.fc3(x)\n",
|
|
" return x\n",
|
|
" \n",
|
|
"net=Net()\n",
|
|
"optimizer=optim.SGD(net.parameters(),lr=0.01,momentum=0.9)\n",
|
|
"train_loss=[]\n",
|
|
"for epoch in range(3):\n",
|
|
" for batch_idx,(x,y) in enumerate(train_loader):\n",
|
|
" x=x.view(x.size(0),28*28)\n",
|
|
" out=net(x)\n",
|
|
" y_onehot=one_hot(y)\n",
|
|
" loss=F.mse_loss(out,y_onehot)\n",
|
|
" optimizer.zero_grad()\n",
|
|
" loss.backward()\n",
|
|
" optimizer.step()\n",
|
|
" train_loss.append(loss.item())\n",
|
|
" \n",
|
|
" if batch_idx %10==0:\n",
|
|
" print(epoch,batch_idx,loss.item())\n",
|
|
"\n",
|
|
"plot_curve(train_loss)\n",
|
|
"\n",
|
|
"total_correct=0\n",
|
|
"for x,y in test_loader:\n",
|
|
" x=x.view(x.size(0),28*28)\n",
|
|
" out=net(x)\n",
|
|
" pred=out.argmax(dim=1)\n",
|
|
" correct=pred.eq(y).sum().float().item()\n",
|
|
" total_correct+=correct\n",
|
|
"total_num=len(test_loader.dataset)\n",
|
|
"acc=total_correct/total_num\n",
|
|
"print(\"test acc:\",acc)\n",
|
|
"\n",
|
|
"x,y=next(iter(test_loader))\n",
|
|
"out=net(x.view(x.size(0),28*28))\n",
|
|
"pred=out.argmax(dim=1)\n",
|
|
"plot_image(x,pred,'test')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "champion-invalid",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|