Files
deeplearn-torch/Chapter_14.ipynb

5370 lines
4.0 MiB
Plaintext
Raw Permalink Normal View History

2026-01-14 15:19:22 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:40.279407Z",
"start_time": "2021-04-18T05:20:39.004692Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"import torch\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torchvision \n",
"import torchvision.transforms\n",
"import math\n",
"from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence\n",
"from torchvision import transforms\n",
"\n",
"from torch.utils.data import Dataset, DataLoader\n",
"\n",
"from tqdm.autonotebook import tqdm\n",
"\n",
"from idlmam import set_seed\n",
"\n",
"import scipy\n",
"import scipy.ndimage\n",
"\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.pyplot import imshow\n",
"%matplotlib inline\n",
"from IPython.display import set_matplotlib_formats\n",
"set_matplotlib_formats('png', 'pdf')\n",
"\n",
"import pandas as pd\n",
"\n",
"from sklearn.metrics import accuracy_score\n",
"\n",
"import time\n",
"\n",
"from idlmam import LastTimeStep, train_network, Flatten, weight_reset, View, LambdaLayer\n",
"from idlmam import AttentionAvg, GeneralScore, DotScore, AdditiveAttentionScore, getMaskByFill\n",
"\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:40.284642Z",
"start_time": "2021-04-18T05:20:40.281087Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from IPython.display import set_matplotlib_formats\n",
"set_matplotlib_formats('png', 'pdf')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:40.300597Z",
"start_time": "2021-04-18T05:20:40.285842Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"device = torch.device(\"cuda\") if torch.cuda.is_available() else torch.device(\"cpu\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:40.306632Z",
"start_time": "2021-04-18T05:20:40.301971Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"torch.backends.cudnn.deterministic=True\n",
"set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:40.956486Z",
"start_time": "2021-04-18T05:20:40.314634Z"
}
},
"outputs": [],
"source": [
"import requests\n",
"from PIL import Image\n",
"from io import BytesIO\n",
"\n",
"#This image was by \tSajjad Fazel https://commons.wikimedia.org/wiki/User:SajjadF\n",
"url = \"https://upload.wikimedia.org/wikipedia/commons/9/9c/Zebra_in_Mikumi.JPG\"\n",
"\n",
"response = requests.get(url)\n",
"img = Image.open(BytesIO(response.content))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:41.174602Z",
"start_time": "2021-04-18T05:20:40.959726Z"
}
},
"outputs": [],
"source": [
"to_tensor = transforms.ToTensor() # transform converts PIL images to PyTorch tensors\n",
"resize = torchvision.transforms.Resize(1000) #Resize smallest dimension to 1000 pixels\n",
"crop = torchvision.transforms.CenterCrop((1000, 1000)) #crop out the cente 1000x1000 pixels\n",
"img_tensor_big = to_tensor(crop(resize(img))) #combine all three transformation steps to convert the image"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:41.495463Z",
"start_time": "2021-04-18T05:20:41.176451Z"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=1000x1000 at 0x7F677C6CEC90>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"to_img = transforms.ToPILImage()\n",
"to_img(img_tensor_big)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:41.522462Z",
"start_time": "2021-04-18T05:20:41.497157Z"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=250x250 at 0x7F6773646E90>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shrink_factor = 4 # How much pooling to perform\n",
"img_tensor_small = F.max_pool2d(img_tensor_big, (shrink_factor,shrink_factor)) #Apply pooling\n",
"to_img(img_tensor_small) #Look at the resulting image"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:43.413600Z",
"start_time": "2021-04-18T05:20:41.523616Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Files already downloaded and verified\n",
"Files already downloaded and verified\n",
"Files already downloaded and verified\n"
]
}
],
"source": [
"B = 128\n",
"epochs = 30\n",
"\n",
"train_transform = transforms.Compose( #our transform for training, random crop -> PyTorch tensor\n",
" [\n",
" transforms.RandomCrop((24,24)),\n",
" transforms.ToTensor(),\n",
" ])\n",
"test_transform = transforms.Compose( #our transform for testing, crop the center -> PyTorch tensor\n",
" [\n",
" transforms.CenterCrop((24,24)),\n",
" transforms.ToTensor(),\n",
" ])\n",
"\n",
"trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=train_transform)\n",
"train_loader = torch.utils.data.DataLoader(trainset, batch_size=B, shuffle=True, num_workers=2)\n",
"#A version of the test set with full 32x32 images, so we can test specific crops\n",
"testset_nocrop = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transforms.ToTensor())\n",
"testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=test_transform)\n",
"#Our test loader used during evaluation is the deterministic center crop. \n",
"test_loader = torch.utils.data.DataLoader(testset, batch_size=B, shuffle=False, num_workers=2)\n",
"cifar10_classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') #Mappnig of the class index back to their original names for CIFAR10"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:20:43.949126Z",
"start_time": "2021-04-18T05:20:43.414955Z"
}
},
"outputs": [
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 1440x720 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"f, axarr = plt.subplots(1,4, figsize=(20,10)) #Make a 1x4 grid\n",
"for i in range(4): \n",
" x, y = trainset[30] #Grabing a specific item from the train set (I like planes)\n",
" axarr[i].imshow(x.numpy().transpose(1,2,0)) #Re-order to (W, H, C) that numpy & matplotlib like for images\n",
" axarr[i].text(0.0, 0.5, cifar10_classes[y].upper(), dict(size=30, color='black')) #Plot with class name in the corner"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:26.702888Z",
"start_time": "2021-04-18T05:20:43.950393Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cfcd0eb89d864d9fad753005fcb237b7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=30.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"C = 3 #Number of input channels\n",
"h = 16 #Number of channels in the hidden layer\n",
"filter_size = 3\n",
"pooling_rounds = 2\n",
"\n",
"def cnnLayer(in_size, out_size, filter_size): #helper function like we have done many times now\n",
" return nn.Sequential(\n",
" nn.Conv2d(in_size, out_size, filter_size, padding=filter_size//2),\n",
" nn.BatchNorm2d(out_size),\n",
" nn.ReLU())\n",
"\n",
"normal_CNN = nn.Sequential( #a normal CNN with blocks of 2 cnn layers seperated by max-pooling\n",
" cnnLayer(C, h, filter_size), \n",
" cnnLayer(h, h, filter_size),\n",
" nn.MaxPool2d(2),\n",
" cnnLayer(h, h, filter_size),\n",
" cnnLayer(h, h, filter_size),\n",
" nn.MaxPool2d(2),\n",
" cnnLayer(h, h, filter_size),\n",
" cnnLayer(h, h, filter_size),\n",
" nn.Flatten(),\n",
" nn.Linear(h*(24//(2**pooling_rounds))**2, len(cifar10_classes)) # $\\text{# channels} \\cdot \\left(\\frac{24 \\text{pixels}}{2^{\\text{rounds of pooling}}}\\right)^2 = $ number of inputs to final layer\n",
")\n",
"\n",
"loss = nn.CrossEntropyLoss()\n",
"#Setting up our optimizer with a learning rate scheduler to maxmimize performance. \n",
"optimizer = torch.optim.AdamW(normal_CNN.parameters())\n",
"scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, epochs)\n",
"#Train our model like normal\n",
"normal_results = train_network(normal_CNN, loss, train_loader, epochs=epochs, device=device, test_loader=test_loader, optimizer=optimizer, lr_schedule=scheduler, score_funcs={'Accuracy': accuracy_score})"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:27.066639Z",
"start_time": "2021-04-18T05:23:26.838969Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=normal_results, label='Regular')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:27.237009Z",
"start_time": "2021-04-18T05:23:27.142087Z"
}
},
"outputs": [],
"source": [
"test_img_id = 213 # test image to grab\n",
"x, y = testset_nocrop[test_img_id] # get the original 32x32 image\n",
"offset_predictions = [] #we are going to save the prediction for each 24x24 sub-image here\n",
"normal_CNN = normal_CNN.eval()\n",
"for i in range(8): # for up/down shifts\n",
" for j in range(8): #for left/right shifts\n",
" x_crop = x[:,i:i+24, j:j+24].to(device) #grab the cropped image\n",
" with torch.no_grad(): \n",
" prob_y = F.softmax(normal_CNN(x_crop.unsqueeze(0)), dim=-1).cpu().numpy()[0,y] #classify the image, and get the probability of the correct class\n",
" offset_predictions.append((x_crop, prob_y)) #save the resulting score"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:32.977113Z",
"start_time": "2021-04-18T05:23:27.238583Z"
}
},
"outputs": [
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 720x720 with 64 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"f, axarr = plt.subplots(8,8, figsize=(10,10)) # 8x8 grid of images\n",
"for i in range(8): #for each row\n",
" pos = 0 #keep track of which specific shift we are accessing\n",
" for x, score in offset_predictions[i*8:][:8]: #grab the next 8 images to fill out the columns\n",
" axarr[i, pos].imshow(x.cpu().numpy().transpose(1,2,0)) #plot the 24x24 sub-image\n",
" axarr[i, pos].text(0.0, 0.5, str(round(score,2)), dict(size=20, color='green'))#print the probability of the correct class in the top left. \n",
" pos += 1 #move to the next image position"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:33.092871Z",
"start_time": "2021-04-18T05:23:32.990649Z"
}
},
"outputs": [],
"source": [
"class BlurLayer(nn.Module):\n",
" def __init__(self, kernel_size=5, stride=2, D=2):\n",
" \"\"\"\n",
" kernel_size: how wide should the blurring be\n",
" stride: how much should the output shrink by\n",
" D: how many dimensions in the input. D=1, D=2, or D=3 for tensors of shapes (B, C, W), (B, C, W, H), (B, C, W, H, Z) respectively.\n",
" \"\"\"\n",
" super(BlurLayer, self).__init__()\n",
" \n",
" base_1d = scipy.stats.binom.pmf(list(range(kernel_size)), kernel_size, p=0.5)#make a 1d binomial distribution. This computes the normalized filter_i value for all k values.\n",
" #z is a 1d filter\n",
" if D <= 0 or D > 3:\n",
" raise Exception() #invalid option for D!\n",
" if D >= 1:\n",
" z = base_1d #we are good\n",
" if D >= 2:\n",
" z = base_1d[:,None]*z[None,:] #the 2-d filter can be made by multiplying two 1-d filters\n",
" if D >= 3:\n",
" z = base_1d[:,None,None]*z #the 3-d filter can be made by multiplying the 2-d version with a 1-d version\n",
" #Applying the filter is a convolution, so we will save the filter as a parameter in this layer. requires_grad=False because we don't want it to change\n",
" self.weight = nn.Parameter(torch.tensor(z, dtype=torch.float32).unsqueeze(0), requires_grad=False)\n",
" self.stride = stride\n",
"\n",
" def forward(self, x):\n",
" C = x.size(1) #How many channels are here? \n",
" ks = self.weight.size(0)#How wide was our internal filter?\n",
"\n",
" #All three calls are the same, we just need to know which conv function should we call?\n",
" #The groups argument is used to apply the single filter to every channel, since we don't have multipler filters like a normal convolutional layer.\n",
" if len(self.weight.shape)-1 == 1:\n",
" return F.conv1d(x, torch.stack([self.weight]*C), stride=self.stride, groups=C, padding=ks//self.stride)\n",
" elif len(self.weight.shape)-1 == 2:\n",
" return F.conv2d(x, torch.stack([self.weight]*C), stride=self.stride, groups=C, padding=ks//self.stride)\n",
" elif len(self.weight.shape)-1 == 3:\n",
" return F.conv3d(x, torch.stack([self.weight]*C), stride=self.stride, groups=C, padding=ks//self.stride)\n",
" else:\n",
" raise Exception() #We should never reach this code, lets us know we have a bug if it happens!\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:33.187653Z",
"start_time": "2021-04-18T05:23:33.094360Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=249x249 at 0x7F675C19B550>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tmp = F.max_pool2d(img_tensor_big, (shrink_factor,shrink_factor), stride=1, padding=shrink_factor//2) #Apply max-pooling with a stride of 1\n",
"img_tensor_small_better = BlurLayer(kernel_size=int(1.5*shrink_factor), stride=shrink_factor)(tmp.unsqueeze(0)) #Blue the max-pooling result\n",
"to_img(img_tensor_small_better.squeeze()) #show the result"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:23:33.198876Z",
"start_time": "2021-04-18T05:23:33.189984Z"
}
},
"outputs": [],
"source": [
"class MaxPool2dAA(nn.Module):\n",
" def __init__(self, kernel_size=2, ratio=1.7):\n",
" \"\"\"\n",
" kernel_size: how much to pool by\n",
" ratio: how much larger the bluring filter should be than the pooling size\n",
" \"\"\"\n",
" super(MaxPool2dAA, self).__init__()\n",
"\n",
" blur_ks = int(ratio*kernel_size) #make a slightly larger filter for bluring\n",
" self.blur = BlurLayer(kernel_size=blur_ks, stride=kernel_size, D=2) #create the blur kernel\n",
" self.kernel_size = kernel_size #and store the pooling size\n",
"\n",
" def forward(self, x):\n",
" ks = self.kernel_size \n",
" tmp = F.max_pool2d(x, ks, stride=1, padding=ks//2) #Apply pooling with a stride=1\n",
" return self.blur(tmp) #blue the result"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:26:20.888519Z",
"start_time": "2021-04-18T05:23:33.202159Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c46e72f394d84bd7b2a86b09c50bd870",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=30.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"aaPool_CNN = nn.Sequential( #same architecture as normal_CNN, but we replaced pooling with our anti-aliased version\n",
" cnnLayer(C, h, filter_size), \n",
" cnnLayer(h, h, filter_size),\n",
" MaxPool2dAA(2),\n",
" cnnLayer(h, h, filter_size),\n",
" cnnLayer(h, h, filter_size),\n",
" MaxPool2dAA(2),\n",
" cnnLayer(h, h, filter_size),\n",
" cnnLayer(h, h, filter_size),\n",
" nn.Flatten(),\n",
" nn.Linear((24//(2**pooling_rounds))**2*h, len(cifar10_classes))\n",
")\n",
"\n",
"optimizer = torch.optim.AdamW(aaPool_CNN.parameters())\n",
"scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, epochs)\n",
"\n",
"aaPool_results = train_network(aaPool_CNN, loss, train_loader, epochs=epochs, device=device, test_loader=test_loader, optimizer=optimizer, lr_schedule=scheduler, score_funcs={'Accuracy': accuracy_score})"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:26:21.125252Z",
"start_time": "2021-04-18T05:26:20.890508Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=normal_results, label='Regular')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=aaPool_results, label='Anti-Alias Pooling')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:26:21.507485Z",
"start_time": "2021-04-18T05:26:21.160953Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[Text(0.5, 0, 'Pixel shifts'),\n",
" Text(0, 0.5, 'Predicted probability of correct class')]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x, y = testset_nocrop[test_img_id] # get the original 32x32 image\n",
"offset_predictions_aa = [] #we are going to save the prediction for each 24x24 sub-image here\n",
"aaPool_CNN = aaPool_CNN.eval()\n",
"for i in range(8): # for up/down shifts\n",
" for j in range(8): #for left/right shifts\n",
" x_crop = x[:,i:i+24, j:j+24].to(device) #grab the cropped image\n",
" with torch.no_grad(): \n",
" prob_y = F.softmax(aaPool_CNN(x_crop.unsqueeze(0)), dim=-1).cpu().numpy()[0,y] #classify the image, and get the probability of the correct class\n",
" offset_predictions_aa.append((x_crop, prob_y)) #save the resulting score\n",
"\n",
"sns.lineplot(x=list(range(8*8)), y=[val for img,val in offset_predictions], label='Regular')\n",
"ax = sns.lineplot(x=list(range(8*8)), y=[val for img,val in offset_predictions_aa], label='Anti-Alias Pooling')\n",
"ax.set(xlabel='Pixel shifts', ylabel='Predicted probability of correct class')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:26:21.515502Z",
"start_time": "2021-04-18T05:26:21.509043Z"
}
},
"outputs": [],
"source": [
"class ResidualBlock(nn.Module):\n",
" def __init__(self, in_channels, channels, kernel_size=3, stride=1, activation=nn.ReLU(), ReZero=True):\n",
" \"\"\"\n",
" in_channels: how many channels come into this residual block\n",
" channels: the number of output channels for this residual block\n",
" kernel_size: the size of the filters to use in this residual block\n",
" stride: the stride of the convolutions in this block. Larger strides will shrink the output. \n",
" activation: what activation function to use\n",
" ReZero: whether or not ReZero style intitializations should be used. \n",
" \"\"\"\n",
" super().__init__()\n",
" \n",
" self.activation = activation\n",
" #How much to padd by so that W/H stays the same\n",
" pad = (kernel_size-1)//2\n",
" filter_size = (kernel_size,kernel_size)\n",
" \n",
" #complex branch of the network that applies two rounds of layers\n",
" self.F = nn.Sequential(\n",
" nn.Conv2d(in_channels, channels, filter_size, padding=pad, bias=False),\n",
" nn.BatchNorm2d(channels),\n",
" activation,\n",
" nn.Conv2d(channels, channels, filter_size, padding=pad, stride=stride, bias=False),\n",
" nn.BatchNorm2d(channels),\n",
" )\n",
" \n",
" #alpha is a float if we are not using ReZero, or a Parameter if we are!\n",
" self.alpha = 1.0\n",
" if ReZero:\n",
" self.alpha = nn.Parameter(torch.tensor([0.0]), requires_grad=True) \n",
" \n",
" #Shortcut is the identify function, which returns the input as the output\n",
" self.shortcut = nn.Identity()\n",
" #Unless the output of F will have a different shape due to a change in \n",
" #the number of channels or stride, then we will make the short cude a \n",
" #1x1 convolution as a \"projection\" to change it's shape. \n",
" if in_channels != channels or stride != 1:\n",
" self.shortcut = nn.Sequential(\n",
" nn.Conv2d(in_channels, channels, 1, padding=0, stride=stride, bias=False),\n",
" nn.BatchNorm2d(channels),\n",
" )\n",
" \n",
" def forward(self, x):\n",
" #Compute the results of F(x) and x, as needed\n",
" f_x = self.F(x)\n",
" x = self.shortcut(x)\n",
" \n",
" if isinstance(self.alpha,nn.Parameter):#ReZero\n",
" return x + self.alpha * self.activation(f_x)\n",
" else:#Normal Residual Block\n",
" return self.activation(x + f_x)\n",
"#Caption: Implementation of the ReZero style residual block with optional shortcut connections to shrink the size of a layer. The ReZero approach makes alpha a parameter to be learned, otherwise a normal style Residual Block is used. "
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:40:56.821527Z",
"start_time": "2021-04-18T05:26:21.516730Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2816b4151daa4d8d95d4d08af8502c6d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=30.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"resnetReZero_cifar10 = nn.Sequential( #Train a new residual network using the ReZero approach \n",
" ResidualBlock(C, h, ReZero=True),\n",
" *[ResidualBlock(h, h, ReZero=True) for _ in range(6)],\n",
" ResidualBlock(h, 2*h, ReZero=True, stride=2), #Instead of pooling, lets do strided convolution layer. This keeps the skip connections intact without extra code\n",
" *[ResidualBlock(2*h, 2*h, ReZero=True) for _ in range(6)],\n",
" ResidualBlock(2*h, 4*h, ReZero=True, stride=2),\n",
" *[ResidualBlock(4*h, 4*h, ReZero=True) for _ in range(6)],\n",
" ResidualBlock(4*h, 4*h, ReZero=True, stride=2),\n",
" *[ResidualBlock(4*h, 4*h, ReZero=True) for _ in range(6)],\n",
" nn.AdaptiveAvgPool2d(1),\n",
" nn.Flatten(),\n",
" nn.Linear(4*h, len(cifar10_classes)), #We used adaptive pooling down to 1x1, so easier to compute the number of inputs to the final layer.\n",
")\n",
"\n",
"optimizer = torch.optim.AdamW(resnetReZero_cifar10.parameters())\n",
"scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, epochs)\n",
"resnetReZero_results = train_network(resnetReZero_cifar10, loss, train_loader, epochs=epochs, device=device, test_loader=test_loader, optimizer=optimizer, lr_schedule=scheduler, score_funcs={'Accuracy': accuracy_score})"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:54:29.506517Z",
"start_time": "2021-04-18T05:40:56.823206Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2c05f997f14c487e8a3a83b4d6f00d79",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=30.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"resnet_cifar10 = nn.Sequential( #First lets train a normal Residual Network without any ReZero\n",
" ResidualBlock(C, h, ReZero=False),\n",
" *[ResidualBlock(h, h, ReZero=False) for _ in range(6)],\n",
" ResidualBlock(h, 2*h, ReZero=False, stride=2),\n",
" *[ResidualBlock(2*h, 2*h, ReZero=False) for _ in range(6)],\n",
" ResidualBlock(2*h, 4*h, ReZero=False, stride=2),\n",
" *[ResidualBlock(4*h, 4*h, ReZero=False) for _ in range(6)],\n",
" ResidualBlock(4*h, 4*h, ReZero=False, stride=2),\n",
" *[ResidualBlock(4*h, 4*h, ReZero=False) for _ in range(6)],\n",
" nn.AdaptiveAvgPool2d(1),\n",
" nn.Flatten(),\n",
" nn.Linear(4*h, len(cifar10_classes)), #We used adaptive pooling down to 1x1, so easier to compute the number of inputs to the final layer.\n",
")\n",
"optimizer = torch.optim.AdamW(resnet_cifar10.parameters())\n",
"scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, epochs)\n",
"resnet_results = train_network(resnet_cifar10, loss, train_loader, epochs=epochs, device=device, test_loader=test_loader, optimizer=optimizer, lr_schedule=scheduler, score_funcs={'Accuracy': accuracy_score})"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:54:29.763800Z",
"start_time": "2021-04-18T05:54:29.507943Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=normal_results, label='Regular')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=resnet_results, label='ResNet')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=resnetReZero_results, label='ResNet ReZero')"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:54:30.325288Z",
"start_time": "2021-04-18T05:54:29.765053Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f6706d17890>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"range_01 = np.arange(100)[1:]/100 #Lets take 100 steps along the x-axis for plotting\n",
"for alpha in [0.1, 0.2, 0.3, 0.4]: #Four different hyper-parameter values to demonstrate\n",
" plt.plot(range_01, scipy.stats.beta(alpha, alpha).pdf(range_01), lw=2, ls='-', alpha=0.5, label=r'$\\alpha='+str(alpha)+\"$\") #Plotting the Beta distribution for each option.\n",
"plt.xlabel(r\"$\\lambda \\sim Beta(\\alpha, \\alpha)$\")\n",
"plt.ylabel(r\"PDF\")\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:54:30.330883Z",
"start_time": "2021-04-18T05:54:30.326806Z"
}
},
"outputs": [],
"source": [
"class MixupLoss(nn.Module):\n",
" def __init__(self, base_loss=nn.CrossEntropyLoss()):\n",
" \"\"\"\n",
" base_loss: the original loss function to use as a sub-component of Mixup, or to use at test time to see how well we are doing. \n",
" \"\"\"\n",
" super(MixupLoss, self).__init__()\n",
" self.loss = base_loss\n",
"\n",
" def forward(self, y_hat, y):\n",
" if isinstance(y, tuple): #we should be doing mixup!\n",
" if len(y) != 3:\n",
" raise Exception() #There should be a tuple of y_i, y_j, and lambda!\n",
" y_i, y_j, lambda_ = y #break the tuple out into its components\n",
" return lambda_ * self.loss(y_hat, y_i) + (1 - lambda_) * self.loss(y_hat, y_j)\n",
" #Else, y is just a normal tensor and normal set of labels! Compute it the normal way\n",
" return self.loss(y_hat, y)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T05:54:30.338516Z",
"start_time": "2021-04-18T05:54:30.332204Z"
}
},
"outputs": [],
"source": [
"from torch.utils.data.dataloader import default_collate\n",
"\n",
"class MixupCollator(object):\n",
" def __init__(self, alpha=0.25, base_collate=default_collate):\n",
" \"\"\"\n",
" alpha: how agressive the mixing of data is, recomended to be be in [0.1, 0.4], but could be in [0, 1]\n",
" base_collate: how to take a list of datapoints and convert them into one larger batch. By default uses the same default as PyTorch's DataLoader class. \n",
" \"\"\"\n",
" self.alpha = alpha\n",
" self.base_collate = base_collate\n",
" def __call__(self, batch):\n",
" #batch comes in as a list, convert it into an actual batch of data\n",
" x, y = self.base_collate(batch)\n",
" #sample the value of lambda to use. note the \"_\" at the end, because \n",
" #lambda is a key word in ptyhong\n",
" lambda_ = np.random.beta(self.alpha, self.alpha)\n",
" #create a random shuffled order pi\n",
" B = x.size(0)\n",
" shuffled_order = torch.randperm(B)\n",
"\n",
" #compute the mixed version of the input data\n",
" x_tilde = lambda_ * x + (1 - lambda_) * x[shuffled_order, :]\n",
" #get the labels\n",
" y_i, y_j = y, y[shuffled_order]\n",
" #return a tuple of two items. First is the input data, second is another\n",
" #tuple of 3 items that MixupLoss needs\n",
" return x_tilde, (y_i, y_j, lambda_)\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T06:09:12.103053Z",
"start_time": "2021-04-18T05:54:30.339804Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e62eaaa0579a4102a654828c816aae3d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=30.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/edraff/anaconda3/lib/python3.7/site-packages/numpy/lib/function_base.py:380: RuntimeWarning: Mean of empty slice.\n",
" avg = a.mean(axis)\n",
"/home/edraff/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:170: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=391.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=79.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"#Replace the data loader with a new one that uses our MixupCollator\n",
"train_loader_mixup = torch.utils.data.DataLoader(trainset, batch_size=B, num_workers=2, shuffle=True, collate_fn=MixupCollator())\n",
"\n",
"resnetReZero_cifar10.apply(weight_reset) #re-set the weights to out of lazyness\n",
"#the optimizer and schduler remain unchainged\n",
"optimizer = torch.optim.AdamW(resnetReZero_cifar10.parameters())\n",
"scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, epochs)\n",
"#We will wrap our normal `loss` with our new `MixupLoss` since we are training with Mixup\n",
"resnetReZero_mixup_results = train_network(resnetReZero_cifar10, MixupLoss(loss), train_loader_mixup, epochs=epochs, device=device, test_loader=test_loader, optimizer=optimizer, lr_schedule=scheduler, score_funcs={'Accuracy': accuracy_score})"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-18T06:09:12.419555Z",
"start_time": "2021-04-18T06:09:12.130558Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEICAYAAAC9E5gJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABV60lEQVR4nO3dd3xUVdrA8d+ZmfTeqAm9twQITURARbGjosKqr4qo2FZ3F9vi7qqrrgUrooCCWLD3XQsqCig9wVBC7wQCJJOeTJIp5/3jTkIISZhAJvX5+pnPzNy5c+bcjNxn7inPUVprhBBCtGymhq6AEEKIhifBQAghhAQDIYQQEgyEEEIgwUAIIQQSDIQQQuDlYKCUGq+U2q6U2qWUeriK1yOUUl8qpTYqpdYqpfp5sz5CCCGqprw1z0ApZQZ2AOOANGAdMFlrvaXCPs8DBVrrx5VSvYDZWuvzaio3Ojpad+rUySt1FkKI5io5OTlTax1T3esWL372UGCX1noPgFLqI+AKYEuFffoA/wHQWm9TSnVSSrXWWh+trtBOnTqRlJTkxWoLIUTzo5TaX9Pr3mwmag8crPA8zb2tog3AVQBKqaFARyC2ckFKqduVUklKqaSMjAwvVVcIIVoubwYDVcW2ym1SzwARSqkU4F7gD8Bx0pu0nqe1TtRaJ8bEVHuVI4QQ4jR5s5koDYir8DwWOFxxB611HnALgFJKAXvdNyGEEPXIm1cG64DuSqnOSilfYBLwTcUdlFLh7tcApgLL3QFCCCFEPfLalYHW2qGUugdYDJiBBVrrVKXUNPfrc4DewLtKKSdGx/Kt3qqPEEKI6nmzmQit9XfAd5W2zanweBXQ3Zt1EEIIcWoyA1kIIYR3rwyEEKIx0g4HpQcOUrpnNyV796LMFiwx0ViiojBHR2OJjsYcHo4ynfnvZa01uqgIZ0EhroJ8XAUFOAsKcJU9txV7XJZ/nz4EDhp4xnWqigQDIUSz5bLZKN27l5LdeyjZs5vSsvv9B8Bur/nNZjOWyEjMMdFYotwBIjQUbbfjKi1Bl5aiS+3ue/etpASX3XjsKirClV+Aq7AQXK46OZ6o26ZKMBBCNA/a5UI7HMaJ1F6KtttBa0yBgZgCA1Fms8dluUpLcaSnYz98GPvhsvvD2NPTsR88iP3wYShLuWMy4RsXh2/XroSMHYtvl674de2Cb5cu4HLhyLTiyMzAabW6H2fisGbizMjEYbVSsnMnrrw8lK9vNTcfTEGBmH0jUL6+xvEEB2MKCcYcHIwpqMJj980cHIwKCABV1bSsk5n8/E7nT+4RCQZCiFPSdjvOnBwcWdk4c3Jw5efhzC/AlZ+PMz8PV34BzoJ845dwhddcJSVou/34rbQUHCfNKz2BCgjAFByEOTAIU1CQceIMcj8ODMSZl4c93TjpOzMyK71ZYWnVCp+2bQlISCDs6qvwc5/0fTp2xOTrW/WHAubQUPy6dK6LP1eTJMFAiBZEu1y4Cgtx5uYZJ+28fJx5ubjy8nHmZOPMzjZO+NnZOLOycORk48zKxpWfX2O5KiAAc0gIppAQzMHBmMPC8Iltj8k/wPjV7ONz/Fb5uY8PKGU0qxQW4iowmlZchYU4C43H9iNHyrebQ0PxadcWv9Gj8WnXDp+27Yz7dm3xad0aVcMJ/0wUO4rJLcnF7rLjcDnK7x0uBw7tOGmbQmE2mbGYLFiUBbPJjFkZz83KbLymLCilcGkXTu08fu868XnZtnbB7egU1skrxyfBQIhmRmtNybZt5P/0M0V/rMeZ6z7Z5+cbJ/Ua2q+Vjw/myEjMERFYIiMIaN/e/TzcaD+PiMAcHm6c9ENDjzd1+PjU4xGeHq11+YnV6XLi0A7j3uUgpySHTFtm+S3DlnHC88yiTPLtNQfE+jCl3xT+MvgvXilbgoEQzYB2OrGtX0/+z0vI//ln7IcOgcmEf58++LRqjalbN8yhYZhDQzCFhBon8tAQzCGhmMNCjZN7eASmoECUh+3X3mJ32cmyZWEttpJpy8Rqs2Itthr3Nis2hw27y47dZafUWVr+2O6yY3faKXWVnvAr3elylgcBTwVYAogOiCYmIIZu4d0Y0XYEMYExhPmF4WvyNX7tu28+Jh8synLCNovJOLU6XA6c2ll+X1aXys/NyoxJmY7fm4x7kzJhUZbyba0DW3vrzy7BQIimylVSQuGqVeT//DMFv/yKMysL5eND0FlnEX3nNILHjsUSFdUwddMu8kvzyS/Np8BeUPXj0gLy7cbjvJK88hN+dkl2lWUG+QQR5R9FkE8QPmYffEw++Fv8CTGF4GPyKd9Wdis7KZc1x1RunqnYbBPqG2qc/ANjiA6IJsgnqJ7/Yg1PgoEQTYj98GGK1q0j/9elFC5fjquoCFNwMMGjRxMy7nyCzh6FOdg7J7IiexHbs7ezN3cvuSW55JXmld/nleSRW5pLXkkeeaV55Jfmo09KUnyiAEsAwT7BhPiGEOIbQsfQjgxqNYjogGiiAqKICogyHvsbjwMsAV45riq5XJB3CKw7IXOXcW/dBXnpYDK7bz5gsrhv5gqP3c8BtMsYzaRd7puzwuOy1zSYTKDc5Zbfm46XW7atx4XQ90qvHLIEAyEaKa01pXv2UJSUTFFyEkVJSTgOpwNgjo4m9NJLCRl3PoHDhtU4SuZ0ZBVnsc26ja1ZW9mWtY1tWdvYn7f/hBO8WZkJ8wsj1DeUUL9QIv0j6RzW2XhedvMLJcTHONkH+waXPw7yDcLH5AMuJxxOgcztEBYLEZ0htN3xk6mnnHbI3AnHtsDRVOOWfxh8g8EvxH0LPX7vH3p8u28wFBwzTvblJ/9d4LAdL983GKK6QVRX47nLYXymy2Ecg6MEXIXHn7vsgDJO6MpkDB0te1x2oi+7AThKjUDhcrrvXcefuxzHt0X3OKPvtSYSDIRoJLTDQfG27RQlrcOWnExR8nqcWVmAcfIPHDyYwFumEJg4GL8ePaodj59py2TV4VWsTl/Nzuyd+Jp9CbAEEGAJINAnsPxxgCWAQMvx54cKDrEtywgAx4qOlZfXLqgdvSJ7cXGXi+kd2Zuu4V2J9I8k0HKa/Qu5h2DLN7D7F9izFGyVmoXMvhDewQgMkZ2N+4hOxuPwjlBkPX7SP7YFjm6BzB3uEzDGL+noHkYZ9iIozADrbijJN24VT/IVKZNRfnR36HwORHdzB4DuENLG47kATZUEAyHqiXY6cWRkGJOj0g8bk6XSjxgTpNLTse/fj6uoCACf2FiCzzmHwMTBBCYm4tOxY7Un3iJ7EUlHk1idvppVh1exK2cXAOF+4fSN7ovT5cTmsGEttmKz27A5jt8q/tI3KROdQjuR2DqR3pG96R3Vm16RvQjzCzuzAy8tgv0rYfcS2LXEuAoACGkLPS+GrudC23jIOwzZeyFr7/H7g2ugpIas9qGx0Lov9LgAWvWF1n2Mk7elhislRymUFhjlFucZASIwygg2Fu9N6mrsJBgIUcec+fkUb91KydatFG/dRunBg8bJ/+gxcJ44osUUEoJP27b4tG1L4KBBBAwcSGDiYHzatKm2fIfLQao1ldWHV7MqfRUbMjbgcDnwNfkyqPUgLut6GcPbDqdXZC9MqvrcOlprip3F2Bw2iuxFZ94urzUUHIXs/ZCzH7L3wf4VsH8VOEvA4g8dz4JBN0LX86BV7xN/bUd3B0afXKYt+3iAyN4HAeHGib9Vb+NxbVl8wRIJgZGnfajNkdK65k6exiYxMVEnJSU1dDWEAMB+7Jj7pL+V4i3Gvf3g8aW/zTHR+HXqjE+7tljatjUmSLVtg09b47kpKIgCewFZxVlkFWeRU5xDTolxyy7JJrckl+xi9737eU5JDi5tzBXoHdmb4e2GM6LtCAa2Goi/xd+7B2zLgaw9xsk+50CFE/9+yD0IjkpJ12J6Q7fzoOtY6DgSfOqxE1icQCmVrLVOrO51uTIQzZKrqAiH1YrTasWZm2vkwnE40Q47OJ3GY6ej/DHOstcdaIeROgGHA213uLc5jHQKDmO7My+f4m3bcGYeT4fg07ED/n37Ej5xIv69e1HcpR37LDkcKTpSPm4+q3gTVttSsrZ
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=normal_results, label='Regular')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=resnet_results, label='ResNet')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=resnetReZero_results, label='ResNet ReZero')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=resnetReZero_mixup_results, label='ResNet ReZero + MixUp')"
]
}
],
"metadata": {
"author": "mes",
"celltoolbar": "Tags",
"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.7.9"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autoclose": false,
"autocomplete": false,
"bibliofile": "library.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": false,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
},
"latex_metadata": {
"title": "Advanced Building Blocks"
}
},
"nbformat": 4,
"nbformat_minor": 2
}