Skip to content

Instantly share code, notes, and snippets.

@WNoxchi
Last active May 27, 2018 08:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WNoxchi/3213a5be3254229c884000b236800a2e to your computer and use it in GitHub Desktop.
Save WNoxchi/3213a5be3254229c884000b236800a2e to your computer and use it in GitHub Desktop.
A baseline / warmup notebook for L.Smith & J.Howard's training idea, using MNIST.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MNIST Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"WNixalo 2018/5/19-20;25-27\n",
"\n",
"Making sure I have a working baseline for the MNIST dataset. See [forum thread](http://forums.fast.ai/t/research-collaboration-opportunity-with-leslie-smith/16454/) for motivation. PyTorch version: `0.3.1.post2`\n",
"\n",
"- For a walkthrough on converting binary IDX files to NumPy arrays, see [idx-to-numpy.ipynb](https://github.com/WNoxchi/Kaukasos/blob/master/research/idx-to-numpy.ipynb)\n",
"\n",
"- For a walkthrough debugging several issues with dataloading, see [mnist-dataloader-issue.ipynb](https://github.com/WNoxchi/Kaukasos/blob/master/research/mnist-dataloader-issue.ipynb)\n",
"\n",
"This notebook is in large part a practice stage for a research-oriented work flow.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"%reload_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import torchvision\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import numpy as np\n",
"from pathlib import Path\n",
"import os\n",
"import struct # for IDX conversion\n",
"import gzip # for IDX conversion\n",
"from urllib.request import urlretrieve # for IDX conversion\n",
"\n",
"from fastai.conv_learner import * # if you want to use fastai Learner"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"PATH = Path('data/mnist')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"bs = 64\n",
"sz = 28"
]
},
{
"cell_type": "code",
"execution_count": 358,
"metadata": {},
"outputs": [],
"source": [
"def plot_loss(learner, val=None):\n",
" \"\"\"Plots iterations vs loss and learning rate. Plots training or validation.\"\"\"\n",
" lrs = learner.sched.lrs\n",
" x_axis = range(len(lrs))\n",
" loss = learner.sched.losses\n",
" min_loss = min(loss)\n",
" \n",
" fig,ax = plt.subplots(figsize=(14,7))\n",
" ax.set_xlim(left=-20, right=x_axis[-1]+20)\n",
" ax.plot(x_axis, loss, label='loss')\n",
" ax.plot(x_axis, lrs, label='learning rate', color='firebrick');\n",
" ax.set_xlabel('Iterations')\n",
" ax.set_ylabel('Loss & LR')\n",
" \n",
" # Validation Loss\n",
" if val is not None:\n",
" ep_end = len(lrs) // len(val)\n",
" ax.scatter(range(ep_end-1, len(lrs), ep_end), val, c='r', s=20, label='val loss')\n",
" # Minimum Loss\n",
" ax.axhline(y=min_loss, c='r', alpha=0.9, label='Min loss', lw=0.5)\n",
" idx = np.argmin(loss)\n",
" yscal = 1 / (ax.get_ylim()[1] - ax.get_ylim()[0])\n",
" yrltv = (min_loss - ax.get_ylim()[0]) * yscal\n",
" ax.axvline(x=x_axis[idx], ymin=0.5*yrltv, ymax=1.5*yrltv, c='r', alpha=0.9, lw=0.5)\n",
" # 150% Minimum Loss\n",
" idx = np.where(np.array(loss) <= 1.5*min_loss)[0]\n",
" idx = idx[0] if len(idx != 0) else None\n",
" if idx is not None: ax.axvline(x=x_axis[idx], c='slateblue', alpha=0.9, label='50% above Min Loss', lw=0.5)\n",
" # 50% Maximum Loss\n",
" idx = np.where(np.array(loss) <= 0.5*max(loss))[0]\n",
" idx = idx[0] if len(idx != 0) else None\n",
" if idx is not None: ax.axvline(x=x_axis[idx], c='teal', alpha=0.9, label='50% of Max Loss', lw=0.5)\n",
" \n",
" fig.legend(bbox_to_anchor=(0.82,0.82), loc=\"upper right\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1 PyTorch method:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The basic method for creating a DataLoader in PyTorch. Adapted from [their tutorial](https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html?highlight=mnist#) and an older [notebook](https://github.com/WNoxchi/Kaukasos/blob/master/PyTorch/practice-mnist.ipynb). \n",
"- **NOTE** the [normalization values are largely arbitrary](https://discuss.pytorch.org/t/normalization-in-the-mnist-example/457/7?u=wnixalo)."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# torchvision datasets are PIL.Image images of range [0,1]. Must trsfm them \n",
"# to Tensors of normalized range [-1,1]\n",
"transform = torchvision.transforms.Compose(\n",
" [torchvision.transforms.ToTensor(),\n",
" torchvision.transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# see: https://gist.github.com/kevinzakka/d33bf8d6c7f06a9d8c76d97a7879f5cb\n",
"# frm: https://github.com/pytorch/pytorch/issues/1106\n",
"\n",
"trainset = torchvision.datasets.MNIST(root=PATH, train=True, download=True,\n",
" transform=transform)\n",
"validset = torchvision.datasets.MNIST(root=PATH, train=True, download=True,\n",
" transform=transform)\n",
"testset = torchvision.datasets.MNIST(root=PATH, train=False, download=True,\n",
" transform=transform)\n",
"p_val = 0.15\n",
"n_val = int(p_val * len(trainset))\n",
"idxs = np.arange(len(trainset))\n",
"np.random.shuffle(idxs)\n",
"train_idxs, valid_idxs = idxs[n_val:], idxs[:n_val]\n",
"train_sampler = torch.utils.data.sampler.SubsetRandomSampler(train_idxs)\n",
"valid_sampler = torch.utils.data.sampler.SequentialSampler(valid_idxs)\n",
"\n",
"trainloader = torch.utils.data.DataLoader(trainset, batch_size=bs,\n",
" sampler=train_sampler, num_workers=2)\n",
"validloader = torch.utils.data.DataLoader(validset, batch_size=bs,\n",
" sampler=valid_sampler, num_workers=2)\n",
"testloader = torch.utils.data.DataLoader(testset, batch_size=bs, num_workers=2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"classes = [str(i) for i in range(10)]; classes"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"#### 1.1.1 Aside: DataLoaders – PyTorch & fastai:"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"- See [mnist-dataloader-issue.ipynb](https://github.com/WNoxchi/Kaukasos/blob/master/research/mnist-dataloader-issue.ipynb) for an in depth dive.\n",
"\n",
"The FastAI DataLoader shares some similarities in construction with the PyTorch one. The logic defining pytorch's DataLoader [in the PyTorch source code](https://pytorch.org/docs/master/_modules/torch/utils/data/dataloader.html#DataLoader):\n",
"```\n",
"if batch_sampler is None:\n",
" if sampler is None:\n",
" if shuffle:\n",
" sampler = RandomSampler(dataset)\n",
" else:\n",
" sampler = SequentialSampler(dataset)\n",
" batch_sampler = BatchSampler(sampler, batch_size, drop_last)\n",
"```\n",
"is the same as [that in fast.ai's](https://github.com/fastai/fastai/blob/master/fastai/dataloader.py#L24-43)\n",
"\n",
"```\n",
"if batch_sampler is None:\n",
" if sampler is None:\n",
" sampler = RandomSampler(dataset) if shuffle else SequentialSampler(dataset)\n",
" batch_sampler = BatchSampler(sampler, batch_size, drop_last)\n",
"```\n",
"\n",
"So now I'm not confused about not using a batch sampler when building a pytorch dataloader, although I see one in fastai's DataLoader –– that's because pytorch does it too."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2 Custom Method (for Fast AI Model Data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This loads and converts the MNIST IDX files into NumPy arrays. For MNIST data this looks to be about 45 MB for the images. This way allows for easy use of FastAI's ModelData class, and thus its (extremely useful) Learner abstraction and all other capabilities that come with it. The arrays can be loaded via: `ImageClassifierData.from_arrays(..)`"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def download_mnist(path=Path('data/mnist')):\n",
" os.makedirs(path, exist_ok=True)\n",
" urls = ['http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz',\n",
" 'http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz',\n",
" 'http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz',\n",
" 'http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz',]\n",
" for url in urls:\n",
" fname = url.split('/')[-1]\n",
" if not os.path.exists(path/fname): urlretrieve(url, path/fname)\n",
"\n",
"def read_IDX(fname):\n",
" \"\"\"see: https://gist.github.com/tylerneylon/ce60e8a06e7506ac45788443f7269e40\"\"\"\n",
" with gzip.open(fname) as f:\n",
" zero, data_type, dims = struct.unpack('>HBB', f.read(4))\n",
" shape = tuple(struct.unpack('>I', f.read(4))[0] for d in range(dims))\n",
" return np.frombuffer(f.read(), dtype=np.uint8).reshape(shape)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"download_mnist()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['train-images-idx3-ubyte.gz',\n",
" 't10k-labels-idx1-ubyte.gz',\n",
" 'train-labels-idx1-ubyte.gz',\n",
" 't10k-images-idx3-ubyte.gz']"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fnames = [o for o in os.listdir(PATH) if 'ubyte.gz' in o] # could just use glob\n",
"fnames"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# thanks to: https://stackoverflow.com/a/14849322\n",
"trn_x_idx = [i for i,s in enumerate(fnames) if 'train-imag' in s][0]\n",
"trn_y_idx = [i for i,s in enumerate(fnames) if 'train-lab' in s][0]\n",
"# test data:\n",
"tst_x_idx = [i for i,s in enumerate(fnames) if 't10k-imag' in s][0]\n",
"tst_y_idx = [i for i,s in enumerate(fnames) if 't10k-lab' in s][0]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# load entire IDX files into memory as ndarrays\n",
"train_x_array = read_IDX(PATH/fnames[trn_x_idx])\n",
"train_y_array = read_IDX(PATH/fnames[trn_y_idx])\n",
"# test data:\n",
"test_x_array = read_IDX(PATH/fnames[tst_x_idx])\n",
"test_y_array = read_IDX(PATH/fnames[tst_y_idx])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(44.86083984375, 0.057220458984375)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# size of numpy arrays in MBs\n",
"train_x_array.nbytes / 2**20, train_y_array.nbytes / 2**20"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.3 Fast AI Model Data object"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`inception_stats` have the same Normalization that the pytorch transform above uses for its dataloader. I don't do any data augmentation besides that normalization. I also use the same train/val indices from the pytorch dataloader – to ensure my pytorch model and fastai learner are working on the same data.\n",
"\n",
"Additionally in order to use pretrained models I'm going to concatenate the dataset to have 3 channels instead of 1 by copying dimensions. Another option is to forego a pretrained model and use a fresh resnet set to have only 1 input channel."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"tfms = tfms_from_stats(inception_stats, sz=sz)\n",
"# `inception_stats` are: ([0.5,0.5,0.5],[0.5,0.5,0.5])\n",
"# see: https://github.com/fastai/fastai/blob/master/fastai/transforms.py#L695"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"# using same trn/val indices as pytorch dataloader\n",
"valid_x_array, valid_y_array = train_x_array[valid_idxs], train_y_array[valid_idxs]\n",
"train_x_array, train_y_array = train_x_array[train_idxs], train_y_array[train_idxs]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"# stack dims for 3 channels\n",
"train_x_array = np.stack((train_x_array, train_x_array, train_x_array), axis=-1)\n",
"valid_x_array = np.stack((valid_x_array, valid_x_array, valid_x_array), axis=-1)\n",
"test_x_array = np.stack((test_x_array, test_x_array, test_x_array), axis=-1)\n",
"# convert labels to np.int8\n",
"train_y_array = train_y_array.astype(np.int8)\n",
"valid_y_array = valid_y_array.astype(np.int8)\n",
"test_y_array = test_y_array.astype(np.int8)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"model_data = ImageClassifierData.from_arrays(PATH, \n",
" (train_x_array, train_y_array), (valid_x_array, valid_y_array),\n",
" bs=bs, tfms=tfms, num_workers=2, test=(test_x_array, test_y_array))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Architecture"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I want to have a \"solid\" simple ConvNet to use throughout these experiments. This model will include a large field-of-view input conv layer followed by several conv layers. Each conv layer uses BatchNorm and Leaky ReLU (I don't know if this is better than ReLU, but it *sounds* like a good'ish idea to me). The model's head uses an AdaptiveConcat Pooling layer (Fast AI invention that concatenates two adaptive average and max pooling layers) leading to a Linear layer. This model doesn't use dropout (I'll add that if it looks like it needs it)."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"class AdaptiveConcatPool2d(nn.Module):\n",
" \"\"\"fast.ai, see: https://github.com/fastai/fastai/tree/master/fastai/layers.py\"\"\"\n",
" def __init__(self, sz=None):\n",
" super().__init__()\n",
" sz = sz or (1,1)\n",
" self.ap = torch.nn.AdaptiveAvgPool2d(sz)\n",
" self.mp = torch.nn.AdaptiveAvgPool2d(sz)\n",
" def forward(self, x):\n",
" return torch.cat([self.mp(x), self.ap(x)], 1)\n",
" \n",
"class Flatten(nn.Module):\n",
" \"\"\"fast.ai, see: https://github.com/fastai/fastai/tree/master/fastai/layers.py\"\"\"\n",
" def __init__(self):\n",
" super().__init__()\n",
" def forward(self, x):\n",
" return x.view(x.size(0), -1)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"class ConvBNLayer(nn.Module):\n",
" \"\"\"conv layer with batchnorm\"\"\"\n",
" def __init__(self, ch_in, ch_out, kernel_size=3, stride=1, padding=0):\n",
" super().__init__()\n",
" self.conv = nn.Conv2d(ch_in, ch_out, kernel_size=kernel_size, stride=stride)\n",
" self.bn = nn.BatchNorm2d(ch_out, momentum=0.1) # mom at default 0.1\n",
" self.lrelu = nn.LeakyReLU(0.01, inplace=True) # neg slope at default 0.01\n",
" def forward(self, x): return self.lrelu(self.bn(self.conv(x)))\n",
"\n",
"class ConvNet(nn.Module):\n",
" # see ref: https://github.com/fastai/fastai/blob/master/fastai/models/darknet.py\n",
" def __init__(self, ch_in=1):\n",
" super().__init__()\n",
" self.conv0 = ConvBNLayer(ch_in, 16, kernel_size=7, stride=1, padding=2) # large FoV Conv\n",
" self.conv1 = ConvBNLayer(16, 32)\n",
" self.conv2 = ConvBNLayer(32, 64)\n",
" self.conv3 = ConvBNLayer(64, 128)\n",
" self.neck = nn.Sequential(*[AdaptiveConcatPool2d(1), Flatten()])\n",
" self.head = nn.Sequential(*[nn.BatchNorm2d(256), \n",
" nn.Dropout(p=0.25),\n",
" nn.Linear(256, 10)]) \n",
" def forward(self, x):\n",
" x = self.conv0(x)\n",
" x = self.conv1(x)\n",
" x = self.conv2(x)\n",
" x = self.conv3(x)\n",
" x = self.neck(x)\n",
" x = self.head(x)\n",
" return F.log_softmax(x, dim=-1)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"convnet = ConvNet()"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"#### 2.0.1 Aside: Discovering AdaptiveConcatPool doubles input tensor length"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"> <ipython-input-204-3df4356516d4>(24)forward()\n",
"-> x = self.conv0(x)\n",
"(Pdb) n\n",
"> <ipython-input-204-3df4356516d4>(25)forward()\n",
"-> x = self.conv1(x)\n",
"(Pdb) n\n",
"> <ipython-input-204-3df4356516d4>(26)forward()\n",
"-> x = self.conv2(x)\n",
"(Pdb) n\n",
"> <ipython-input-204-3df4356516d4>(27)forward()\n",
"-> x = self.conv3(x)\n",
"(Pdb) n\n",
"> <ipython-input-204-3df4356516d4>(28)forward()\n",
"-> x = self.neck(x)\n",
"(Pdb) x.shape # sanity check\n",
"torch.Size([64, 128, 16, 16])\n",
"(Pdb) AdaptiveConcatPool2d(1)(x).shape\n",
"torch.Size([64, 256, 1, 1])\n",
"(Pdb) q\n"
]
},
{
"ename": "BdbQuit",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mBdbQuit\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-216-965816993670>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrainloader\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mVariable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mVariable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mconvnet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/Miniconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 357\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 358\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forward_hooks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0mhook_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-204-3df4356516d4>\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconv2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconv3\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 28\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mneck\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 29\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog_softmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-204-3df4356516d4>\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconv2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconv3\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 28\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mneck\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 29\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog_softmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Miniconda3/envs/fastai/lib/python3.6/bdb.py\u001b[0m in \u001b[0;36mtrace_dispatch\u001b[0;34m(self, frame, event, arg)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;31m# None\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'line'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 51\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispatch_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 52\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'call'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispatch_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Miniconda3/envs/fastai/lib/python3.6/bdb.py\u001b[0m in \u001b[0;36mdispatch_line\u001b[0;34m(self, frame)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstop_here\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbreak_here\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muser_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquitting\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mBdbQuit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 71\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace_dispatch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mBdbQuit\u001b[0m: "
]
}
],
"source": [
"x,y = next(iter(trainloader))\n",
"x,y = Variable(x), Variable(y)\n",
"convnet(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1 Fast AI Learner\n",
"\n",
"I'll use two fast.ai learners: the basic convnet defined above that the pytorch model will also use, and a resnet18. I'll also use an ImageNet-pretrained resnet18 to see if that helps at all. If `.pretrained` is not called, you will need to either use `ConvnetBuilder` or define a custom head yourself. **NOTE** also that the standard pytorch ResNet model has a 7x7 ouput pooling layer by default, which may restrict your model's performance if it's not replaced (such as with ConvnetBuilder).\n",
"\n",
"The non-pretrained learner's will need their conv layers unfrozen to train them."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, False, False)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_data.c, model_data.is_multi, model_data.is_reg"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"resnet_model = ConvnetBuilder(resnet18, model_data.c, model_data.is_multi, model_data.is_reg, pretrained=False)\n",
"\n",
"resnet_learner = ConvLearner(model_data, resnet_model)\n",
"custom_learner = ConvLearner.from_model_data(ConvNet(ch_in=3), model_data)\n",
"pt_res_learner = ConvLearner.pretrained(resnet18, model_data, metrics=[accuracy]) ## NOTE: metrics=[accuracy] not needed - is default"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"#### 2.1.1 Aside: Layers"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Again, the learners' conv layers are initially frozen:"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"True in [[layer.trainable for layer in layer_group] for layer_group in resnet_learner.get_layer_groups()]"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"By default only the 'head' classification layer is trainable:"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"[[False, False, False, False, False, False],\n",
" [False, False, False, False],\n",
" [True, True, True, True, True, True, True, True]]"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[[layer.trainable for layer in layer_group] for layer_group in resnet_learner.get_layer_groups()]"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Construct the custom learner with ConvnetBuilder in order to make it's layers iterable:"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"hidden": true
},
"outputs": [
{
"ename": "TypeError",
"evalue": "'ConvBNLayer' object is not iterable",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-66-e14f1b642468>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mlayer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrainable\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlayer\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlayer_group\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlayer_group\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcustom_learner\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_layer_groups\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-66-e14f1b642468>\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mlayer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrainable\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlayer\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlayer_group\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlayer_group\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcustom_learner\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_layer_groups\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'ConvBNLayer' object is not iterable"
]
}
],
"source": [
"[[layer.trainable for layer in layer_group] for layer_group in custom_learner.get_layer_groups()]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"<fastai.core.BasicModel at 0x133b41c50>"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"custom_learner.models"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"<fastai.conv_learner.ConvnetBuilder at 0x13087b4e0>"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resnet_learner.models"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"# custom_learner"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"hidden": true,
"scrolled": true
},
"outputs": [],
"source": [
"# resnet_learner"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"hidden": true,
"scrolled": true
},
"outputs": [],
"source": [
"# pt_res_learner"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 2.1.2 Recap: Models"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I'll be comparing 4 models:\n",
"1. **`convnet`** a 1-input channel custom CNN trained in straight PyTorch\n",
"2. **`custom_learner`** a 3-input channel custom CNN trained with Fast AI\n",
"3. **`resnet_learner`** a 3-input channel fresh ResNet18 trained with Fast AI\n",
"4. **`pt_res_learner`** a 3-input channel pretrained (ImageNet) ResNet18 trained with Fast AI.\n",
"\n",
"Perhaps it'd be a good idea to replace the fresh ResNet18's input layer with a 1-channel input to compare it directly to the custom CNN. That's for a future run if I or anyone chooses to do so."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Loss Function\n",
"\n",
"[`torch.nn.CrossEntropyLoss`](https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/loss.py#L701)\n",
"\n",
"Do `nn.functional.` loss functions go in the architecture, and `nn.` loss functions become criterion? [Huh, interesting. It calls `nn.functional.`](https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/loss.py#L778)."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"criterion = torch.nn.NLLLoss() # log_softmax already in arch; nll(log_softmax) <=> CE\n",
"optimizer = torch.optim.SGD(convnet.parameters(), lr=0.01, momentum=0.9)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Fast.ai Learners:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<function torch.nn.functional.nll_loss(input, target, weight=None, size_average=True, ignore_index=-100, reduce=True)>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"custom_learner.crit"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<function torch.nn.functional.nll_loss(input, target, weight=None, size_average=True, ignore_index=-100, reduce=True)>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resnet_learner.crit"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<function torch.nn.functional.nll_loss(input, target, weight=None, size_average=True, ignore_index=-100, reduce=True)>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pt_res_learner.crit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Training"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As far as I know, training in base PyTorch is tedious, so I'll do a sanity-check of it first, then do all my training with Fast AI. See ref: §4: Training or §9.1: Train ConvNet & ConvNetMod in [this notebook](https://github.com/WNoxchi/Kaukasos/blob/master/PyTorch/practice-mnist.ipynb).\n",
"\n",
"There are ways to implement learning-rate scheduling and other advanced techniques in PyTorch – but by that point unless you're doing it for practice or testing a new module: *that's what Fast.AI is for*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.1 base PyTorch"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"797"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(trainloader) # ceil(51,000 / bs) batches"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are more improvements to doing train / valid phases – including learning rate scheduling and automatically saving best weights (see: [pytorch tutorial](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html?highlight=dataloaders#load-data)) – but that's what fast.ai's for. I'll practice those in the future. Also since the FastAI library is pending an update to PyTorch 0.4, `torch.set_grad_enabled` can't be used for inference mode. Instead I follow the advice on this [pytorch forum thread](https://discuss.pytorch.org/t/resolved-validation-loss/3501). For now:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<torch.optim.sgd.SGD at 0x7f54e1448550>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"optimizer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**NOTE 1** the criterion and optimizer need to be initialized *after* the model is sent to the GPU if it is. See [pytorch thread](https://discuss.pytorch.org/t/effect-of-calling-model-cuda-after-constructing-an-optimizer/15165).\n",
"\n",
"**NOTE 2**: `Variable.volatile = True` can only be set immediately after a Variable is created. See [pytorch thread](https://discuss.pytorch.org/t/runtimeerror-volatile-can-only-be-set-on-leaf-variables/15338/2?u=wnixalo). (this is for using a validation set and *not* affecting the gradients) – I got this error when trying to set `.volatile=True` after sending the val data to GPU (`torch.FloatTensor` $\\rightarrow$ `torch.cuda.FloatTensor`)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"def train(model=None, crit=None, trainloader=None, valloader=None, num_epochs=1, verbose=True):\n",
" # if verbose:\n",
" # displays = 5\n",
" # display_step = max(len(dataloader) // displays, 1)\n",
" t0 = time.time()\n",
" \n",
" dataloaders = {'train':trainloader}\n",
" if valloader: dataloaders['valid'] = valloader\n",
" \n",
"# model.to('cuda:0' if torch.cuda.is_available() else 'cpu') # pytorch >= 0.4\n",
" to_gpu(model)\n",
" criterion = torch.nn.NLLLoss() # log_softmax already in arch; nll(log_softmax) <=> CE\n",
" optimizer = torch.optim.SGD(convnet.parameters(), lr=0.01, momentum=0.9)\n",
" \n",
" # epoch w/ train & val phases\n",
" for epoch in range(num_epochs): \n",
" print(f'Epoch {epoch+1}/{num_epochs}\\n{\"-\"*10}')\n",
" \n",
" for phase in dataloaders:\n",
" running_loss = 0.0\n",
" running_correct = 0\n",
" \n",
" for i,datum in enumerate(dataloaders[phase]):\n",
" inputs, labels = datum\n",
" inputs, labels = torch.autograd.Variable(inputs), torch.autograd.Variable(labels)\n",
" \n",
" # zero param gradients\n",
" optimizer.zero_grad()\n",
"\n",
" # (forward) track history if train\n",
" # with torch.set_grad_enabled(phase=='train'): # pytorch >= 0.4\n",
" if phase == 'valid': # pytorch 3.1 #\n",
" inputs.volatile=True #\n",
" labels.volatile=True #\n",
" # send data to gpu\n",
" inputs, labels = to_gpu(inputs), to_gpu(labels) # pytorch < 0.4\n",
" outputs = model(inputs) #\n",
" loss = crit(outputs, labels) #\n",
" _, preds= torch.max(outputs, 1) # for accuracy metric\n",
" #\n",
" # backward & optimize if train #\n",
" if phase == 'train': #\n",
" loss.backward() #\n",
" optimizer.step() # indent for pytorch >= 0.4\n",
"\n",
" # stats\n",
"# pdb.set_trace()\n",
" running_loss += loss.data[0]\n",
" running_correct += torch.sum(preds == V(labels.data)) # wrap in V; pytorch 3.1\n",
" \n",
" epoch_loss = running_loss / len(dataloaders[phase])\n",
"# if phase == 'valid': pdb.set_trace()\n",
" epoch_acc = float(running_correct.double() / len(dataloaders[phase])) # ? pytorch 3.1 reqs float conversion?\n",
"# pdb.set_trace()\n",
" print(f'{phase} Loss: {epoch_loss:.4f} Acc: {epoch_acc:.4f}')\n",
" \n",
" time_elapsed = time.time() - t0\n",
" print(f'Training Time {num_epochs} Epochs: {time_elapsed:.3f}s')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Manual PyTorch train / val training phases. See: [pytorch tutorial](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html?highlight=validation#training-the-model)\n",
"\n",
"*(forward) track history only if in train:*\n",
"```\n",
"with torch.set_grad_enabled(False):\n",
" outputs = model(inputs)\n",
" _, preds = torch.max(outputs, 1)\n",
" loss = criterion(outputs, labels)\n",
"```\n",
"*backward + optimize only if in training phase*\n",
"```\n",
" if phase == 'train':\n",
" loss.backward()\n",
" optimizer.step()\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**NOTE**: I think I'm doing something wrong with the validation phase. [Saving](https://discuss.pytorch.org/t/saving-and-loading-a-model-in-pytorch/2610/7?u=wnixalo). [PyTorch Docs on Saving](https://pytorch.org/docs/master/notes/serialization.html)."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/1\n",
"----------\n",
"train Loss: 0.1861 Acc: 0.2334\n",
"valid Loss: 0.0878 Acc: 0.4610\n",
"Training Time 1 Epochs: 17.535s\n"
]
}
],
"source": [
"train(model=convnet, crit=criterion, trainloader=trainloader, valloader=validloader)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Previous run on CPU:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/1\n",
"----------\n",
"train Loss: 0.1932 Acc: 0.0540\n",
"valid Loss: 0.0766 Acc: 0.7518\n",
"Training Time 1 Epochs: 230.497s\n"
]
}
],
"source": [
"# train(model=convnet, crit=criterion, trainloader=trainloader, valloader=validloader)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"torch.save(convnet.state_dict(), 'convnet_mnist_base.pth')"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"convnet.load_state_dict(torch.load('convnet_mnist_base.pth'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.2 with Fast AI"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4.2.1 Finding Learning Rates\n",
"\n",
"To keep things simple, I won't be using [1-Cycle](http://forums.fast.ai/t/the-1cycle-policy-an-experiment-that-investigate-super-convergence-phenomenon-described-in-leslie-smiths-research/14737), [Progressive Resizing](http://www.fast.ai/2018/04/30/dawnbench-fastai/#imagenet), or much in the way of [Cyclical Learning Rates](https://arxiv.org/abs/1506.01186). That could be a topic for later runs."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('int8')"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_data.trn_ds.get1item(0)[1].dtype"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d071c93c053f4c3281953b9cfce1c7e5",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 84%|████████▍ | 673/797 [00:17<00:03, 37.97it/s, loss=1.06] "
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"custom_learner.lr_find()\n",
"custom_learner.sched.plot()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"custom_learner.sched.plot_lr()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# next(iter(model_data.get_dl(model_data.trn_ds, False)))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a32d11af2ced4545ac7dd8303ad23f6a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 82%|████████▏ | 653/797 [00:14<00:03, 44.88it/s, loss=2.78] "
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"resnet_learner.lr_find()\n",
"resnet_learner.sched.plot()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3674e09939a94f9498f87922ff980c74",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 82%|████████▏ | 653/797 [00:14<00:03, 45.07it/s, loss=3.6] "
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 82%|████████▏ | 653/797 [00:25<00:05, 25.36it/s, loss=3.6]"
]
}
],
"source": [
"pt_res_learner.lr_find()\n",
"pt_res_learner.sched.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I'll use `1e-2` as the `lr` for all of them."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"lrs = 1e-2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4.2.2 `custom_learner`"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[True, True, True, True, True, True]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# checking all conv layers are being trained:\n",
"[layer.trainable for layer in custom_learner.models.get_layer_groups()]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2439d63c387f45ed8be876294f4c041c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.088194 0.068054 0.980333 \n",
"CPU times: user 20.2 s, sys: 7.77 s, total: 28 s\n",
"Wall time: 22.8 s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.06805]), 0.9803333334392972]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time custom_learner.fit(lrs, n_cycle=1, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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6XFnZXA3jSODlZtvafORLDWJqmh3HAAAAFusX5WpnzJziu39gis6lHDH9X+3+v7771W1alUdP35cHTp00O23366kpKRC9+/QoYM6dOggSZo5c6a6du2qHTt2aOLEiQoODtYrr7wif3//q45577339MYbbyg3N1epqan68ccfFRcXJ0nq379/wZ9PPvmkJGnVqlWaP//SrJT77rtPf/7znyVJffv21bx589S2bVvNnTtXjz32mLKzs7Vy5Ur17t274HwXLlwoNH+/fv00ZcoUZWVladKkSfrnP/95zf3KlCmjbt26SZISEhL0zTffFP5NvMK6devUpk0b/bw+wMCBA7Vs2TKNGjVKe/fu1fDhw3XXXXepY8eOkqS4uDgNHDhQPXr0UI8ePYp0jqJyWiFC8WscGSRJWrsvk0IEAAA81o3KizNUrVpVkhQWFqaePXtq7dq1SkpKUuXKlZWamqrw8HClpqYqLCzsquPOnj2rmTNnauHCherYsaM++eQTzZ49W7NmzdKDDz5YsN++ffs0ceJErVu3TsHBwRoyZIjOnz9fsP3SbJRfP77Sz693795dzz//vDIzM7V+/XrdeeedOnPmjIKCgrRx48Yifd6mTZtqy5Yt8vPzU506dQrdz+FwFJzX29tbubm5RXr/S+MivxYcHKyUlBQtXLhQU6dO1Xvvvafp06drwYIFWrZsmT799FONGTNGW7dulY9P8VSZEll2G8UjJNBX9cLLa9lOz1x6HAAAwA5nzpzR6dOnCx5//fXXiomJkXSpfMycOVPSpZGgu++++6pjx48fryeeeEIOh0Pnzp2TMUZeXl46e/bsVfudOnVKAQEBqlChgtLS0vTll19etX3evHkFf95xxx2SpBYtWmju3LmSpFmzZqlly5aSLs3radq0qZ544gl169ZN3t7eKl++vKKjo/X+++9LulRIUlJSrvu5x44dW+jI0G/VrFkzLV26VBkZGcrLy9OcOXPUunVrZWRkKD8/X7169dKYMWO0YcMG5efn69ChQ2rbtq3Gjx+vkydPKjs7u9iyMEJUyiTVqaTpK/Yp+0KuAn35xwcAAOBsaWlp6tmzpyQpNzdXAwYMUOfOnSVJzz33nPr06aO33npLkZGRBYVDujRPJjk5WaNHj5YkPf3002revLmCgoIKFl/4WcOGDdWoUSM1aNBANWvW1O9+97urtl+4cEHNmjVTfn5+wQpwU6ZM0f33368JEyYoNDRUb7/9dsH+ffv2Ve/evbVkyZKC12bNmqVHH31Uf//735WTk6N+/fpdtXrcL3Xp0uXmv1mFmDFjxlWfefXq1Ro7dqzatm0ry7LUtWtX3X333UpJSdHQoUMLFoUYO3as8vLydO+99yorK0uWZenJJ59UUFBQsWUzhQ1XuarExETryqUOPc3K3RkaMG2Npg1KVPv6lUv03JNWrtTTLVqU6DkBwB0tWpCm9neV7L/DgdJs27Ztqlevnt0x4OKu/Dkxxqy3LCvxBodI4pK5UichKlh+Dm8t28VlcwAAAMBvRSEqZXx9vNW8ZkUt31UydysGAAAA3BmFqBRqVTtU+zLO6FDm2RvvDAAAAKBQFKJSKKnOpfXauWwOAAAA+G0oRKXQbaEBqhbkx/LbAAAAwG9EISqFjDFqVbuSVu4+oZy8fLvjAAAAAKUWhaiUSqoTqtMXcpVy6KTdUQAAANxeVFSUYmNjFR8fr8TE/67mnJmZqQ4dOqh27drq0KGDfvrpJ0nShx9+qAYNGqhVq1Y6ceKEJGnPnj3q16/fTZ/7/fffV7169dS2bdurXt+/f7+MMRo1alTBaxkZGXI4HBo2bNitfMyrzJgxo1jex9VRiEqp391WSV5GXDYHAABQQhYvXqyNGzfqyntijhs3Tu3atdOuXbvUrl07jRs3TpI0adIkrV69WoMGDdLs2bMlSX/72980ZsyYmz7vW2+9pddee02LFy/+1baaNWvq888/L3j+/vvvq0GDBjd9Dk9GISqlKvg71LB6kJay/DYAAIBtPvnkEw0ePFiSNHjwYH388ceSJC8vL124cEFnz56Vw+HQ8uXLFR4ertq1axf6XnPmzFFsbKxiYmL07LPPSpJeeuklrVixQo888ohGjhz5q2P8/PxUr169gpI2b9489enTp2D7Z599pmbNmqlRo0Zq37690tLSJEkjRozQSy+9JElauHChkpKSlJ9ftKkY18qZl5enIUOGKCYmRrGxsZo8ebIkacqUKapfv77i4uJuaXSsJPjYHQC3Lql2qKZ8t0s/nbmo4IAydscBAABwW8YYdezYUcYYPfzww3rooYckSWlpaQoPD5ckhYeH6/jx45KkF198UZ06dVLVqlX17rvvqk+fPpo7d26h73/06FE9++yzWr9+vYKDg9WxY0d9/PHHeuGFF/Tdd99p4sSJV12qd6V+/fpp7ty5qlKliry9vVW1alUdPXpUktSyZUutXr1axhhNmzZN48eP16RJkzRu3Dg1adJErVq10ogRI/TFF1/Iy+vGYyWF5axevbqOHDmiLVu2SJJOnrw0rWPcuHHat2+ffH19C15zNRSiUqxl7Up65dtdWrMvU51jqtgdBwAAoETM27JFh0+dKrb3iyhfXn1jYq67z/fff6+qVavq+PHj6tChg26//XYlJSUVun+HDh3UoUMHSdLMmTPVtWtX7dixQxMnTlRwcLBeeeUV+fv7F+y/bt06tWnTRqGhl26vMnDgQC1btkw9evS4Yf7OnTtr1KhRqly5svr27XvVtsOHD6tv375KTU3VxYsXFR0dLUny9/fXm2++qaSkJE2ePFm33XbbDc9zvZyjRo3S3r17NXz4cN11113q2LGjJCkuLk4DBw5Ujx49ivRZ7EAhKsXiIirI18dLa/adoBABAACPcaPy4gxVq1aVJIWFhalnz55au3atkpKSVLlyZaWmpio8PFypqakKCwu76rizZ89q5syZWrhwoTp27KhPPvlEs2fP1qxZs/Tggw8W7GdZ1i1nK1OmjBISEjRp0iRt3bpVn332WcG24cOH66mnnlL37t21ZMkSjR49umDb5s2bFRISUjCaVBSF5QwODlZKSooWLlyoqVOn6r333tP06dO1YMECLVu2TJ9++qnGjBmjrVu3ysfHtSoIc4hKMV8fbzWODNaavZl2RwEAAHBbZ86c0enTpwsef/3114q5XMq6d++umTNnSro0EnT33Xdfdez48eP1xBNPyOFw6Ny5czLGyMvLS2fPnr1qv2bNmmnp0qXKyMhQXl6e5syZo9atWxc549NPP62XX35ZISEhV72elZWlatWqFeT72YEDBzRp0iT98MMP+vLLL7VmzZoinaewnBkZGcrPz1evXr00ZswYbdiwQfn5+Tp06JDatm2r8ePH6+TJk8rOzi7yZyoprlXPcNOa1wzR/3y7U1nnclTBz2F3HAAAALeTlpamnj17SpJyc3M1YMAAde7cWZL03HPPqU+fPnrrrbcUGRmp999/v+C4o0ePKjk5uWBU5umnn1bz5s0VFBRUsPjCz8LDwzV27Fi1bdtWlmWpa9euvypX19OgQYNrri43evRo9e7dW9WqVVPz5s21b98+WZalBx54QBMn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8n3An5qZOedcA9vlO/Yw1GYbvptlcx7c/8tQKUDb5qBsYRgWLC9ZzhLlK93OEuXFrVA91LjtN7r9q16+Hm13y1sWaUqNSlpZovwiksaht8L+byxodiOT+RW065JLslmifDXjdXaMltOulS6vRoxerl0sUb6a8Xq547iAuPx4w5zjguosYtE61hx1zq43sh9e+vYyPrZa5+MC6rRtgdb+cz/XQI1MiPqA4wvWB4FXLVXHOVczsymgAxhtYLt8X/4QTBxu+G5WxMLw/q/BwNlhukQ89BDs2bPerZDlmkuQnGM+SVrJ8oqSMBYpb8T+F9vPcpZXsn/OLb+gfb7c/hfZz4pisZLzcpHn4mXbwgradaH759zyiz4vSx1HI2Lk5quBg+o22PLaBsTrPMex2jFyF3tOF2vXghg15N86y6hzofE6X9svMkYiq+WJMiS+sN6tOL87fwte+9E13WUjE6LF0taz/1Uvpw5m9kHggwADAwMX3zKAd38WauXV2dZqyfZC+9b1boVcKc75q6SIXDL+eQje/uH1boVcbtyFJGoXkkCyRPkqJpBnH9dyjv3cwpXXWbTelVLn3KJzCuv/Fz7ws+evs1qxvtA6bVsW+VxjNTIhGgQW9ndtAk4uUWfQzCJADhg/e0POuc8AnwG49dZbV+dPJX23rMpmRERERNaE7puTi9X6APS/cr1bcclp5CxzjwJXmdlWM4sB9wL3n1XnfuB9wfK7ge+uyf1DIiIiIiLNZtOm9W7BJalhPUTBPUG/BHwDCAN/5Zx7zsx+G3jMOXc/8Fngb83sAH7P0L2Nao+IiIiISFO7p3kncz6fRg6Zwzn3L8C/nFX23xcsl4D3NLINIiIiIiIiS2nog1lFREREREQuZUqIRERERESkaSkhEhERERGRpqWESEREREREmpYSIhERERERaVpKiEREREREpGkpIRIRERERkaalhEhERERERJqWEiIREREREWlaSohERERERKRpKSESEREREZGmpYRIRERERESaljnn1rsNK2JmI8DRVdpcJzC6StuS5VHM14fivvYU8/WhuK89xXx9KO5rTzFfexcT883Oua7lVLzsEqLVZGaPOeduXe92NBPFfH0o7mtPMV8fivvaU8zXh+K+9hTztbdWMdeQORERERERaVpKiEREREREpGk1e0L0mfVuQBNSzNeH4r72FPP1obiv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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_metrics(custom_learner)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"#### 4.2.2.1 *Aside*: Fast.ai Automatic LR scaling:"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Just noticed this very useful feature. Even at very stripped-down settings, Fastai still 'revs' the learning rate up during train-start and back down before train-end:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEKCAYAAAA4t9PUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8VOXZ//HPNZMNAgmEsC8GZBFQEA0QFqlL61KtWMUKVkVFUetubdX+nraPdrXWWheqoliXKotoFX1UXHBnBxd2DHsEFAVRRJYk1++POdg0BjKQnMwk+b5fr3ll5sw5Z75Dhrlyn/vc9zF3R0RE5EBFEh1ARERqNxUSERGpEhUSERGpEhUSERGpEhUSERGpEhUSERGpEhUSERGpEhUSERGpEhUSERGpkpREB6gJubm5npeXl+gYIiK1xrx58z5z9+bxrFsvCkleXh5z585NdAwRkVrDzNbEu64ObYmISJWokIiISJWokIiISJWEWkjM7EQzW2ZmhWZ2YwXPp5vZxOD5WWaWFyxvZmavm9k2M7un3DZHmtmCYJu7zMzCfA8iIrJvoRUSM4sCY4CTgB7ACDPrUW61UcAWd+8M3AHcGizfAfwauL6CXd8LjAa6BLcTqz+9iIjEK8wWST+g0N1XuvsuYAIwtNw6Q4FHgvuTgePMzNz9a3d/h1hB+ZaZtQay3H2Gx67I9ShwWojvQUREKhFmIWkLrCvzuChYVuE67l4MbAWaVbLPokr2KSIiNSjMcSQV9V2Uv65vPOsc0PpmNprYITA6dOiwj12GY8mGL5mx4nMOadWY7q2zaJqZVuMZRERqQpiFpAhoX+ZxO2D9XtYpMrMUIBvYXMk+21WyTwDcfSwwFiA/P7/GL0z/jzdW8NwH/4nWKiuDHm2yOLx9E/IPasrhHZrQMK1ejAcVkTouzG+yOUAXM+sIfAwMB84ut84UYCQwAxgGTAv6Pirk7hvM7CszKwBmAecBd4cRvqpKSkvpkNOQP/74MBZv2MqSDV+x8OOtvL7sU9whGjF6tsmib14OQ7o2p3/HHDJSo4mOLSKy30IrJO5ebGZXAFOBKPCQuy8ys1uAue4+BRgHPGZmhcRaIsP3bG9mq4EsIM3MTgOOd/fFwGXAw0AD4MXglnTcIT0lwuAuuQzukvvt8q3f7Gb+2i3MW72FOas389jMNYx7ZxXpKRH6d2rGkC65fL97S/JyMxOYXkQkfraPBkCdkZ+f7zU919Zl/5pH4afbeOW67+1zvW92lTBr1ee8tfwz3lz+KSs2fQ1A99ZZ/PDQVpx0WGs6t2hUE5FFRL5lZvPcPT+edXWQPiTuEM9QyQZpUY7u1oKju7UAerBu83ZeXvwJLy7YwO2vLOf2V5bTpUUjTu3dhjOObEebJg1Czy4isj9USJJM+5yGjBrckVGDO7Jx6w6mLtrI/wVF5W+vLmdw51yGHdmOE3q2Up+KiCQFFZKQOI5VeLZy/FplZzByYB4jB+axbvN2Js8rYvK8Iq6e8D6N01P48RFtOW9Ang59iUhCqZDUEu1zGnLtD7py9XFdmLnqc56cW8SE2et4dMYajuqSy8gBeRxzSAuiEU09JiI1S4UkJPH2keyvSMQYeHAuAw/O5f+d3J0Js9fyr5lruejRubTPacCFgzoyvG8HGqTpsJeI1AxNI1+L5TZK54pju/D2Dccw5uwjaNk4g5ufW8ygW6dx92sfsXX77kRHFJF6QC2SkNTkSdWp0Qgn92rNyb1aM2f1Zu59YwW3v7Kc+95cwU8LDuLiozrRvHF6DSYSkfpEhaSO6ZuXQ9/zc1iy4UvufWMFD769ksdmrOH8QXlcMqQTTRpqzi8RqV46tBWSWB9J4jq+u7fO4q4RfXjt50dzfM+W3PfmCo669XXueu0jtu0sTlguEal7VEjquI65mdw5vA8vXn0UBQc342+vLGfIX17nwbdXsqu4NNHxRKQOUCEJjVdxFEn1OqRVFg+cl88zlw+iR+ssfv9/Szj+jjd5edFG6sM0OSISHhWSeubw9k3410X9+ecFfUmJRhj92DzOfmAWi9d/mehoIlJLqZCEJKxxJNXlmG4tePHqo7j51J4s2fglJ9/9Njc+9SGfb9uZ6GgiUsuokNRjqdEIIwfm8eb1x3DhoI5MnlfEcX97kwmz11JaqsNdIhIfFZKQOMndIikru2Eqvz6lBy9cfRRdWzTmxqcXMOy+6SzZoMNdIlI5FRL5VteWjZl4SQG3DevF6s+3c8rd7/D75xfztU4XFpF9UCEJiXvVZ/9NBDPjzPz2vHbd9/hJfjsefGcVx9/xFu8WfpboaCKSpFRIpEJNM9P40+m9ePLSAaSnRPjpg7O46ekFfLVD83eJyH9TIQlJbeoj2Ze+eTm8cPVRjB7SiYlz1nL8HW/xxrJPEx1LRJKIColUKiM1yq9+2J2nLhtIo/QUzv/nHK5/8gO+VOtERFAhCY07tbCHZN/6dGjK81cN5vJjDubf733MSX9/m9mrNic6logkmAqJ7Jf0lCi/OOEQnrx0AClRY/jYGdw2danm7RKpx1RIQuJQNzpJ9uKIDk154aqjOPPI9ox5fQVn3DudFZu2JTqWiCSACokcsMz0FG4d1ov7zjmSoi3bOfmut/nXzDWaBFKknlEhCUlsHEn9cOKhrXjpmiH0zcvhf55ZyBVPvKeOeJF6RIVEqkXLrAweuaAfN510CC8t2siP7n6HhR9vTXQsEakBKiQhqsNdJBWKRIxLvncwE0cXsKu4lNP/MZ1HZ6zWoS6ROk6FRKpdfl4O/3fVUQzq3IzfPLuIy5+Yr0NdInWYCklI6uI4kv2Rk5nGuJF9uemkQ5i66BNOuesdXTxLpI5SIZHQlD3UtbO4hNPvfZdn3/840bFEpJqpkITEcay+dZLsRX5eDs9dOZhebZtw9YT3+d3ziyku0QBGkboi1EJiZiea2TIzKzSzGyt4Pt3MJgbPzzKzvDLP3RQsX2ZmJ5RZfq2ZLTKzhWY23swywnwPUj1aNM7g8Yv7c/7APMa9s4pzxs3iM13WV6ROCK2QmFkUGAOcBPQARphZj3KrjQK2uHtn4A7g1mDbHsBwoCdwIvAPM4uaWVvgKiDf3Q8FosF6Sae+95FUJDUa4X9P7cntZ/bmvbVf8KO73+GDdV8kOpaIVFGYLZJ+QKG7r3T3XcAEYGi5dYYCjwT3JwPHWex40FBggrvvdPdVQGGwP4AUoIGZpQANgfUhvgcJwRlHtuOpywYSMePM+2fw5Nx1iY4kIlUQZiFpC5T9higKllW4jrsXA1uBZnvb1t0/Bv4KrAU2AFvd/eVQ0leRe/0bR7I/Dm2bzXNXDqZvXlN+MflD/vTCEkpKNd5EpDYKs5BU9DVa/ptib+tUuNzMmhJrrXQE2gCZZnZOhS9uNtrM5prZ3E2bNu1HbKkpOZlpPHxBP84p6MD9b63kksfmsU3XhxepdcIsJEVA+zKP2/Hdw1DfrhMcqsoGNu9j2+8Dq9x9k7vvBp4GBlb04u4+1t3z3T2/efPm1fB29o9TO6/ZXtNSoxF+f9ph3HxqT6Yt/YRh906naMv2RMcSkf0QZiGZA3Qxs45mlkasU3xKuXWmACOD+8OAaR6bT2MKMDw4q6sj0AWYTeyQVoGZNQz6Uo4DloT4HqSGjByYx8MX9OPjL77htDHvMm+NLpglUluEVkiCPo8rgKnEvuwnufsiM7vFzE4NVhsHNDOzQuA64MZg20XAJGAx8BJwubuXuPssYp3y84EFQf6xYb2HqvC9HaCTvRrStTn//tkgMtNTGDF2Fk/PL0p0JBGJg9WHCfXy8/N97ty5NfqaZ90/AwcmXTKgRl+3Ltjy9S4ue3weM1du5spjO3PdD7pqcKdIDTOzee6eH8+6GtkeEjVIDlzTzDQevbA/Z+W35+5phfx80ge6lK9IEktJdACRiqSlRPjzGYfRrmkDbn9lOZ98tYN7zzmSrIzUREcTkXLUIgmLxpFUmZlx5XFduP3M3sxauZkz753B+i++SXQsESlHhUSS3hlHtuORC/ux/otvOP0f0zUdvUiSUSEJicaRVK9BnXN58rLYiQs/uX8Gb3+kQaYiyUKFRGqNQ1pl8e/LB9KuaQMu+OccJs/T6cEiyUCFJCSaayscrbMb8OSlAyjo1Izrn/yA+99ckehIIvWeConUOo0zUnno/L6c0qs1f3pxKX98YQn1YTyUSLLS6b8hcdQiCVNaSoQ7h/chJzONsW+t5PNtu7j1jMNIiepvI5GapkIitVY0Ytx8ak+aZaZzx6vL2frNLu45+wgyUqOJjiZSr+jPt5C466ytmmBmXP39LvzutEN5bemnnDtuFlu/2Z3oWCL1igqJ1AnnFhzE3SP68P66Lzjr/hl8+uWOREcSqTdUSEKiPpKad0qvNvzz/H6s3bydYffNYM3nXyc6kki9oEIidcrgLrmMv7iAr3bs5ox7Z7Bs41eJjiRS56mQhERnoyZO7/ZNePLSgUQjcNbYGXxY9EWiI4nUaSokUid1btGIJy8ZSOOMFM5+YBZzVuuKiyJhUSEJSayPRJ0kidShWUMmXTKAFlnpnDtulubnEgmJConUaa2zGzDpkgHkNctk1MNzeXnRxkRHEqlzVEjC4q5RJEkit1E6E0YX0L1NFpc9Pp9n3/840ZFE6hQVEqkXmjRM4/GL+pN/UFOumfg+E+esTXQkkTpDhSQkGkeSfBqlp/DwBf0Y0qU5Nzy1gIfeWZXoSCJ1ggqJ1CsN0qKMPe9ITuzZilueX8yY1wsTHUmk1lMhCYk76iNJUukpUe45uw+nHd6G26Yu485XP0p0JJFaTbP/Sr2UEo1w+08OJxqJcMeryykpLeXaH3TVKdsiByDuQmJmme6uyYvi5Li+lJJcNGLcNqwXKRHjrmmFlLhz/fHd9HsT2U+VFhIzGwg8CDQCOphZb+ASd/9Z2OFEwhaJGH86/TAiEWPM6ysoLnVuPPEQFROR/RBPi+QO4ARgCoC7f2BmQ0JNVQeoj6T2iESMP5x2KCkR4/43V1JS4vy/k7urmIjEKa5DW+6+rtx/qpJw4ogkRiRi3DK0J9GI8eA7qygudX77ox4qJiJxiKeQrAsOb7mZpQFXAUvCjVX7uWscSW1jZvz2Rz2ImPHQu6soKXVuPrUnkYh+kSL7Ek8huRS4E2gLFAEvA+ofkTrJzPj1Kd1JiRpj31pJiTu/H3qoionIPsRTSLq5+0/LLjCzQcC74USqG2KXI9GXT21kZtx00iFEI8a9b6ygpMS/7ZAXke+KZ0Di3XEu+w4zO9HMlplZoZndWMHz6WY2MXh+lpnllXnupmD5MjM7oczyJmY22cyWmtkSMxsQTxaR/WFm/PKEblx5bGcmzl3HDU99SGmprlYmUpG9tkiCL+iBQHMzu67MU1lAtLIdm1kUGAP8gNghsTlmNsXdF5dZbRSwxd07m9lw4FbgLDPrAQwHegJtgFfNrKu7lxA7zPaSuw8L+mwa7sf7rTHurj6SWs7M+Pnx3YiYcedrHxGNGH/8sVomIuXt69BWGrGxIylA4zLLvwSGxbHvfkChu68EMLMJwFCgbCEZCvxvcH8ycI/FTpMZCkxw953AKjMrBPqZ2SJgCHA+gLvvAnbFkUXkgF3z/S6UunP3tELMYqcKq5iI/MdeC4m7vwm8aWYPu/uaA9h3W2BdmcdFQP+9rePuxWa2FWgWLJ9Zbtu2wDfAJuCfwcDIecDVyTriXl81dYOZcd0PulJS6vzjjRVEI/C7oYfq1GCRQDyd7dvN7DZih5ky9ix092Mr2a6i/2XlDzLvbZ29LU8BjgCudPdZZnYncCPw6++8uNloYDRAhw4dKokqsm9mxi9O6Eapw31vriBixs2n9lQxESG+zvbHgaVAR+BmYDUwJ47tioD2ZR63A9bvbR0zSwGygc372LYIKHL3WcHyycQKy3e4+1h3z3f3/ObNm8cRt3ppHEndY2bccGI3Rg/pxKMz1nDzc4txVwe8SDyFpJm7jwN2u/ub7n4hUBDHdnOALmbWMegUH04wzUoZU4CRwf1hwDSP/c+cAgwPzurqCHQBZrv7RmIDJLsF2xzHf/e5iIRqz6nBowZ35OHpq/nd80tUTKTei+fQ1u7g5wYzO5lYy6BdZRsFfR5XAFOJneX1kLsvMrNbgLnuPgUYBzwWdKZvJlZsCNabRKxIFAOXB2dsAVwJPB4Up5XABXG+1xrlOKZekjrJzPifk7tT6s5D764iYmhuLqnX4ikkvzezbODnxMaPZAHXxrNzd38BeKHcst+Uub8DOHMv2/4B+EMFy98H8uN5fZGwmBm/OaUH7vDgO6uIRowbT9KswVI/7bOQBGNBurj788BW4JgaSVUHqI+k7tszN1dJqXP/WyuJRGKDGFVMpL7ZZyFx9xIzO5XYVPIiUo4FZ2+VunPvGyuIGLo4ltQ78Rzamm5m9wATgW/Ha7j7/NBS1QGOWiT1RSRi/G7ooZS6M+b1FUTNuO74bpVvKFJHxFNIBgY/bymzzIHKxpGI1Buxi2MdRmkp3DWtkEjEuOb7XRMdS6RGVFpI3F39IgfAXWdt1Td7Lttb4s7fX/2IqBlXHtcl0bFEQhfXFRJFJD6RiHHrGb0odef2V5YTjRo/O7pzomOJhEqFJCQOmmyrnopGjNuG9aak1PnLS8tIiRijhxyc6FgioVEhEQlBNGLcfmZvikudP76wlGgkwqjBHRMdSyQUlRYSMzu9gsVbgQXu/mn1R6ojXA2S+i4lGuHvZx1Oaanzu+cXkxIxRg7MS3QskWoXT4tkFDAAeD14fDSxKd67mtkt7v5YSNlEar3UaIS7RvTh8sfn89spi4hEjHMLDkp0LJFqFc+kjaVAd3c/w93PAHoAO4ldW+SGMMPVZrFxJGqTSKyY3HP2EXy/ewt+/cxCxs9em+hIItUqnkKS5+6flHn8KdDV3TfznwkdRWQf0lIijPnpERzTrTk3Pb2ASXPWVb6RSC0RTyF528yeN7ORZjYSeBZ4y8wygS/CjVd7xcaRiPxHekqUe885kqO65HLD0x/y1LyiREcSqRbxFJLLgYeBw4E+wKPEpnX/WoMVRfZPRmqUB87LZ+DBzbh+8gc8897HiY4kUmXxjGx3YlcinBx+nLpDc23J3mSkRnnwvL5c8PBsrpv0PtGI8aPebRIdS+SAVdoiMbPTzewjM9tqZl+a2Vdm9mVNhBOpqxqkRXno/L7kH5TDNRPf54UFGxIdSeSAxXNo6y/Aqe6e7e5Z7t7Y3bPCDlbbucaRSCUapqXw0AV96dO+CVeNf4+XFm5MdCSRAxJPIfnE3ZeEnkSkHmqUnsI/L+jLYe2yueKJ+byy+JPKNxJJMvEUkrlmNtHMRgSHuU7fy2h3KcNxjSORuDTOSOWRC/vRs00WP3t8HtOWqphI7RJPIckCtgPHAz8KbqeEGUqkvsnKSOXRUf05pFUWlz42nzeXb0p0JJG4xXPW1gU1EaSuUR+J7K/sBqk8NqofZz8wi4sfnctDI/syuEtuomOJVGqvLRIz+2Xw824zu6v8reYiitQfTRqm8fhF/emUm8moR+YwvfCzREcSqdS+Dm3t6WCfC8yr4Cb74I6aJHJAmmbGislBzRoy6pG5zFz5eaIjiezTXg9tuftzwc9Hai6OiAA0a5TO4xcVMOKBmVz48BweubAfffNyEh1LpELxDEjsamZjzexlM5u251YT4Wo7XbNdqqJ543SeuLg/rbIzOP+h2cxbsyXRkUQqFM9ZW08C7wH/A/yizE1EQtaicQbjLy6gRVasmLy/TvOkSvKJp5AUu/u97j7b3eftuYWerJZzd821JdWiZVYGT1zcn6aZaZw7bhYLirYmOpLIf4mnkDxnZj8zs9ZmlrPnFnoyEflW6+wGjB9dQHaDVM4ZN4uFH6uYSPKIp5CMJHYoazr/OWNrbpih6gKdtCXVrW2TBoy/uIBG6SmcM24Wi9dr7lRJDvssJGYWAc5x947lbp1qKJ+IlNE+pyHjLy6gQWqUc8bNYtnGrxIdSWTfhcTdS4G/1lCWOsVd1yORcHRoFismqVHj7Adm8tEnKiaSWPEc2nrZzM6wA5iB0MxONLNlZlZoZjdW8Hx6MCFkoZnNMrO8Ms/dFCxfZmYnlNsuambvmdnz+5tJpC7Iy83kiYsLiESMEQ/MovDTbYmOJPVYPIXkOmKnAO/cnwtbmVkUGAOcBPQARphZj3KrjQK2uHtn4A7g1mDbHsBwoCdwIvCPYH97XM1/Rt4nJcc1jkRCdXDzRoy/uD/gnP3ATFZ99nWiI0k9VWkhCS5kFXH3tP28sFU/oNDdV7r7LmACMLTcOkOBPSPnJwPHBS2focAEd9/p7quAwmB/mFk74GTgwXjeoEhd1rlFY564uIDiUmfE2Jms+VzFRGpePC0SzKypmfUzsyF7bnFs1hZYV+ZxUbCswnXcvRjYCjSrZNu/A78ESivJPNrM5prZ3E2ban5KbvWRSE3p2rIxj1/Un53FJYwYO5N1m7cnOpLUM/FMkXIR8BYwFbg5+Pm/cey7oq9Rj3OdCpeb2SnAp/EMiHT3se6e7+75zZs3rzytSC3WvXUW/7qoP1/vKmH42JkUbVExkZoTT4vkaqAvsMbdjwH6APH8iV8EtC/zuB2wfm/rmFkKkA1s3se2g4BTzWw1sUNlx5rZv+LIUuMctUikZvVsk83jF/Xnqx27GfHATNZ/8U2iI0k9EU8h2eHuOyB2lpW7LwW6xbHdHKCLmXU0szRinedTyq0zhdiAR4BhwDR392D58OCsro5AF2C2u9/k7u3cPS/Y3zR3PyeOLCL1wqFts3lsVH+++DpWTDZu3ZHoSFIPxFNIisysCfAM8IqZPct3WxbfEfR5XEHsUNgSYJK7LzKzW8zs1GC1cUAzMyskdnbYjcG2i4BJwGLgJeBydy/Zv7eWWO6gse2SCL3bN+GRUf34fNsuRjwwk0+/VDGRcFmsARDnymbfI3b46aXgTKxaIT8/3+fOrdlZXfJ//yo/6NGSP51+WI2+rsge89Zs5rxxs2mVncH40QW0aJyR6EhSi5jZPHfPj2fdeM/aGmxmF7j7m8AMvnv2lXyHZv+VxDryoBz+eUE/1n+xgxFj1TKR8MRz1tZvgRuAm4JFqUBSdnCLyH/r1zGHhy/oy4atOzhr7Ew2bFUHvFS/eFokPwZOBb4GcPf1QOMwQ9UF7uohkeTQv1MzHhvVj8++2slP7p+hcSZS7eIpJLuCM6li3cdmmeFGEpHqduRBOfzrov5s3b6b4RoBL9UsnkIyyczuB5qY2cXAq8AD4caq/TSORJJN7/ZNeOLiArbvKuYn989gxSZN9CjVI565tv5KbB6sp4iNH/mNu98ddjARqX6Hts1m/OgCSkqds+6fyXJNQS/VIK6zttz9FXf/hbtf7+6vhB2qLnDX7L+SnA5plcWE0QVEDIaPnakrLUqV7bWQ7JkuvoJbXNPIi0jy6tyiMRMvGUB6SoQRD8xkQZGuAS8Hbq+FZM908RXc4p1Gvl5TH4kku465mUy6ZACN0lM4+8GZzF+7JdGRpJaK69CWiNRN7XMaMunSAeRkpnHug7OYvWpzoiNJLaRCEhKNI5Haom2TBkwcPYCW2Rmc99As3lxe89fvkdpNhUREaJWdwcTRA+iY24iLHpnDCws2JDqS1CIqJCFxd0ydJFKLNG+czoTRBfRq14QrnpjPpDnrKt9IBBUSESkju0Eqj43qx6DOufzyqQ8Z986qREeSWkCFJCTxT84vklwapqXw4Mh8Tjq0Fb97fjF3vLKc/bnchNQ/KiQi8h3pKVHuHtGHYUe2487XPuJ3zy+htFTFRCqWkugAdZZrHInUbinRCH85oxeN0lN46N1VfLVjN386/TBSovr7U/6bComI7FUkYvz2Rz3IbpDKna99xLadxfx9+OGkp0QTHU2SiP60CImD5tqSOsHMuPYHXfmfk7vz4sKNXPjwHL7asTvRsSSJqJCISFwuOqoTfz2zNzNXbmb42Jls+mpnoiNJklAhCUlsHEmiU4hUr2FHtuPBkfms3PQ1Z9w7nVWf6QJZokIiIvvpmG4tGD+6gG07ixl273Q+LPoi0ZEkwVRIQhLrIxGpmw5v34TJlw6gQVqU4WNnan6uek6FREQOSKfmjXj6soEc1CyTUQ/P4d/vFSU6kiSICklIXONIpB5okZXBxEsK6JuXw7UTP2DsWys0Cr4eUiERkSrJykjl4Qv7cnKv1vzxhaX8dsoiiktKEx1LapAGJIbE0ey/Un+kp0S5e3gf2jZpwNi3VrJu83buPvsIGqXrK6Y+UItERKpFJGL86ofd+f1ph/LWR59x5n0z2LD1m0THkhqgQhISXSFR6qtzCg5i3Mh81m3ezmlj3mXhx1sTHUlCpkIiItXu6G4tePLSAUTM+Mn9M3htySeJjiQhCrWQmNmJZrbMzArN7MYKnk83s4nB87PMLK/MczcFy5eZ2QnBsvZm9rqZLTGzRWZ2dZj5q8JBTRKp17q3zuKZywfRMTeTix+dyyPTVyc6koQktEJiZlFgDHAS0AMYYWY9yq02Ctji7p2BO4Bbg217AMOBnsCJwD+C/RUDP3f37kABcHkF+xSRJNEyK4NJlwzg2ENa8Nspi/jNswvZrTO66pwwWyT9gEJ3X+nuu4AJwNBy6wwFHgnuTwaOs9ipTkOBCe6+091XAYVAP3ff4O7zAdz9K2AJ0DbE93DgXLP/igBkpqdw/7n5XDS4I4/OWMN542az+etdiY4l1SjMQtIWWFfmcRHf/dL/dh13Lwa2As3i2TY4DNYHmFWNmUUkBNGI8T+n9OD2M3szb+0Who55h6Ubv0x0LKkmYRaSiv4cLz/kdW/r7HNbM2sEPAVc4+4VfhrNbLSZzTWzuZs2JWYeIA0jEflvZxzZjomjC9i5u5TT/zGdqYs2JjqSVIMwC0kR0L7M43bA+r2tY2YpQDaweV/bmlkqsSLyuLs/vbcXd/ex7p7v7vnNmzev4lvZf/6dmikiAH06NOW5KwfTpWVjLnlsHne++pGuB1/LhVlI5gBdzKyjmaUR6zyfUm6dKcDI4P4wYJrHJuqZAgwPzurqCHQBZgf9J+OAJe7+txCzVws1SEQq1jIrg4mjCzi9T1vueHWDEB58AAAQCklEQVQ5V4yfz9c7ixMdSw5QaPMXuHuxmV0BTAWiwEPuvsjMbgHmuvsUYkXhMTMrJNYSGR5su8jMJgGLiZ2pdbm7l5jZYOBcYIGZvR+81K/c/YWw3seB0rx1IvuWkRrl9p/0pkebLP74whKWf7KN+845gs4tGic6muynUCfCCb7gXyi37Ddl7u8AztzLtn8A/lBu2TvUoj/01Ucism9mxkVHdaJH6yyuHP8ep97zLn8Z1otTerVJdDTZDxrZHhI1SETiN7BzLv931VF0b53FFU+8x83PLWJXscab1BYqJCHSOBKR+LXKzmDC6AIuHNSRf767mhEPzGTj1h2JjiVxUCEJiS7uI7L/UqMRfvOjHtxzdh+WbviSk+96m3cLP0t0LKmECkmI1EcicmBO6dWGZ68YTE5mGueMm8VtU5dqapUkpkISErVHRKqmc4tGPHvFIM7Kb8+Y11fwk/tnsG7z9kTHkgqokIRIDRKRqmmYlsKfz+jFPWf3ofDTbfzwzrd57oPy45ol0VRIQqIuEpHqc0qvNrxw1VF0btmIK8e/xw2TP2T7Lg1gTBYqJGFSJ4lItWmf05BJlwzgimM6M2neOk656x3mr92S6FiCComI1CKp0QjXn9CNxy/qz47dJQy7dzq3TV3KzuKSREer11RIQqT2iEg4Bh6cy0vXDuGMI9ox5vUVDL3nXRav17T0iaJCEgKNIREJX1ZGKred2ZsHz8vns227GDrmHca8XkixThOucSokIVIXiUj4vt+jJa9cO4Tje7bitqnL+PE/prNo/dZEx6pXVEhCoAaJSM1qmpnGmLOPYMzZR7Bh6w5Ovedd/vTiEr7Zpb6TmqBCEiLNtSVSs07u1ZrXrvsew45ox/1vruSEv7/F2x8l5gqp9YkKSQjUIBFJnOyGqdw6rBfjLy4gGjHOHTeb6ya+z2fbdiY6Wp2lQhIi9ZGIJM6Ag5vx4tVHccUxnZnywXqO+esbPPTOKs3ZFQIVkhDorC2R5JCRGuX6E7rx0jVHcXj7Jtzy/GJOvuttpq/QjMLVSYUkRGqQiCSHzi0a8+iF/bj/3CPZvquEsx+YxeWPz6doiyaBrA6hXmq3vlJ7RCT5mBkn9GzF97o254G3VjLmjUJeWfIJ5w/M42dHH0yThmmJjlhrqUUSIvWRiCSfjNQoVx7XhWk/P5qhvdvwwNsrOeovr3PvGyvYsVunCx8IFZIQqItEJPm1adKA287szUtXD6FfXg63vrSUo297g4lz1qpDfj+pkITI1CQRSXrdWjVm3Pl9mTC6gFbZGdzw1AKOvf0NJsxey65iFZR4qJCEwNVLIlLrFHRqxr9/NpBxI/PJaZjGjU8v4Ji/vsFjM9doduFKqJCIiATMjOO6t+SZywfx8AV9aZmVzq+fWcj3/vIGY99awdZvdic6YlLSWVshUB+JSO1mZhzdrQXf69qc6Ss+5+5pH/HHF5Zy56sf8ZO+7blgYEc6NGuY6JhJQ4UkROoiEandzIxBnXMZ1DmXhR9vZdw7q3hsxhoemb6a43u04twBBzGgUzMikfr9n12FREQkDoe2zeaOsw7nhhMP4dEZq3li9lpeWrSRg5o15Ky+7Rl2ZDtaNM5IdMyEUCEJkWb/Fal7WmVn8MsTD+Gq47rw0sKNjJ+9lr+8tIy/vbyc47q34Md92nF0t+ZkpEYTHbXGqJCEQH0kInVfRmqU0/q05bQ+bVmxaRsT56zjqXlFTF30CY3TUzjh0Fb8qHcbBh3cjJRo3T6vSYUkROojEakfDm7eiF/9sDu/PKEb01d8zpQP1jN14UYmzyuiWWYaxx7SguO6t2Bwl+Y0Sq97X7t17x0lAY0jEamfUqIRhnRtzpCuzfn9aYfy5vJNPP/hBqYu2siT84pIjRoFnZpxTLcWDOqcS5cWjepER32ohcTMTgTuBKLAg+7+53LPpwOPAkcCnwNnufvq4LmbgFFACXCVu0+NZ5/JpPZ/PETkQGWkRjmhZytO6NmK3SWlzFuzhWlLP+W1JZ9wy/OLAcjJTKN/xxz6d8yhb8ccurZsTGotPAwWWiExsygwBvgBUATMMbMp7r64zGqjgC3u3tnMhgO3AmeZWQ9gONATaAO8amZdg20q22e1GTrmXXYewCRupeokEZEyUqMRCjo1o6BTM371w+6s27ydmSs/Z+bKzcxa9TkvLtwIQFpKhO6tszisbRaHtc2ma8vGdGreiOwGqQl+B/sWZoukH1Do7isBzGwCMBQo+6U/FPjf4P5k4B6LTVA1FJjg7juBVWZWGOyPOPZZbTrkNGTXAU6N0KVFY449pEU1JxKRuqB9TkPa5zTkzPz2ABRt2c78tV+w8OOtLCjayrPvredfM9d+u35uozQ65TYiL7chrbIb0DIrnVZZGbTMyiAnM43GGSlkpqUk7DBZmIWkLbCuzOMioP/e1nH3YjPbCjQLls8st23b4H5l+6w2d4/oE9auRUS+1a5pQ9o1bcipvdsAUFrqrNm8ncJPt7Fy0zZWbvqalZ9t4/Vlm/hs284Kzww1g0ZpKWSmp5CaYqREIuQ2SuPJSweGnj/MQlJRaSz/9ve2zt6WV3TwsMLjSGY2GhgN0KFDh72nFBFJMpGI0TE3k465mUDL/3pud0kpn23bycatO/jkyx18sX03X+0o5qudxXy1Yzdf7yxmd4lTXOpkptXMWJYwC0kR0L7M43bA+r2sU2RmKUA2sLmSbSvbJwDuPhYYC5Cfn69OCxGpE1KjEVpnN6B1doNER/lWmKcHzAG6mFlHM0sj1nk+pdw6U4CRwf1hwDR392D5cDNLN7OOQBdgdpz7FBGRGhRaiyTo87gCmErsVN2H3H2Rmd0CzHX3KcA44LGgM30zscJAsN4kYp3oxcDl7l4CUNE+w3oPIiJSOfN6cKpqfn6+z507N9ExRERqDTOb5+758axb+0a+iIhIUlEhERGRKlEhERGRKlEhERGRKlEhERGRKqkXZ22Z2SZgzQFsmgt8Vs1xqkuyZlOu/ZOsuSB5synX/jnQXAe5e/N4VqwXheRAmdnceE9/q2nJmk259k+y5oLkzaZc+6cmcunQloiIVIkKiYiIVIkKyb6NTXSAfUjWbMq1f5I1FyRvNuXaP6HnUh+JiIhUiVokIiJSJSoke2FmJ5rZMjMrNLMba/i1HzKzT81sYZllOWb2ipl9FPxsGiw3M7sryPmhmR0RYq72Zva6mS0xs0VmdnUyZDOzDDObbWYfBLluDpZ3NLNZQa6JwaUHCC5PMDHINcvM8sLIVSZf1MzeM7PnkyzXajNbYGbvm9ncYFkyfM6amNlkM1safNYGJDqXmXUL/p323L40s2sSnatMvmuDz/5CMxsf/J+ouc+Zu+tW7kZsivoVQCcgDfgA6FGDrz8EOAJYWGbZX4Abg/s3ArcG938IvEjsqpIFwKwQc7UGjgjuNwaWAz0SnS3Yf6PgfiowK3i9ScDwYPl9wGXB/Z8B9wX3hwMTQ/59Xgc8ATwfPE6WXKuB3HLLkuFz9ghwUXA/DWiSDLnK5IsCG4GDkiEXscuQrwIalPl8nV+Tn7NQ/8Fr6w0YAEwt8/gm4KYazpDHfxeSZUDr4H5rYFlw/35gREXr1UDGZ4EfJFM2oCEwH+hPbBBWSvnfKbHr2QwI7qcE61lIedoBrwHHAs8HXywJzxW8xmq+W0gS+rsEsoIvRUumXOWyHA+8myy5iBWSdUBO8Ll5HjihJj9nOrRVsT2/mD2KgmWJ1NLdNwAEP1sEyxOSNWgO9yH213/CswWHj94HPgVeIdai/MLdiyt47W9zBc9vBZqFkQv4O/BLoDR43CxJcgE48LKZzTOz0cGyRP8uOwGbgH8GhwMfNLPMJMhV1nBgfHA/4bnc/WPgr8BaYAOxz808avBzpkJSMatgWbKe3lbjWc2sEfAUcI27f7mvVStYFko2dy9x98OJtQD6Ad338do1ksvMTgE+dfd5ZRcnOlcZg9z9COAk4HIzG7KPdWsqWwqxw7r3unsf4Gtih4wSnSv2YrF+hlOBJytbtYJloeQK+mWGAh2BNkAmsd/p3l6/2rOpkFSsCGhf5nE7YH2CsuzxiZm1Bgh+fhosr9GsZpZKrIg87u5PJ1M2AHf/AniD2HHpJma253LSZV/721zB89nELvVc3QYBp5rZamACscNbf0+CXAC4+/rg56fAv4kV4ET/LouAInefFTyeTKywJDrXHicB8939k+BxMuT6PrDK3Te5+27gaWAgNfg5UyGp2BygS3DWQxqxpuyUBGeaAowM7o8k1j+xZ/l5wVkiBcDWPU3t6mZmBowDlrj735Ilm5k1N7Mmwf0GxP5jLQFeB4btJdeevMOAaR4cMK5O7n6Tu7dz9zxin6Fp7v7TROcCMLNMM2u85z6x4/4LSfDv0t03AuvMrFuw6DhgcaJzlTGC/xzW2vP6ic61Figws4bB/9E9/2Y19zkLs1OqNt+InXWxnNix9v9Xw689ntixzt3E/noYRewY5mvAR8HPnGBdA8YEORcA+SHmGkysCfwh8H5w+2GiswG9gPeCXAuB3wTLOwGzgUJihyLSg+UZwePC4PlONfA7PZr/nLWV8FxBhg+C26I9n/FE/y6D1zocmBv8Pp8BmiZJrobA50B2mWUJzxW83s3A0uDz/xiQXpOfM41sFxGRKtGhLRERqRIVEhERqRIVEhERqRIVEhERqRIVEhERqRIVEpFKmNn04GeemZ1dzfv+VUWvJVKb6PRfkTiZ2dHA9e5+yn5sE3X3kn08v83dG1VHPpFEUYtEpBJmti24+2fgqOB6FNcGE0XeZmZzgmtOXBKsf7TFrtvyBLHBaJjZM8HkiIv2TJBoZn8GGgT7e7zsawUjom8Lri+xwMzOKrPvN+w/1+t4PBjNjJn92cwWB1n+WpP/RlK/pVS+iogEbqRMiyQoCFvdva+ZpQPvmtnLwbr9gEPdfVXw+EJ33xxM4TLHzJ5y9xvN7AqPTTZZ3unERnj3BnKDbd4KnusD9CQ2d9K7wCAzWwz8GDjE3X3PlDEiNUEtEpEDdzyx+ZTeJzadfjOgS/Dc7DJFBOAqM/sAmElswrwu7NtgYLzHZjX+BHgT6Ftm30XuXkpsmpo84EtgB/CgmZ0ObK/yuxOJkwqJyIEz4Ep3Pzy4dXT3PS2Sr79dKda38n1iFxPqTWxesIw49r03O8vcLyF28aJiYq2gp4DTgJf2652IVIEKiUj8viJ2ieE9pgKXBVPrY2Zdg5l0y8sGtrj7djM7hNgU93vs3rN9OW8BZwX9MM2JXX559t6CWewaMdnu/gJwDbHDYiI1Qn0kIvH7ECgODlE9DNxJ7LDS/KDDexOx1kB5LwGXmtmHxC65OrPMc2OBD81svsemmN/j38Quj/oBsRmXf+nuG4NCVJHGwLNmlkGsNXPtgb1Fkf2n039FRKRKdGhLRESqRIVERESqRIVERESqRIVERESqRIVERESqRIVERESqRIVERESqRIVERESq5P8DdRBFXdehfFcAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"custom_learner.sched.plot_lr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4.2.3 `resnet_learner`"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[False, False, True]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[layer[0].trainable for layer in resnet_learner.models.get_layer_groups()]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"resnet_learner.unfreeze()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[True, True, True]"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[layer[0].trainable for layer in resnet_learner.models.get_layer_groups()]"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "61f5573668f64e8d9e40eaa80d2798be",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.087478 0.05272 0.983444 \n",
"CPU times: user 39.5 s, sys: 15.5 s, total: 55.1 s\n",
"Wall time: 49.7 s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.05272]), 0.9834444443914625]"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time resnet_learner.fit(lrs, n_cycle=1, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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tarpcDoAAAAArkAhylUjyE+7jp3VruSzGjRtrdIuZOlfaw9KunRKXf1q/qoWUM7hlAAAAHCCv79/3tLbrrJw4UJt375dL774okuPc7mlS5eqTJkyatu2bbEds6ThlLlcEUHllXjqvP6xfK9yrNUXo9pp2kMtJEkPvved+ryxUtZah1MCAADAnWVnZxe4rU+fPi4pQ1lZWQVuW7p0qVavXl3kx3QnFKJcNSr76UJWjj7emKj+zcIVHV5J3RpV10s9G0qSks9cUPyh09p6OFXnLxb8gwwAAADPNnHiRLVs2VKNGzfWK6+8kvd+v3791KJFCzVq1EjTpk3Le9/f318vv/yyWrdurTVr1igyMlKvvPKKmjdvrpiYGO3cuVOSNGPGDI0cOVKSNHz4cI0ePVpt27ZVnTp19PHHH0uScnJy9OSTT6pRo0bq3bu3evbsmbftch07dtTvf/97dejQQa+//ro+//xztW7dWs2aNVOXLl2UnJys/fv36+2339aUKVPUtGlTrVixQsePH9eAAQPUsmVLtWzZUqtWrXLlX2WJwClzuX5aeluSRtwZmff80bg66tU4VG3Hf6P+b11qz+GB5fWPh1ooOrxScccEAAAo3b58UTq6pWj3WT1Gunt8oYZ+9dVX2rVrl9atWydrrfr06aPly5crLi5O06dPV+XKlXX+/Hm1bNlSAwYMUJUqVXTu3DlFR0frtddey9tP1apVtWnTJr311luaNGmS3n333Z8dKykpSStXrtTOnTvVp08f3XvvvZo/f77279+vLVu26NixY2rYsKEefvjhfLOePn1ay5YtkySdOnVKa9eulTFG7777riZMmKDJkyfrV7/6lfz9/fXcc89Jkh544AE988wzateunQ4ePKju3btrx44dN/o36lYoRLkahVVStYCyevHu21UvpOIV28IC/1eWXrknStOW79Xo2d/rP0/HqYwPk2wAAAClxVdffaWvvvpKzZo1kySlpaVp165diouL09SpU/Xpp59Kkg4dOqRdu3apSpUq8vb21oABA67Yzy9+8QtJUosWLTR//vx8j9WvXz95eXkpKipKycnJkqSVK1fqvvvuk5eXl6pXr65OnToVmHXgwIF5zxMTEzVw4EAlJSXp4sWLql27dr6fWbJkibZv3573+syZMzp79qwqVqyY73hPQCHKVS2gnL77fZcCt895rI3S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de/eXb6+vnrsscf0t7/9TRs3btSkSZP05JNPFvhdu3TposWLF2vBggXq06dPgZnPnTunNm3aKCEhQXFxcXrnnXcK8bcpHTlyRC+88IK++eYbxcfHa/369frss88UHx+vw4cPa+vWrdqyZYtGjBgh6dJM3Pfff6/Nmzfr7bffLtQxCsuVq8zdKekhSVuMMfG57/1eUk1Jsta+LeleSU8YY7IknZc0yFprXZipxAquWFZt61bVwoQjeqZrA3l7GacjAQAAlEgb15zUqZOZRba/oMq+anFH5WuOWbVqlcLCwnTs2DF17dpVt99+u+Li4goc37VrV3Xt2lWSNHPmTPXs2VM//PCDJk2apKCgIL3++uvy8/O74jMfffSRpk2bpqysLCUlJWn79u1q3LixJGnw4MF5fz7zzDOSpDVr1mj+/EsnYT300EP67W9/K0kaOHCg5s6dq06dOmnOnDl68sknlZaWptWrV+u+++7LO96FCxcKzD9o0CBNnTpVqampmjx5sv785z/nO65MmTLq3fvSgtEtWrTQ119/XfBf4mXWr1+vjh076qfLYYYMGaLly5drzJgx2rt3r0aNGqVevXqpW7dukqTGjRtryJAh6tevn/r161eoYxSWywqRtXalpGv+Vm+tfUPSG67K4G4GtaqhkbO+14ffHdDQOyKdjgMAAFAiXa+8uEJYWJgkKSQkRP3799e6desUFxenatWqKSkpSaGhoUpKSlJISMgVn0tPT9fMmTO1ePFidevWTQsWLNCsWbP04Ycf6tFHH80bt2/fPk2aNEnr169XUFCQhg8froyMjLztuSdV/ez55X56v0+fPvrd736nkydPauPGjbrrrrt07tw5BQYGKj4+Pt/PXq1Vq1baunWrypcvrwYNGhQ4ztfXN++43t7eysrKKtT+C5oDCQoKUkJCghYvXqw333xTH330kaZPn65FixZp+fLlWrhwocaOHatt27bJx6doqkyxrDKHwukVE6p29apq0uIflJmd43QcAAAA6NJpYWfPns17/tVXXyk6OlrSpfIxc+ZMSZdmgvr27XvFZydMmKCnnnpKvr6+On/+vIwx8vLyUnp6+hXjzpw5owoVKqhSpUpKTk7Wl19+ecX2uXPn5v15xx13SJLatm2rOXPmSJI+/PBDtWvXTtKl63patWqlp556Sr1795a3t7cCAgJUu3ZtzZs3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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_metrics(resnet_learner)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4.2.4 `pt_res_learner`"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "dcff30fd68cf48e2a0f98180960a23fa",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.554677 0.58673 0.891556 \n",
"CPU times: user 19.6 s, sys: 6.02 s, total: 25.6 s\n",
"Wall time: 20.4 s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.58673]), 0.8915555556085375]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# only training classifier head\n",
"%time pt_res_learner.fit(lrs, n_cycle=1, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.5546770245500905"
]
},
"execution_count": 199,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# min(pt_res_learner.sched.losses)\n",
"pt_res_learner.sched.losses[-1]"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.5867299038039313]"
]
},
"execution_count": 200,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pt_res_learner.sched.val_losses"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0QAAAGtCAYAAAA2zbRNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XlcVXXi//H3h0UBUUBkR0OUUhHUxCVT1FxTM81MzXJppnWyZaqpWawmZ8ZyGb/ZMk2LaTO5lZaZ9dOsTE3NLXA3d0UJFRVFXFg+vz80RgsUjcsB7uv5eNyH997zuee8L/Ho4dvPOZ9jrLUCAAAAAHfk4XQAAAAAAHAKhQgAAACA26IQAQAAAHBbFCIAAAAAbotCBAAAAMBtUYgAAAAAuC0KEQAAAAC3RSECAAAA4LYoRAAAAADclpfTAa5UrVq1bExMjNMxcIWOnjqlIF9fp2PABXJO5smvWoX7XwkAAKjE1qxZc9haG1KSsRXubzExMTFavXq10zFwhcYvW6Yn2rRxOgZcYOG8DHXuGeZ0DAAAgELGmD0lHcspcwAAAADcFoUIAAAAgNuiEAEAAABwWxQiAAAAAG6LQgQAAADAbVGIAAAAALgtChEAAAAAt0UhAgAAAOC2KEQAAAAA3BaFCAAAAIDbohABAAAAcFsUIgAAAABuy2WFyBjjY4xZaYxJNcZsNMb8tYgxVY0xM4wx240x3xljYlyVBwAAAAB+zpUzRGck3WStbSKpqaTuxpjWPxvzG0lHrbX1JU2Q9JIL8wAAAADARVxWiOw52edfep9/2J8Nu1XSlPPPP5TUyRhjXJXpQnsyTyrtaE5ZHAoAAABAOeXSa4iMMZ7GmBRJByV9Ya397mdDoiTtkyRrbZ6kLEnBrsz0k8Fvf6d/LvihLA4FAAAAoJxyaSGy1uZba5tKipbU0hjT+GdDipoN+vkskowx9xljVhtjVh86dKhUstWsVkVHc86Wyr4AAAAAVExlssqctfaYpEWSuv9sU5qk2pJkjPGSFCDpSBGff9Nam2StTQoJCSmVTIF+VXQkJ7dU9gUAAACgYnLlKnMhxpjA8899JXWWtOVnwz6RNPT889slfWWt/cUMkSvU9PPWMWaIAAAAALfm5cJ9R0iaYozx1LniNdNa+6kx5gVJq621n0h6R9J/jDHbdW5maKAL81wk0K+KjpykEAEAAJR3ubm5SktL0+nTp52OgnLKx8dH0dHR8vb2vuLPuqwQWWvXSWpWxPvPXvD8tKT+rspwKUF+VXTidJ5y8wvk7cn9aQEAAMqrtLQ0Va9eXTExMSqjBYlRgVhrlZmZqbS0NNWtW/eKP++2TaBmtXPt8RjXEQEAAJRrp0+fVnBwMGUIRTLGKDg4+KpnEN22EAX6VZEkriMCAACoAChDuJRf8/vhtoWoZrVzhYjriAAAAHA5/v7+TkeAi7htIQr0O3fK3FFOmQMAAADcltsWop9miLg5KwAAAErKWqunnnpKjRs3VkJCgmbMmCFJSk9PV3Jyspo2barGjRtryZIlys/P17BhwwrHTpgwweH0KIorl90u14L8Sr8Q5eYXyMMYeXpwjisAAIAr/HXuRm06cLxU99kosoaeuyW+RGNnz56tlJQUpaam6vDhw2rRooWSk5M1depUdevWTX/+85+Vn5+vnJwcpaSkaP/+/dqwYYMk6dixY6WaG6XDbQuRj7enfL09dST7ygvRlh+P64uNGWoYUUPxUTX0zdZD+m7XEc1J2S8PY5QUE6TXBzcvnIUCAABA5bB06VINGjRInp6eCgsLU/v27bVq1Sq1aNFC99xzj3Jzc9WnTx81bdpUsbGx2rlzp0aMGKGePXuqa9euTsdHEdy2EElSaI2qOnjiTInG5pzN0z8+26wVO49o+8HsX2yv6uWhwa2ukV9VT7377W49+N81mnpva2aLAAAASlFJZ3JcxVpb5PvJyclavHix5s2bp7vvvltPPfWUhgwZotTUVM2fP1+vvfaaZs6cqUmTJpVxYlyOWxeiiAAfHTh26rLjss/kafDb32ld2jF1uDZEfZtFqX9StNbsPqr0rNNqHRus68KrF5afuNDqevKDVL23fLeG33jlN4cCAABA+ZScnKx///vfGjp0qI4cOaLFixdr7Nix2rNnj6KionTvvffq5MmTWrt2rXr06KEqVaqoX79+qlevnoYNG+Z0fBTBrQtRZKCvVuzIvOi9A8dOKSLAp3At8w/XpOnZORt0Jq9Ab9zVXN3iwwvH3pwQUeR++10fpbmpBzTq003KzD6rJ7td57ovAQAAgDLTt29fLV++XE2aNJExRmPGjFF4eLimTJmisWPHytvbW/7+/nrvvfe0f/9+DR8+XAUFBZKk0aNHO5weRXHvQhTgq4wTZ5SXXyAvTw8t3JSh3763WvfcWFfXhvnrjqTamrfugAJ8vfXywGZqWbdmifZrjNErdzbTnz/aoFe/3q62cbW0Zs9R1fD11h1J0arq5enibwYAAIDSlJ197pIJY4zGjh2rsWPHXrR96NChGjp06C8+t3bt2jLJh6vn3oUo0Ff5BVYHT5xRZKCv3l22S5I06dtzf0YE+mpz+gndUC+4xGXoJzV8vPVC73h9uTlDA99cUfj+V5sz9M7QFvLg2iIAAADAcW57HyJJigz0kXTuNLntB7P17fZMPdIpTq8Pvl4+3h567avt+vH4aTUIr35V+w+qVkUjezXSoJZ1tPD3yXrulkb6eushjVuw9aIL8s7k5ZfK9wEAAABwZdx+hkiSDmSd1qfr0uXtaTTkhmtUy7+q1u/P0r8W7ZAkNYiocdXHGNSyjga1PPe8Xoi/fsjI1uuLdujfi3eqQXh1VavipZW7jyi2VjXFhfnroQ711aR24K/+bgAAAAAuz61niCICzs0QfbczU7PWpKlHQoRq+VeVJN3XLrZwXMOIq5sh+jljjP7ep7H+2jtev21bVzV8vHX8dK7uubGu6of6a82eoxrw5nJl5eSWyvEAAAAAXJpbzxBV9/FWh+tC9P53e+Xj7aEH2tcr3BZUrYreHpKk/7fxR4WcL0mlwcPDaGibmCK3rd17VLe9vkyLfjioW5tGldoxAQAAABTNrWeIJGnioGa6rVmU3hqSpIY/OzWuc6MwjevfpHAJbldrGh2oWv5V9MWmjDI5HgAAAODu3L4Q1fDx1j8HNFW7uBCno8jDw6hTgzB9s/WQzuYVOB0HAAAA5/n7+7v8GJ988olefPFFlx/nQosWLdKyZcvK9JjljdsXovKmS6MwnTiTp5W7jjgdBQAAAKUsP7/41YV79+6tZ555ptSPmZeXV+w2ChGFqNy5sX4t+Xh7aOFmTpsDAAAoj8aOHasWLVooMTFRzz33XOH7ffr0UfPmzRUfH68333yz8H1/f389++yzatWqlZYvX66YmBg999xzuv7665WQkKAtW7ZIkiZPnqyHH35YkjRs2DA98sgjatOmjWJjY/Xhhx9KkgoKCvTQQw8pPj5evXr1Uo8ePQq3XahDhw7605/+pPbt2+vll1/W3Llz1apVKzVr1kydO3dWRkaGdu/erTfeeEMTJkxQ06ZNtWTJEh06dEj9+vVTixYt1KJFC3377beu/FGWC269qEJ55FvFU23rh2jBxh/1bK9G3MAVAADgQp8/I/24vnT3GZ4g3VyyU9UWLFigbdu2aeXKlbLWqnfv3lq8eLGSk5M1adIk1axZU6dOnVKLFi3Ur18/BQcH6+TJk2rcuLFeeOGFwv3UqlVLa9eu1euvv65x48bp7bff/sWx0tPTtXTpUm3ZskW9e/fW7bffrtmzZ2v37t1av369Dh48qIYNG+qee+4pMuuxY8f0zTffSJKOHj2qFStWyBijt99+W2PGjNH48eP1wAMPyN/fX08++aQk6c4779Tjjz+utm3bau/everWrZs2b958pT/RCoVCVA7d2jRSCzdnaNmOTLWNq+V0HAAAAJy3YMECLViwQM2aNZMkZWdna9u2bUpOTtbEiRP10UcfSZL27dunbdu2KTg4WJ6enurXr99F+7ntttskSc2bN9fs2bOLPFafPn3k4eGhRo0aKSPj3NlDS5cuVf/+/eXh4aHw8HB17Nix2KwDBgwofJ6WlqYBAwYoPT1dZ8+eVd26dYv8zMKFC7Vp06bC18ePH9eJEydUvXrp3IamPKIQlUNdGoUpwNdbM1bvoxABAABcqIQzOa5irdUf//hH3X///Re9v2jRIi1cuFDLly+Xn5+fOnTooNOnT0uSfHx85OnpedH4qlXP3dbF09Oz2Gt8fhrz03Ev/LMkqlWrVvh8xIgR+v3vf6/evXtr0aJFev7554v8TEFBgZYvXy5fX98SH6ei4xqicsjH21NdGoVp2fbDV/RLDwAAANfq1q2bJk2apOzsbEnS/v37dfDgQWVlZSkoKEh+fn7asmWLVqxY4ZLjt23bVrNmzVJBQYEyMjK0aNGiEn0uKytLUVHn7nM5ZcqUwverV6+uEydOFL7u2rWrXn311cLXKSkppRO8HKMQlVONI2so8+RZHTxxxukoAAAAOK9r16668847dcMNNyghIUG33367Tpw4oe7duysvL0+JiYkaOXKkWrdu7ZLj9+vXT9HR0WrcuLHuv/9+tWrVSgEBAZf93PPPP6/+/furXbt2qlXrf2cg3XLLLfroo48KF1WYOHGiVq9ercTERDVq1EhvvPGGS75HeWIq2gxEUlKSXb16tdMxXG7V7iPq/8ZyTRqWpJsahDkd51cbv2yZnmjTxukYcIGF8zLUuWfF/x0FAJRfmzdvVsOGDZ2OUW5kZ2fL399fmZmZatmypb799luFh4c7HctxF/6eGGPWWGuTSvI5riEqpxqEn7twbdOB45WiEAEAAKB09OrVS8eOHdPZs2c1cuRIytCvRCEqp6r7eCsm2E8bDxx3OgoAAADKkZJeN4SS4RqicqxZnSCt3HVEBQUV67RGAAAAoKKgEJVj7eJqKfPkWWaJAAAAABehEJVj7eJCJEmLtx1yOAkAAABQOVGIyrGQ6lXVJDpAs9amKS+/wOk4AAAAQKVDISrnHuxQXzsPndSclANORwEAAHBbxhjdfffdha/z8vIUEhKiXr16SZI++eQTvfjii1e0T39//1LNiKtDISrnusWHKS7UXzNX73M6CgAAgNuqVq2aNmzYoFOnTkmSvvjiC0VFRRVu7927t5555hmn4uFXoBCVc8YYdY0P0+o9R3X8dK7TcQAAANzWzTffrHnz5kmSpk2bpkGDBhVumzx5sh5++GFJ0rBhw/TII4+oTZs2io2N1YcffnjJ/Vpr9dRTT6lx48ZKSEjQjBkzJEnp6elKTk5W06ZN1bhxYy1ZskT5+fkaNmxY4dgJEya46Nu6DwpRBdDxulDlF1gt+eGw01EAAADc1sCBAzV9+nSdPn1a69atU6tWrYodm56erqVLl+rTTz+97MzR7NmzlZKSotTUVC1cuFBPPfWU0tPTNXXqVHXr1q1wW9OmTZWSkqL9+/drw4YNWr9+vYYPH17aX9PtcGPWCqBZnSDV8PHS0u2H1DMxwuk4AAAAzpoxQ0pLK739RUdLAwZcdlhiYqJ2796tadOmqUePHpcc26dPH3l4eKhRo0bKyMi45NilS5dq0KBB8vT0VFhYmNq3b69Vq1apRYsWuueee5Sbm6s+ffqoadOmio2N1c6dOzVixAj17NlTXbt2vaKvil+iEFUAnh5GTWoHKmVfltNRAAAAnFeC8uIqvXv31pNPPqlFixYpMzOz2HFVq1YtfG6tveQ+i9uenJysxYsXa968ebr77rv11FNPaciQIUpNTdX8+fP12muvaebMmZo0adLVfRlI4pS5CqNZ7UBt/fG4cs7mOR0FAADAbd1zzz169tlnlZCQUGr7TE5O1owZM5Sfn69Dhw5p8eLFatmypfbs2aPQ0FDde++9+s1vfqO1a9fq8OHDKigoUL9+/TRq1CitXbu21HK4K2aIKogmtQNVYKX1aVlqFRvsdBwAAAC3FB0drUcffbRU99m3b18tX75cTZo0kTFGY8aMUXh4uKZMmaKxY8fK29tb/v7+eu+997R//34NHz5cBQXn7lE5evToUs3ijszlpvDKm6SkJLt69WqnY5S5zOwzav63hXrm5gZ6oH09p+NcsfHLlumJNm2cjgEXWDgvQ517hjkdAwBQiW3evFkNGzZ0OgbKuQt/T4wxa6y1SSX5HKfMVRDB/lVVP9Rfy3YUf64qAAAAgCtDIapA2tavpZW7MnU6N9/pKAAAAEClQCGqQNrWr6XTuQVau+eo01EAAACASoFCVIG0rhcsLw+jpdu5QSsAAABQGihEFYh/VS81qxNIIQIAAABKCYWogmlbP0Tr92fp6MmzTkcBAAAAKjwKUQXTNi5Y1krf7mCWCAAAoKzExMQoISFBTZs2VVLS/1ZzPnLkiLp06aK4uDh16dJFR4+eu9Z71qxZio+PV7t27ZSZeW6V4B07dmjgwIFXdezDh8vm736TJ0+WMUZffvll4XsfffSRjDH68MMPJUm//e1vtWnTpiva58MPP1zqWUsLhaiCaRIdqEA/b3215aDTUQAAANzK119/rZSUFF14T8wXX3xRnTp10rZt29SpUye9+OKLkqTx48drxYoVGjJkiKZOnSpJ+stf/qJRo0Y5kv1KJCQkaNq0aYWvp0+friZNmhS+fvvtt9WoUSMnormEywqRMaa2MeZrY8xmY8xGY8wvbulrjOlgjMkyxqScfzzrqjyVhZenhzpeF6qvtxxUfkHFuqkuAABAZTNnzhwNHTpUkjR06FB9/PHHkiQPDw+dOXNGOTk58vb21pIlSxQREaG4uLhi9/Xggw8qKSlJ8fHxeu655y7aNnbsWLVs2VItW7bU9u3bJUl79uxRp06dlJiYqE6dOmnv3r3KyspSTEyMCgoKJEk5OTmqXbu2cnNztWPHDnXv3l3NmzdXu3bttGXLliJztGvXTitXrlRubq6ys7O1fft2NW3atHB7hw4dCkuhv7+//vznP6tJkyZq3bq1MjIySvyzmzZtmhISEtS4cWM9/fTTkqT8/HwNGzZMjRs3VkJCgiZMmCBJmjhxoho1aqTExMSrmmW7FFfOEOVJesJa21BSa0m/M8YUVSWXWGubnn+84MI8lUanhqE6mpOrtXtZfhsAAKAsGGPUtWtXNW/eXG+++Wbh+xkZGYqIiJAkRURE6ODBc2fxPPfcc+rWrZsWLlyoQYMG6W9/+5tGjhx5yWP8/e9/1+rVq7Vu3Tp98803WrduXeG2GjVqaOXKlXr44Yf12GOPSZIefvhhDRkyROvWrdPgwYP1yCOPKCAgQE2aNNE333wjSZo7d666desmb29v3XfffXrllVe0Zs0ajRs3Tg899FCx37Vz586aP3++5syZo969exeb+eTJk2rdurVSU1OVnJyst956qwQ/TenAgQN6+umn9dVXXyklJUWrVq3Sxx9/rJSUFO3fv18bNmzQ+vXrNXz4cEnnZuK+//57rVu3Tm+88UaJjlFSXqW6twtYa9MlpZ9/fsIYs1lSlKSSn3CIIiVfGyIvD6OFmzPUIqam03EAAADK1JrlR3T0SG6p7S+oprea33Dpv1N9++23ioyM1MGDB9WlSxc1aNBAycnJxY7v0qWLunTpIkmaMmWKevTooa1bt2rcuHEKCgrSyy+/LD8/v4s+M3PmTL355pvKy8tTenq6Nm3apMTEREnSoEGDCv98/PHHJUnLly/X7NmzJUl33323/vCHP0iSBgwYoBkzZqhjx46aPn26HnroIWVnZ2vZsmXq379/4fHOnDlTbP6BAwdq4sSJysrK0vjx4/WPf/yjyHFVqlRRr169JEnNmzfXF198UfwP8QKrVq1Shw4dFBISIkkaPHiwFi9erJEjR2rnzp0aMWKEevbsqa5du0qSEhMTNXjwYPXp00d9+vQp0TFKymWF6ELGmBhJzSR9V8TmG4wxqZIOSHrSWruxiM/fJ+k+SapTp47rglYQNXy81Sq2pr7cfFB/vLmh03EAAADK1OXKiytERkZKkkJDQ9W3b1+tXLlSycnJCgsLU3p6uiIiIpSenq7Q0NCLPpeTk6MpU6Zo/vz56tq1q+bMmaOpU6fq/fff17333ls4bteuXRo3bpxWrVqloKAgDRs2TKdPny7cbowp8vmFfnq/d+/e+uMf/6gjR45ozZo1uummm3Ty5EkFBgYqJSWlRN+3ZcuW2rBhg3x9fXXttdcWO87b27vwuJ6ensrLyyvR/q0t+tKPoKAgpaamav78+Xrttdc0c+ZMTZo0SfPmzdPixYv1ySefaNSoUdq4caO8vEqnyrh8UQVjjL+kWZIes9Ye/9nmtZKusdY2kfSKpI+L2oe19k1rbZK1NumnFunuOjUI0/aD2dqTedLpKAAAAJXayZMndeLEicLnCxYsUOPGjSWdKx9TpkyRdG4m6NZbb73os2PGjNGjjz4qb29vnTp1SsYYeXh4KCcn56Jxx48fV7Vq1RQQEKCMjAx9/vnnF22fMWNG4Z833HCDJKlNmzaaPn26JOn9999X27ZtJZ27rqdly5Z69NFH1atXL3l6eqpGjRqqW7euPvjgA0nnCklqauolv/fo0aOLnRn6tVq1aqVvvvlGhw8fVn5+vqZNm6b27dvr8OHDKigoUL9+/TRq1CitXbtWBQUF2rdvnzp27KgxY8bo2LFjys7OLrUsLp0hMsZ461wZet9aO/vn2y8sSNbaz4wxrxtjallrWVP6Mm6sX0uS9P3eY7omuJrDaQAAACqvjIwM9e3bV5KUl5enO++8U927d5ckPfPMM7rjjjv0zjvvqE6dOoWFQzp3nczq1av1/PPPS5KeeOIJtW7dWoGBgYWLL/ykSZMmatasmeLj4xUbG6sbb7zxou1nzpxRq1atVFBQULgC3MSJE3XPPfdo7NixCgkJ0bvvvls4fsCAAerfv78WLVpU+N7777+vBx98UH/729+Um5urgQMHXrR63M/dfPPNV/7DKsbkyZMv+s4rVqzQ6NGj1bFjR1lr1aNHD916661KTU3V8OHDCxeFGD16tPLz83XXXXcpKytL1lo9/vjjCgwMLLVsprjpql+943NzZ1MkHbHWPlbMmHBJGdZaa4xpKelDnZsxKjZUUlKSvXCpQ3eVl1+g+Ofm6+7W1+gvvcr/sofjly3TE23aOB0DLrBwXoY69wxzOgYAoBLbvHmzGjbkMgFc2oW/J8aYNdbapMt8RJJrZ4hulHS3pPXGmJ9OVvyTpDqSZK19Q9Ltkh40xuRJOiVp4KXKEP7Hy9NDDSNqaMOBLKejAAAAABWWK1eZWyqp6Cu+/jfmVUmvuipDZdc4qobmfH9ABQVWHh6X/FEDAAAAKILLF1WA6zSODNCJM3nacyTn8oMBAAAA/AKFqAJrVidIkrR69xGHkwAAAAAVE4WoAosL9Vegn7dWUYgAAACAq0IhqsA8PIySrqmpVbuPOh0FAAAAqJAoRBVcq7o1tevwSR04dsrpKAAAAJVWTEyMEhIS1LRpUyUl/W815yNHjqhLly6Ki4tTly5ddPTouX+onjVrluLj49WuXTtlZmZKknbs2KGBAwde8bE/+OADNWzYUB07drzo/d27d8sYo5EjRxa+d/jwYXl7e+vhhx++mq95kcmTJ5fKfso7ClEF16XRufu/fLrugMNJAAAAKrevv/5aKSkpuvCemC+++KI6deqkbdu2qVOnTnrxxRclSePHj9eKFSs0ZMgQTZ06VZL0l7/8RaNGjbri477zzjt6/fXX9fXXX/9iW2xsrD799NPC1x988IHi4+Ov+BjujEJUwcXUqqYmtQM1J4VCBAAAUNbmzJmjoUOHSpKGDh2qjz/+WJLk4eGhM2fOKCcnR97e3lqyZIkiIiIUFxdX7L6mTZumhIQENW7cWE8//bQk6YUXXtDSpUv1wAMP6KmnnvrFZ3x9fdWwYcPCkjZjxgzdcccdhdvnzp2rVq1aqVmzZurcubMyMjIkSY888oheeOEFSdL8+fOVnJysgoKCEn3nonLm5+dr2LBhaty4sRISEjRhwgRJ0sSJE9WoUSMlJiZe1exYWXDljVlRRm5JjNDf5m3WgWOnFBno63QcAACASscYo65du8oYo/vvv1/33XefJCkjI0MRERGSpIiICB08eFCS9Nxzz6lbt26KjIzUf//7X91xxx2aPn16sfs/cOCAnn76aa1Zs0ZBQUHq2rWrPv74Yz377LP66quvNG7cuItO1bvQwIEDNX36dIWHh8vT01ORkZE6cODcP5a3bdtWK1askDFGb7/9tsaMGaPx48frxRdfVIsWLdSuXTs98sgj+uyzz+Thcfm5kuJy1q5dW/v379eGDRskSceOHZN0bgZt165dqlq1auF75Q2FqBJoU6+WJOm7XZnq2yza4TQAAACuNWPDBqUdP15q+4uuUUMDGje+5Jhvv/1WkZGROnjwoLp06aIGDRooOTm52PFdunRRly5dJElTpkxRjx49tHXrVo0bN05BQUF6+eWX5efnVzh+1apV6tChg0JCQiRJgwcP1uLFi9WnT5/L5u/evbtGjhypsLAwDRgw4KJtaWlpGjBggNLT03X27FnVrVtXkuTn56e33npLycnJmjBhgurVq3fZ41wq58iRI7Vz506NGDFCPXv2VNeuXSVJiYmJGjx4sPr06VOi7+IEClEl0CC8ugJ8vbVixxEKEQAAqPQuV15cITIyUpIUGhqqvn37auXKlUpOTlZYWJjS09MVERGh9PR0hYaGXvS5nJwcTZkyRfPnz1fXrl01Z84cTZ06Ve+//77uvffewnHW2qvOVqVKFTVv3lzjx4/Xxo0bNXfu3MJtI0aM0O9//3v17t1bixYt0vPPP1+4bf369QoODi6cTSqJ4nIGBQUpNTVV8+fP12uvvaaZM2dq0qRJmjdvnhYvXqxPPvlEo0aN0saNG+XlVb4qCNcQVQIeHkYt69bUil2ZTkcBAACodE6ePKkTJ04UPl+wYIEany9lvXv31pQpUySdmwm69dZbL/rsmDFj9Oijj8rb21unTp2SMUYeHh7Kycm5aFyrVq30zTff6PDhw8rPz9e0adPUvn37Emd84okn9NJLLyk4OPii97O5zwwGAAAgAElEQVSyshQVFVWY7yd79uzR+PHj9f333+vzzz/Xd999V6LjFJfz8OHDKigoUL9+/TRq1CitXbtWBQUF2rdvnzp27KgxY8bo2LFjys7OLvF3Kivlq57hqrWODdYXmzKUnnVKEQFcRwQAAFBaMjIy1LdvX0lSXl6e7rzzTnXv3l2S9Mwzz+iOO+7QO++8ozp16uiDDz4o/NyBAwe0evXqwlmZJ554Qq1bt1ZgYGDh4gs/iYiI0OjRo9WxY0dZa9WjR49flKtLiY+PL3J1ueeff179+/dXVFSUWrdurV27dslaq9/85jcaN26cIiMj9c4772jYsGFatWqVfHx8Lvr85MmTL8q6YsWKInOmpqZq+PDhhQszjB49Wvn5+brrrruUlZUla60ef/xxBQYGlvg7lRXza6bnnJCUlGQvXOoQ52w8kKWeE5fq/wY0VZ9mUU7H+YXxy5bpiTZtnI4BF1g4L0Ode4Y5HQMAUIlt3rxZDRs2dDoGyrkLf0+MMWustUWvQvEznDJXSTQMr3HuOqKdnDYHAAAAlBSFqJLw8DBqEVOTQgQAAABcAQpRJdI6tqZ2Z+YoPeuU01EAAACACoFCVIn8dD+i5TuYJQIAAJVLRbvuHWXr1/x+UIgqkQbh1RXk561lFCIAAFCJ+Pj4KDMzk1KEIllrlZmZ+YsV8kqKZbcrEQ8PoxvqBWvR1kPKzS+Qtyd9FwAAVHzR0dFKS0vToUOHnI6CcsrHx0fR0dFX9VkKUSVze/Nofbb+Ry3clKGbEyKcjgMAAPCreXt7q27duk7HQCXFFEIl0/7aUEUF+mr6qn1ORwEAAADKPQpRJePpYdQ1Pkzf7crUmbx8p+MAAAAA5RqFqBJqHRus07kFSt2X5XQUAAAAoFyjEFVCrerWlDHiJq0AAADAZVCIKqFAvypqGF6DQgQAAABcBoWokrqhXrDW7DnKdUQAAADAJVCIKqnWscE6k1eglL3HnI4CAAAAlFsUokqq5fnriJZz2hwAAABQLApRJRXg6634yBpaueuI01EAAACAcotCVIm1jAnW2r1HdTavwOkoAAAAQLlEIarEWtatqdO5BVq/n/sRAQAAAEWhEFViLWKCJInT5gAAAIBiUIgqsWD/qqof6q+Vu1hYAQAAACgKhaiSa1m3plbvPqr8Aut0FAAAAKDcoRBVcq3q1tSJM3nanH7c6SgAAABAuUMhquRaxNSUJK3gfkQAAADAL1CIKrnIQF/VC6mmr7cedDoKAAAAUO5QiNxAt/hwrdh5RMdyzjodBQAAAChXKERuoGt8uPILrL7czCwRAAAAcCEKkRtIjApQLf8qWrztkNNRAAAAgHKFQuQGPDyM2tavpaXbDquA5bcBAACAQhQiN9E2LkSZJ89q848svw0AAAD8hELkJtrF1ZIkLdl22OEkAAAAQPlBIXITYTV8dF1YdS2lEAEAAACFKERupG1cLa3cfUSnzuY7HQUAAAAoFyhEbqRdXC2dzSvQyt1HnI4CAAAAlAsUIjfSqm6wqnh6aCnLbwMAAACSKERuxbeKp5JiglhYAQAAADjPZYXIGFPbGPO1MWazMWajMebRIsYYY8xEY8x2Y8w6Y8z1rsqDc9rFhWjLjyd08Phpp6MAAAAAjnPlDFGepCestQ0ltZb0O2NMo5+NuVlS3PnHfZL+5cI80P+W3166nVkiAAAAwGWFyFqbbq1de/75CUmbJUX9bNitkt6z56yQFGiMiXBVJkiNImqoZrUqnDYHAAAAqIyuITLGxEhqJum7n22KkrTvgtdp+mVpQiny8DBqW7+Wlmw7LGut03EAAAAAR7m8EBlj/CXNkvSYtfb4zzcX8ZFf/C3dGHOfMWa1MWb1oUOskPZrtYurpcPZZ7Qp/ef/OQAAAAD34tJCZIzx1rky9L61dnYRQ9Ik1b7gdbSkAz8fZK1901qbZK1NCgkJcU1YN9LhulAZI32xKcPpKAAAAICjXLnKnJH0jqTN1tp/FjPsE0lDzq8211pSlrU23VWZcE5I9apqXidICzZSiAAAAODeXDlDdKOkuyXdZIxJOf/oYYx5wBjzwPkxn0naKWm7pLckPeTCPLhA1/gwbUo/rj2ZJ52OAgAAADjGy1U7ttYuVdHXCF04xkr6nasyoHi9EiM1+vMt+uj7/Xqs87VOxwEAAAAcUSarzKH8iQz01Q2xwfro+/2sNgcAAAC3RSFyY7ddH609mTlau/eo01EAAAAAR1CI3Fj3xuHy9fbUrLX7nY4CAAAAOIJC5Mb8q3qpW3yYPk09oDN5+U7HAQAAAMochcjN3XZ9tI6fztNXmw86HQUAAAAocxQiN3dj/VoKrV6V0+YAAADglihEbs7Tw6hvsygt2npQR06edToOAAAAUKYoRFDf66OUV2A1N/WA01EAAACAMkUhghqE11CjiBr6cE2a01EAAACAMkUhgiRpQIvaWr8/S6n7jjkdBQAAACgzFCJIkm67PkrVqnjqveV7nI4CAAAAlBkKESRJ1X281ff6KM1dd4DFFQAAAOA2KEQodHfrGJ3NK9DM1fucjgIAAACUCQoRCl0XXl2t6tbUf5bvUX6BdToOAAAA4HIUIlxk+I0x2n/slL7YlOF0FAAAAMDlKES4SOeGYYoK9NXkZbucjgIAAAC4HIUIF/Hy9NCQG67Rip1HtDn9uNNxAAAAAJeiEOEXBrSoLR9vD03+drfTUQAAAACXohDhFwL9qui266P1ccp+luAGAABApUYhQpGGtYnRmbwCTVu51+koAAAAgMtQiFCka8Oqq239Wvrvij3KzS9wOg4AAADgEhQiFGtYmxilZ53WZ+vTnY4CAAAAuASFCMW6qUGoGkbU0D8+26wTp3OdjgMAAACUOgoRiuXhYTT6tgRlHD+j/6zY43QcAAAAoNRRiHBJTWsHqkVMkGav3S9rrdNxAAAAgFJFIcJl3XZ9tLYfzNb6/VlORwEAAABKFYUIl9UjIUJVvDw0e+1+p6MAAAAApYpChMsK8PVWl4Zh+iT1AEtwAwAAoFKhEKFE+jWP0pGTZ/U+iysAAACgErmqQmSMqVbaQVC+dbwuVB2vC9E/Pt+iPZknnY4DAAAAlIpLFiJjTJQxJskYU+X861BjzD8kbSuTdCg3jDF6qV+ijKRXv9rudBwAAACgVBRbiIwxj0lKkfSKpBXGmKGSNkvyldS8bOKhPAmt4aM7W9XR7O/367udmU7HAQAAAH61S80Q3SfpOmvtDZL6SHpLUk9r7ePW2vQySYdy55Gb4hQT7KffTlmtg8dPOx0HAAAA+FUuVYhOW2uPSJK1dq+kH6y1K8omFsqroGpV9PbQFjqVm6//+5IzJwEAAFCxeV1iW7QxZuIFr0MvfG2tfcR1sVCe1a1VTYNb1dF/VuzRHUm11bR2oNORAAAAgKtyqUL01M9er7nguXVBFlQgT3S7Tgs2ZeiJmSma90g7+Xh7Oh0JAAAAuGLFFiJr7ZTithljxrkmDiqKGj7eeqlfooZMWqnxC7bqzz0bOR0JAAAAuGJXe2PWO0o1BSqk5GtDNLhVHb29dJdW7jridBwAAADgil1tITKlmgIV1p96NFR0kK8en5Giw9lnnI4DAAAAXJFL3YeoZjGPYFGIcF61ql567c7rdTj7jJ6Ztc7pOAAAAMAVudSiCmt0bvGEosrPWdfEQUWUGB2ohzrU14SFP2jHoWzVC/F3OhIAAABQIsXOEFlr61prY8//+fNHbFmGRPl3Z6s6quLpoUlLdzkdBQAAACixq72GCLhISPWq6p8UrZmr92lP5kmn4wAAAAAlQiFCqXm0U5y8PDw0bsEPTkcBAAAASoRChFITWsNHv21XV3NTD2h9WpbTcQAAAIDLKnEhMsY0vOB5a9fEQUV3X3Ksgvy89dL/2+J0FAAAAOCyrmSGaJwxZqkx5g+S3nNVIFRs1X28NeKmOC3dflhLth1yOg4AAABwSZe6D1GMMabGT6+ttT0lzZQ0StIfyyAbKqjBresoKtBXE7/c5nQUAAAA4JIuNUM0Sxfcg8gY84ikAZKaSvqdi3OhAqvq5al729XVqt1H9e32w07HAQAAAIp1qULkba3NkiRjzD8k3Sypi7V2s6SAy+3YGDPJGHPQGLOhmO0djDFZxpiU849nr+YLoHwa0KKOYoL99Oj07/Vj1mmn4wAAAABFulQh2mGMedcY84Wk+yUNt9bmXLi4wmVMltT9MmOWWGubnn+8UML9ogLwreKpt4e2UNapXL3xzQ6n4wAAAABF8rrEtgGS7pB0VtJOSQuNMQclNZA09HI7ttYuNsbElEJGVFD1Q/11S2KkPli9T4M6+TsdBwAAAPiFYguRtfaspP/+9NoYkyQpQdI2a+2xUjr+DcaYVEkHJD1prd1YSvtFOXFP27qa/f1+fbczU2rvdBoAAADgYiVedttae9pau6oUy9BaSddYa5tIekXSx8UNNMbcZ4xZbYxZfegQSzlXJI2jAnRr00it2JWpvZk5TscBAAAALnIl9yEqVdba49ba7PPPP5PkbYypVczYN621SdbapJCQkDLNiV/v6e4N5OVh9OiM75WXX+B0HAAAAKCQY4XIGBNujDHnn7c8nyXTqTxwnchAX3WPD9f3e49p9vf7nY4DAAAAFLrUogqSJGNMPUlp1tozxpgOkhIlvXe5U+eMMdMkdZBUyxiTJuk5Sd6SZK19Q9Ltkh40xuRJOiVpoLXW/orvgnIsPipAmRkFennhNt2SGCnfKp5ORwIAAABKNEM0S1K+Maa+pHck1ZU09XIfstYOstZGWGu9rbXR1tp3rLVvnC9Dsta+aq2Nt9Y2sda2ttYu+1XfBOWakfTHmxtq/7FTGjVvk9NxAAAAAEklK0QF1to8SX0l/Z+19nFJEa6NhcrohnrBur99rKZ+t1fvf7fH6TgAAABAiQpRrjFmkM7de+jT8+95uy4SKrOnul6n9teG6K9zN+lYzlmn4wAAAMDNlaQQDZd0g6S/W2t3GWPq6oL7EwFXwsvTQ3/ofp3O5hXoYxZYAAAAgMMuW4istZustY9Ya6cZY4IkVbfWvlgG2VBJxUcGKCEqQO9/t1f5BayjAQAAAOdcthAZYxYZY2oYY2pKSpX0rjHmn66PhsrsvuRYbTuYrRmr9jkdBQAAAG6sJKfMBVhrj0u6TdK71trmkjq7NhYqu16JEWoZU1Mvfr5Z+47kOB0HAAAAbqokhcjLGBMh6Q79b1EF4Fcxxmhs/0QVWOmR6d8rN7/A6UgAAABwQyUpRC9Imi9ph7V2lTEmVtI218aCO7gmuJpG35ag7/ce0/gFPzgdBwAAAG7I63IDrLUfSPrggtc7JfVzZSi4j1uaRGrZjsN645sdalMvWMnXhjgdCQAAAG6kJIsqRBtjPjLGHDTGZBhjZhljossiHNzDs73iFRtSTX+du5FV5wAAAFCmSnLK3LuSPpEUKSlK0tzz7wGlwreKp57qep12HDqpuakHnI4DAAAAN1KSQhRirX3XWpt3/jFZEuc1oVR1iw9Xg/DqevnLbcpjgQUAAACUkZIUosPGmLuMMZ7nH3dJynR1MLgXDw+jx7tcq12HT2rm6jSn4wAAAMBNlKQQ3aNzS27/KCld0u2ShrsyFNxT10Zhah1bU3+bt0k7D2U7HQcAAABu4LKFyFq711rb21obYq0Ntdb20bmbtAKlyhijCQOaqqqXhx6e+r3O5OU7HQkAAACVXElmiIry+1JNAZwXEeCrcf2baFP6cY3+bIvTcQAAAFDJXW0hMqWaArhAp4ZhuufGupq8bLe+3nrQ6TgAAACoxK62EHGzGLjU0zdfp7hQf/159nrtO5LjdBwAAABUUsUWImPMCWPM8SIeJ3TunkSAy1T18tSY2xN1NCdXnf/5jeatS3c6EgAAACqhYguRtba6tbZGEY/q1lqvsgwJ99SsTpC+erK9EqIC9Lupa/Xm4h1ORwIAAEAlc7WnzAFlIiLAV//9bSv1TIjQPz7bohU7uQUWAAAASg+FCOWej7enxt/RRFGBvnpuzkaW4wYAAECpoRChQvDx9tQLt8Zra8YJvfT5VqfjAAAAoJKgEKHC6NQwTENvuEaTvt2lCV/8IGtZ7BAAAAC/DosjoEJ59pZ45ZzN18tfbpMx0mOdr3U6EgAAACowChEqFE8Po5f6JarASi9/uU2tY4PVOjbY6VgAAACooDhlDhWOh4fRqD7xuqamn578IFXZZ/KcjgQAAIAKikKECsmvipfG39FEB46d0tMfrlN+AdcTAQAA4MpRiFBhNb+mpv54c0PNW5+upz5IpRQBAADginENESq0e5NjdSYvX+MW/KCME6f1Ur9ERQf5OR0LAAAAFQQzRKjwHr4pTqNvS1Dqviz1emWpXv1qm07ncvNWAAAAXB6FCJXCoJZ1NHdEWzUMr6FxC37QX+ducjoSAAAAKgAKESqNurWqadp9rXV/cqymrdyrJ2ayAh0AAAAujWuIUOk80fU6yUhvL9mlrRnH9e6wlgqpXtXpWAAAACiHmCFCpVPFy0N/vLmh3hrSXNsPZuv2N5ZpT+ZJp2MBAACgHKIQodK6qUGYpt7bWlmnctXntW/16boDTkcCAABAOUMhQqV2fZ0gzX6wja4JrqYR077X6M8368vNGU7HAgAAQDlBIUKlFxvir+n3tVZidKD+/c1O3f+fNUrZd8zpWAAAACgHKERwCz7enpp+b2t98Xiywmr46P7/rNa+IzlOxwIAAIDDKERwG75VPBUXVl2ThrXQqbP56vevZcwUAQAAuDkKEdzOdeHV9cEDbeTj7am73v5O7yzdpYMnTjsdCwAAAA6gEMEtXRdeXTPvv0G1a/pp1Keb1O6lr/XVFhZbAAAAcDcUIrit8AAfff5oO335RHvVrVVNT89ar2M5Z52OBQAAgDJEIYLbqxfir3H9m+jIybMa9elmp+MAAACgDFGIAEmNowL0YPt6mrU2TXNS9jsdBwAAAGWEQgScN6JTfbWMqaknP0jVH2ev04nTuU5HAgAAgItRiIDzqnp56q0hSbq9eW3NXJ2m3q9+q/ELtupMXr7T0QAAAOAiFCLgAgF+3hp9W4LeHdZCQX7eeuWr7brr7e+0/9gpp6MBAADABShEQBGSrw3R7Idu1MRBzbTpwHHd8spSbdif5XQsAAAAlDKXFSJjzCRjzEFjzIZithtjzERjzHZjzDpjzPWuygJcrd5NIjV3RFv5eHnolleXqsfLS/TbKav1/zakOx0NAAAApcCVM0STJXW/xPabJcWdf9wn6V8uzAJctdgQf815uK0e7RSn8AAfbfnxuB7471q9+tU2p6MBAADgV/Jy1Y6ttYuNMTGXGHKrpPestVbSCmNMoDEmwlrLP72j3AmpXlWPdb5WknQ2r0BPz1qncQt+kDFGv+tY3+F0AAAAuFouK0QlECVp3wWv086/94tCZIy5T+dmkVSnTp0yCQcUp4qXh8b1byJrrcbO36oDx07ppgahahtXS1W9PJ2OBwAAgCvgZCEyRbxnixporX1T0puSlJSUVOQYoCx5ehiN699Ewf5V9c7SXXr/u72q5V9VsSHVlBAVoGFtYlS7pp/TMQEAAHAZThaiNEm1L3gdLemAQ1mAK+bl6aGRvRrp3nax2pSepdlr9ys967T+s3yP/rtij/7Sq5Fa162pa4KrqYoXCzoCAACUR04Wok8kPWyMmS6plaQsrh9CRRQe4KPwAB/d1CBMkpSedUojpn6vkR+fW2DR19tT9UP9te9ojhKiAvRSv0RFBvo6GRkAAADnuawQGWOmSeogqZYxJk3Sc5K8Jcla+4akzyT1kLRdUo6k4a7KApSliABfzbj/Bm08kKWdh07q+71HtedIjuqFVNOCTRnq/n+LdfcN16hvs2jVD/V3Oi4AAIBbc+Uqc4Mus91K+p2rjg84ydPDKDE6UInRgerTLKrw/d2HT2rknA1645udeu3rHXq0U5we6xwnY4q6pA4AAACuxoUNQBmKqVVN//lNK333p0667foovfzlNvWYuFQrdx1xOhoAAIBbohABDqjlX1Xj+zfRhAFNdPxUru7493KN/HiDTpzOdToaAACAW3FyUQXArRlj1LdZtLo2Ctf4BT/o3WW7NCdlv1rE1NTAlnXUKramavh4Ox0TAACgUqMQAQ6rVtVLz97SSLc0idC0lXv11ZZD+nLLagVXq6J/3dVcLevWdDoiAABApUUhAsqJZnWC1KxOkE7n5mv17qN6ds4GDX57hUbcFKfr6wRp5a5MxdSqpo7XhSqoWhWn4wIAAFQKFCKgnPHx9lTbuFr66KEb9cQHqfrnFz/8YkyXRmF6qEM9NasT5EBCAACAyoNCBJRTAX7eentokvYdyVHa0VOKC/PX7sMn9fXWg/rvir36YlOGbm0aqW7x4eoeHy4PD5buBgAAuFIUIqCcq13TT7Vr+kk6tzpdUkxNPdihvv61aLveWrxLc1IOqEVMkJ7sep1axQY7nBYAADhqxgxpwACnU1QoLLsNVED+Vb30VLcG2vhCN43pl6hdh09qwJsr9Lv312rNnqM6k5evvPwCp2MCAICylpbmdIIKhxkioALz9vTQHS1qq3fTSL2+aIcmLd2leevTJUm1/KsoISpAGcfPKNDPWy3r1tRNDUKVEBUgYzi9DgAAQKIQAZWCj7enft/lWt2XHKu5qQeUnnVaP/x4QmnHchRao6oys8/q5S+36f8WbtPNjcM1+rYEBfqxUh0AAACFCKhE/Kt6aVDLOkVuy8w+o+mr9mnCFz9oxc5MBflV0cmzeWp/bYj+1KMhBQkAALglChHgJoL9q+p3HesrOS5Eby7ZqYICK08Po4++369FWw/p0c5xuiOptpZuPywfL0+FB/govIaPfKt4Oh0dAADAZShEgJtJiA7QK4OaFb5el1ZXz3+yUX/+aINe+nyLjp/OK9wWEeCjP3S/Trn5VhlZpxUZ6KuIQB9ZKzW/Jkg+3pQlAABQsVGIADeXGB2oWQ+20aKth/TZ+nTVqemnkOpVdSo3Xx+sTtPjM1KL/FwVLw+1jKmpzj6hys0vkLcni1YCAICKh0IEQMYYdWwQqo4NQi96f8gNMVr8wyFFBvrqmmA/7T92Sj9mndbZvAIt23FYs9bu1/70U/rHli1qFFFDidEB6tMsStfXCXLomwAAAFwZChGAYnl6mItKUr0Qf9UL8ZckdWwQqt91rK/33t+jE5G5WpeWpVlr0vTfFXt0f/t6eqxznKp6cUodAAAo3yhEAK5aoF8VNYqsoc49wyRJ2Wfy9Pd5m/SvRTv05eYMhdXw0Z7MHIUH+Kiql4f6NI3SLU0iVcWL0+sAAED5wN9KAJQa/6peGn1bot4ZmqS8AqvM7LNqHFVDBQVWaUdP6YkPUtX2pa/0zwVbtWz7Ye3NzNHc1ANasPFHncnLdzo+AABwQ8wQASh1nRqGqVPDsIves9ZqybbDemvJTr3y9XZN/Gr7RdsDfL0VVqOqagf5qUODUGVmn9Guwye1/WC2gvyqqH6ov4a2iVFEgI+8PIy8WMQBAACUAgoRgDJhjFHytSFKvjZEWadytXbvUR06cUb1Qqop+0y+Pkk5oBOnc7X5x+P6cstBeRgprIaP4sKq6/ipXE1duff/t3fn0XHe9b3H39/ZNaPRvlqyvFt2bMeO4zgmCVkNSQgQypZQSmlLm3tpaQuHlFLuub0tPe2FQ7mlt3BLKFAopWwhWyElK2QliZ04duJ9t2RZm7Uvo9l+948ZK7IsOV40kq35vM7R0Tz7b74zeZyPfs/ze/jO84eAzHDgn799JTcuq8LrsZl9YyIiInJRUyASkWlXXODnhsaTR7S7bmklkOlJ2tc+QG1JAYXBN05Rx3qHeWxHG33DCe7bcpQ/+LfN1BSFeO/aOj60voG5ZeFpfQ8iIiIyOygQicgFxcxYUh09ZX5tcQG//Zb5APzBtQt5Ymc7P9ncxNef2s89Tx+gwO+lLBIg6PNw0/JqOvpHiAS93LqylssaSvQQWREREZmQApGIXHSCPi/vWFXLO1bV0tIzzL+/cJiheIrOgRHa+0b4+lP7KY8EGE6k+LdfH6Yw6OMdq2pYVV/Ch66Yq/uPREREZJQCkYhc1OaUFPCZW5adNK+9P0ZFJEgsmeKZvZ08tLWFR3e08ePNzXztyX1cubCMPW0DpNOO6xor+b2rF1BTHJqhdyAiIiIzSYFIRGadqmgm3IQDPm5eUcPNK2pwzvH4znYe2HKU5/cfp6YoRElhgH997iA/ePEIPq9RXOBnblmYhrIwy2uLWDe/lGU1RTP8bkRERCSXFIhEJC+YGW+7pJq3XXLycOAHOwf5+0d2Uxj0MRhP0tSVeTbS9188AsCKOUWUFwZJpdOUhgPc0FjFgc4BfB4PZnB9YxXLa6MEfbpHSURE5GKkQCQieW1BRYSvfXjtSfOcyzxI9mfbjvHcvk56huIAvNbcy8+2HcPnMVLO4Rx85fG9+DzGx65ZQEHAS38sic9rXN5QSkU0SEmBn9JwgJKwn8F4is7+EaqKgiTTjmjQh5mGDRcREZlJCkQiIuOYGXPLwnz8+kV8/PpFo/NjiRQtPcNUF4XweoyRZJqfbWvh2b2d3PP0AQAiAS/xVJp7UgdO2mdJ2M9ALEky7UbnXd9YyTtW1rK3vZ+ScICVdcWUhv0sriqkZyhBbXFIgUlERCTHFIhERM5QyO9lYWXhSdMfvnIev7m+gcPHh6gpDhHyexmKJ9nd2k/PUILuoTjdQwl2t/ZRGg6wtDpKS88ww4kU33vhML/a3UHA6yGeSo/Zr4dYIo3fa5RFAqyuL2EkmWZRZSHVRUHesar2jJ67NJJM4fd48OjhtSIiIpNSIBIROU9mxvyKyOh0OODjsobSN93ukxuXcrBzkIWVEfpjSfa09bO1qYf9HQOsrCumpSdGR/8IT+3pIBzw8uy+TlJpxz88vodoyM+ckgJ8HqN3OMHCigiNNVFKwwHSzsUrPkkAACAASURBVPHYjjY2HeoiGvJTGPQxvyLM+vnlXLmwjDVz9VwmERGRExSIRERmSMDnobEm8xDaskiADQvL2bCwfNL1e4cSdA6O8M1nDpJMpTnWGyOZTrOgIsL+jgGe2NVOKntJXkVhkI9fv4iuwTjD8RR72gb4yhN7cI9neqD++MYlfPjKBkrCgWl5ryIiIhcqBSIRkYtEcdhPcdjP/37vqgmXxxIphuIpACJB7ykj3/UOJdh8uIsfbWriS4/s5iuP72Hj8mr+7ObGky4FfP1oL/FUmiVVhRRq4AcREZnlFIhERGaJkN972kvhisN+blpezU3Lq3n9aC8PbDnKDzc18cTOdt53eR0r64pp6hrmnqf347JjPyyuKuT3rl7AqrpiXjrURUf/CFcuKCPtHMd6YwS8Hh7d0UYyneaD6+Zy9eIKigv8pxy7P5bgV7s7qC0OsW5+Wa5KICIictYUiERE8tDKumJW1hVz13UL+eJ/7eaBLS384KUmAN61eg43LauipXeYR15v5XP3vza6nddjfP2p/SftqywSwOsx/vD7rxD0eagoDDIYTxJPpnnrkgrqS8M8tqONI11DANy6soa6kgKOdA3xgXVzuXFZFV4N/CAiIjNEgUhEJI9VRUN8+YOr+dL7L6Wld5iQ30tFYXB0+cevW8QrR3o41jvM2oZSSsJ+tjX34vMYdaUFJFOO6qIQZrC1qYeHX2ulL5YgHPCSSDme2NnG03s6WVQV4Tu/ewXbW/r4pyf3EkukqSgM8OiONupKCvitDfN439o6nt3Xid/rYcWcIhZURDAznHMkUo6AzzODlRIRkdlKgUhERPB4jPrSU4fyNjMun1cKvDFq3mQDP6ybXzbB5XAn3+90fWMVd1wxl4FYkvrSAh7b0cZ3f32IL/5iF1/8xa6T1l1dX8wdVzRw3yvNvHKkm7UNpdywrIrrllYytyzMsd5hDnUOMpxIUV8aZmlVlOLwqZfriYiInI4CkYiITKuKwuBoL9Stq2q5dVUte9r6efDVo6yqK2FuWQEvHeziW88e5HP3v0ZtcYiPXjWfTYe6+NIju/nSI7sn3feVC8pYn73HKZWGeeVh1jaUUlEYoDx7zHTa8eDWo+xq7efqRRU01kQpjwTweSfvgUqlHWnnONQ5yN/8fCebD3Vx47IqPnrVfBZXFlIa0Wh9IiIXKwUiERGZcUuro/zZzctGp1fMKeZD6xvY2tTDmoaS0RHzjg+M8PDrrXQPxllUWUhdaQFFIR+Hu4bY2tTDz7Yd46u/3IfHDK/Z6ANvPQYbl1dTXODnuX2dtPTG8HqMe546AEDQ58E5mFMSYjCeoijk4/rGKpyDw8cHeW5/J4mUI5V2FIV83LKyhodebeFn244BUFEYYF55hMKgj+sbK/ngurkkU47n9nfS0jOMx4z60gKuXFB+xr1YrzX3cqBzgIUVhSyrjeI/TWA7HZcdIWOy0QL7YwkOHx+iKhqkqMCvZ1SJSN5RIBIRkQtSyO/lynGX55UXBvnIhnmnrLuwspAbGqv45MalpNKOE2M07O8YYHtLHzuP9fPjzU3EEiluaKziz1dUc8vKGh7c0sJwIkVT1xBmcLRnmKKQn4Odg3zn+UOEfB4iQR93XtFAYdBHSdjP7WvqqIwG+ewty9h+rI99bQPsax/gSNcQx3qH+ev/3MHf/GwHANnHQo0yg8bqKIPxJJc3lLJhYTlLa6LUFIXoGozTPRTn2X2d7G8f5IldbaOj/S2oiLC0upD5FRHevXoOkYCPeeVhzIyBkSS/3NXOA1uO8mpTDwsrI5RFApSGA4QDPh589SjdQ3GuXFBOQcBLLJHitktr2dc+wIGOQXa19tHWNwKAz2NcMqeItQ2lvP2SaqqKgrT3j5BMOfpiCeaUFPDs3k6KQj6au4epLgpx0/IqKqJBikJnfrliS88w+9oHqC4KUVdawKHOQaqKglRFQ6Pr9MUSbD/ax6LKCKWRwDkHQhGRN2Mn/nJ0sVi3bp3bvHnzTDdDztKXn3+eT1911Uw3Q3Lg8Z+3sfG26pluhsibSqTSpNLujHtAnHPn9AymLUe6eXJXOz6Ph6sXl7OkOko67djT1s+vDxzn5cPdhPxeXjhwnP5Y8pTtA14Pc8sKeOuSTE/TnrZ+/uWZAwzHUxzpGiKZTVlLqgr5wLp67nslc/lfJODl5hU1NHUP0TucoHMgzkAsyYZF5TRWF/LUng78Xg/9sSRHuoYI+jwsrCwkHPDyofUNDCdStPYO8/LhbrY29TKcSJ32fYb8HmKJTA9c0OfhxmVV7Grtp7Y4xHsuq+P+V47i8xoLKiIkUo5Htrfi9xqRYCZMxZOZbf1eI5FyFBf4ef/l9bT2xXh6dwf9IyfXpqYoxB9cu5A1c4tZXBnl4PFBNh/qomcowdKaKNctqeRozzALKiIUBNTLJXnsy1+GT396plsx48zsZefcujNZVz1EIiKSF/xeD2dzNdi5PpD2soZSLmsoPWX+lQvLT+rxSqcdzd3D2R6aGJXRIB4zrl1aeVJou2ROEe+5rA6ArsE4j2xvZSSR4sebm/m7h3cRDfq45yOXc83iCiLByf9Z/x+3ZX4nUml2tPSxtDo6aXCIJVI8sbOdZDpNZTSIz+PBDLY19/KOVTU4B7XFIXYe6+f1ll62NvXwxM52aopD7Grt5zP3bqOmKERFNMCWV3oYiie5dVUthQEfA/Ek1yyu4O2X1NAzHGdrUw/FBX6e33+c771wmPJIgFtX1dBQFmZ5bRFNXUP0xZI8uat9tOdtLI+d3BMXDnhZXFVI0OehuMDPB9fN5frGKo1SeBF7ZHsrP9ncxIo5xfzWhnk4HE1dQ4QDPuLJNP2xJAc7B2goj3DVovIJexP7Ygk6+0dGR6+cTCyR4vGdmccELKosZFFlIYurCiddX2YH9RDJtFAP0eylHiKRmeGco71/hOIL7L6fkWSKHS19LKmOUhj04ZwjnkqP3gd2rpzLBMjXj/bS0hujpijEuvmlVBQG2XKkm2f2djKnJMSOlj4OdA6STDkOHR/kWG+M8kiAj711Ae9ePYdo0M/hrkGOdA2xuKqQupIC9rYPEPJ5OXR8kG8/e5B3rZ5DVTTI6rkllIT9pNKO6JtcEuico61vhCd2tfGu1XPO6hLCi9G59qAC7DzWx/1bjtIfS7KoMsLCygjxZJqDnUMc7RlidX0Jy2qKeGJXG9/79WGOD8apigbpGBjhzf63tTIaZHltEQvKwxztGebapZUc6BjkP7e2cHwwztLqQj5+/SJuWVFLQcBLKu040jVES88w33n+EK8199LaFztpn5c1lLC2oZRL64spiwQoLvCzrKZoNGQPjCT5f7/cx+bD3Vy1qJy3LCxn/YKyk+ozOJIkkL1X0e+1c67dGVEPEXB2PUQKRDItFIhmLwUiEblQJVJpnt7TwXeeP8QzezvPaJtIwMtg/I3LBc3Aa8bahlI2XlLF2oZS2vpGiIZ8PLK9lYe2tgAQT6aJBH10DcYJ+jzUFocI+b1cu7SSxuoojTVRFlcVYgadA3GOdg+zu7WPlXXFvHSwi2f3dVISDlAVDVJbHGLFnGI2LCxjf8cghUEfNcWh0eMc6RrEObL7y+1DjftiCbY29eDzeHjhwHFW1RXz+M42frG9lfetrc/2uEBDWZhL60rw+4zP3fcau9sGuHJBGT1Dca5ZUsn1jZUEfR6+/tR+vv7UAbxmRIJeuocSp63/xuVVXNZQyseuWcDetgF+faCTgoCPmqIQ3UNxQn4vlYVB6ksL2Hmsjwe3trC/fYC97QOUFPg5PhgnEvCysq6Ym1fU8KNNTexu6wcyl32m0pnnnEEmTK2uL+Ejb5nHmvoSDncN8uy+Th7f0cb2lj5Gspd5AhSFfGy8pJrCoI8XDhxnX/sAS6qio/teN6+UmuIQ+9oH6ByIc3xwhEjARyyRIuDzcPOKGpZWR7lhWeb7MaWf41kGonTacbhriEe3t3Kwc5CQ30vQ7+GyuSXctLz6or1/T4FILjgKRLOXApGIXAz2tQ/w/P5OYokU88oj1JUUsKWph8GRJAsrIqTSjlgyxc0ramjpiTE4kuSVI910DyWIJVK8cOA425p7T9pnwOfhtlW1FBf4GUmmeP1oH3ddu5AtR3po64/R0T/Cq0d6Rkc7NGPSHo7G6igjyRRtfSOj92+FA16G4inMYMOC8tFjnNhfY3WUw12DBH1eyiIB2vtiFAS8JNOOupIC1jaUUhDwEvB6OD44QnP3MMcH4iyridI/kmTnsb7R9kSCXi6fV8Z1SytwDuaWhTl0fJA/v3fbSQHlhPXzy9jS1D0aJk7Uo7Y4RFPXEOsXlPHiwS4KA75T7gd739p6/uc7l1MSDtA9GOdA5wABr5d5FWGiQR/bW/po7s704C2uip7T551KO5LpNEeOZy5982RHWkmnHU/t7WBHSx/dg3F8Xg8LKyOE/F5uaKyctCcwmUqzt32AgZEk7dmewCd2tgNQFQ3yuduWc0NjFb3DCe59uZmfvtxM/0iCJVVRqotCVBcF6egfoTDooy+W4MFXWxjK1jWSvXR1aU2UBeURfmNtHQsrC2ntjbG8Nko4cJZ3uJxhIHp6Twc/3HSEPdmBYSDzWIR4MsVwIkUi5aguCjI4kiKRShMN+bltVQ0Bn2c0cNaWFHB8YISO/hF2HOujrqSAVXXFXDKniBuWVdHSE6Opa4gfbjpCeSRIJOgjHPASDnhpKAuzsDJCc/cwD2w5Smk4wDtX13L5vDKKC86/h1WBSC44CkSzlwKRiOSL5/d10j+SpKEsTOfACJfUFo0+32oyyVSaQ8eH2N3az562fnweozIapKooSENZmNeO9rKqrmT0PhXnHH3DSR7b2cb2ll4aysL0DCX4+WvHKCnws3ZeKctroxzrjfHzbce4fF4piZSja3CEupIwI8nM/2S/3tJHU9cQw/EUsWSK8kiAutIwRSEfu1v7CQe8XFpfMnrZV89QnGf2dp7UCwKwqq6Yu29upD+WYP38Mg53DVFS4GdJdZTheIre4QQp5zjcOcijO9rY0dLHB6+Yy/svr2dgJEnY72VLUzdbjvQwOJLiusZK1swtycGnc3FJpx1dQ5l7Ave09uOAvW0D7Grto3soMXpvnBnMLQ2zYk4RV8wv47KGEjoH4jy5q52+WIJY9vMNB3zc0FjFJXOKqLznn3jito9wtGeYAr+XV470sGZuCSvnFDGcSHH4+BAHOgZ4+PVWCoM+5pSE+ND6BtbPL2NJdSaAJlNpfrW7gx+8dITq4hDRoI/Dx4d4bGcbHoMlVVG6BuN0DoxQXhigojDIgooIO4710d43wsC4EFxfWoDHjKF4iuF4kuFE6qR7/yoKgwzHkwzGU3xq41L+dOOS866xApFccBSIZi8FIhGRC9uZ3u/TMxTnaM8wkOlRC/o8XLe0SqP2TaN4Ms2/v3CYjoER1swtYeexPva1D/BqUw/N3cOj60VDPiqjQQr8XkJ+L629sdHP7vdfuo9vrn8vAa+HeCpNdVFwdGj9E+YUh1jTUMLf/cYqSsJn/mDpVNrhnBt9kPVE3y3nHK8f7eOZfR3MK4vg9Rg3LKs86T5C5xxbmno4PhCnvrSABRURALYc6aGupICG8vDZFW4CszsQLVrkNv/hH850M+QsfTke59MBPcl9Nnq8bS4bq5tmuhkiIiKzWt9wgpbeGCGfh/qyAnyeN+7tSTtH91CCjv4RyjY9T3DjjRSFfCRSDp/X6B5KEE+m8Hkyoy/mw6iLdvfdF8aw22Z2C/CPgBf4pnPuC+OW/w7wJeBodtZXnXPfPO1OS0s1csbF6PnnQT1Es9PP20A9RCIiIjlVlP2ZiAcoz/6MvYfoxJ+iyyfebHa7++4zXjVngcjMvMDXgLcBzcAmM3vIOTf+IQI/cs59IlftEBERERERmUwu+8vWA/uccwecc3Hgh8DtOTyeiIiIiIjIWcllIKoDxt5Y0JydN977zGybmd1rZnNz2B4REREREZGT5DIQTTScyfgRHP4TmO+cuxR4HPjuhDsyu8vMNpvZ5o6OjilupoiIiIiI5KtcBqJmYGyPTz3QMnYF59xx59yJcQD/Bbh8oh05577hnFvnnFtXWVmZk8aKiIiIiEj+yWUg2gQsMbMFZhYA7gQeGruCmdWOmXw3sDOH7RERERERETlJzkaZc84lzewTwCNkht3+tnNuu5l9HtjsnHsI+BMzezeQBLqA38lVe0RERERERMbL6XOInHMPAw+Pm/eXY17/BfAXuWyDiIiIiIjIZGb/Y2pFREREREQmoUAkIiIiIiJ5S4FIRERERETylgKRiIiIiIjkLQUiERERERHJWwpEIiIiIiKStxSIREREREQkbykQiYiIiIhI3lIgEhERERGRvKVAJCIiIiIieUuBSERERERE8pYCkYiIiIiI5C0FIhERERERyVsKRCIiIiIikrcUiEREREREJG8pEImIiIiISN5SIBIRERERkbylQCQiIiIiInlLgUhERERERPKWApGIiIiIiOQtBSIREREREclbCkQiIiIiIpK3FIhERERERCRvKRCJiIiIiEjeUiASEREREZG8pUAkIiIiIiJ5S4FIRERERETylgKRiIiIiIjkLQUiERERERHJWwpEIiIiIiKStxSIRERERERmi/r6mW7BRUeBSERERERktrjjjpluwUVHgUhERERERPKWApGIiIiIiOQtBSIREREREclbCkQiIiIiIpK3FIhERERERCRvKRCJiIiIiEje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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_metrics(pt_res_learner)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Testing"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.1 PyTorch convnet"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [],
"source": [
"x,y = next(iter(testloader)) # shape: ([64,1,28,28]; [64])\n",
"out = convnet(V(x)) # shape: ([64, 10])"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [],
"source": [
"_, preds = torch.max(out.data, 1)"
]
},
{
"cell_type": "code",
"execution_count": 184,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(7, 7), (2, 2), (1, 1), (0, 0), (4, 4), (1, 1), (4, 4), (9, 9), (5, 5)]"
]
},
"execution_count": 184,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(zip(preds[:9], y[:9]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cool, even with that little training it's able to get a lot right."
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {},
"outputs": [],
"source": [
"def test_pytorch(model, dataloader):\n",
" \"\"\"evaluation script. Returns tuple: (list of predictions, ratio correct)\"\"\"\n",
" correct = 0\n",
" total = 0\n",
" \n",
" predictions = []\n",
"\n",
" for batch in dataloader:\n",
" images, labels = batch ## could also go w: testloader.dataset.test_labels\n",
" images, labels = to_gpu(images), to_gpu(labels)\n",
" outputs = convnet(Variable(images))\n",
" _, preds = torch.max(outputs.data, 1)\n",
" total += labels.size(0)\n",
" correct += (preds == labels).sum()\n",
" \n",
" predictions.extend(preds)\n",
" \n",
" return predictions, correct/total"
]
},
{
"cell_type": "code",
"execution_count": 364,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9744444444444444"
]
},
"execution_count": 364,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preds, val_acc = test_pytorch(convnet, validloader)\n",
"val_acc"
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9783"
]
},
"execution_count": 188,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preds, test_acc = test_pytorch(convnet, testloader)\n",
"test_acc"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"97-98% accuracy on test set. Just checking:"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(7, 7), (2, 2), (1, 1), (0, 0), (4, 4), (1, 1), (4, 4), (9, 9), (5, 5)]"
]
},
"execution_count": 189,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_,y = next(iter(testloader))\n",
"list(zip(preds[:9], y[:9]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.2 `custom_learner`"
]
},
{
"cell_type": "code",
"execution_count": 191,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9819"
]
},
"execution_count": 191,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get output predictions\n",
"log_preds = custom_learner.predict(is_test=True)\n",
"# compare top-scoring preds against dataset\n",
"np.equal(model_data.test_dl.dataset.y, np.argmax(log_preds, axis=1)).sum() / model_data.test_ds.n"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"#### 5.2.1 Aside: (untrained) `custom_learner` Sanity Checks:"
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"## 2-3 ways to do the same thing\n",
"# log_preds_dl = custom_learner.predict_dl(testloader) # make sure num channels correct before trying this; havent tested\n",
"log_preds_dl = custom_learner.predict_dl(model_data.test_dl)\n",
"log_preds = custom_learner.predict(is_test=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"I had some confusion. You *do* take the max as the top prediction; to get the actual probabilities, since it's a log softmax ouput, you exponentiate. "
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"((10000, 10), (10000, 10))"
]
},
"execution_count": 196,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_preds_dl.shape, log_preds.shape # same shape"
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ True])"
]
},
"execution_count": 199,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.unique(log_preds_dl == log_preds) # same values"
]
},
{
"cell_type": "code",
"execution_count": 232,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" 7\n",
" 2\n",
" 1\n",
"⋮ \n",
" 4\n",
" 5\n",
" 6\n",
"[torch.LongTensor of size 10000]"
]
},
"execution_count": 232,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 236,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"0.0892"
]
},
"execution_count": 236,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.equal(testloader.dataset.test_labels, np.argmax(log_preds, axis=1)).sum() / len(testloader.dataset.test_labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Untrained CNN gets sub-random (< 10%) accuracy. No surprise, it only ever guesses '5', and sometimes '4':"
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"({4, 5}, array([5, 5, 5, ..., 5, 5, 5]))"
]
},
"execution_count": 242,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(np.argmax(log_preds, axis=1)), np.argmax(log_preds, axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.3 `resnet_learner`"
]
},
{
"cell_type": "code",
"execution_count": 192,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9863"
]
},
"execution_count": 192,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_preds = resnet_learner.predict(is_test=True)\n",
"np.equal(model_data.test_dl.dataset.y, np.argmax(log_preds, axis=1)).sum() / model_data.test_ds.n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.4 `pt_res_learner`"
]
},
{
"cell_type": "code",
"execution_count": 193,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.8923"
]
},
"execution_count": 193,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_preds = pt_res_learner.predict(is_test=True)\n",
"np.equal(model_data.test_dl.dataset.y, np.argmax(log_preds, axis=1)).sum() / model_data.test_ds.n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Further Training & Testing"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Seeing how far I can go (simply) before overfitting"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6.1 `custom_learner`:"
]
},
{
"cell_type": "code",
"execution_count": 273,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0f4832822b874563bd6aa4e31f06b1f0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.067517 0.049205 0.986222 \n",
" 1 0.050665 0.043011 0.987444 \n",
"CPU times: user 41.1 s, sys: 15.1 s, total: 56.1 s\n",
"Wall time: 45.4 s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.04301]), 0.9874444445504083]"
]
},
"execution_count": 273,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# prev trn/val loss & valacc: 0.088194 0.068054 0.980333 \n",
"%time custom_learner.fit(lrs, n_cycle=2, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 336,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "aa0d00dbf7b74e7d8ac02bb897802266",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=4), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.043123 0.036729 0.989444 \n",
" 1 0.043052 0.033036 0.989778 \n",
" 2 0.033544 0.030643 0.990889 \n",
" 3 0.043682 0.030089 0.990556 \n",
"CPU times: user 1min 22s, sys: 30.8 s, total: 1min 53s\n",
"Wall time: 1min 31s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.03009]), 0.9905555556615193]"
]
},
"execution_count": 336,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time custom_learner.fit(lrs, n_cycle=4, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 361,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAGtCAYAAAAoBIT+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl8VOX5///XSTLZF0KAsIksorKEpaxajVAELCpCUQGtAlq19etStVRbi1KxhbJ8/dVP9WOtIvitAi64FSvUBVkEAZGwW9khxCxA9m2W8/tjMpOZyWRlJhPg/Xw8fDhzzpkz94QhnOtc133dhmmaiIiIiIiISLWwUA9ARERERESkpVGgJCIiIiIi4kOBkoiIiIiIiA8FSiIiIiIiIj4UKImIiIiIiPhQoCQiIiIiIuJDgZKIiIiIiIgPBUoiIiIiIiI+FCiJiIiIiIj4iAj1AAKlTZs2ZteuXb22/ZBfQvtWcaEZkIiIiIiItDjffPNNnmmabes77rwJlLp27cq2bdu8tt336hr+fveYEI1IRERERERaGsMwjjbkOJXeiYiIiIiI+FCgJCIiIiIi4kOBkoiIiIiIiA8FSiIiIiIiIj4UKImIiIiIiPhQoCQiIiIiIuJDgZKIiIiIiIgPBUoiIiIiIiI+FCiJiIiIiIj4iAj1AERERERE6mK1Wjlx4gTl5eWhHoq0UNHR0XTu3BmLxRKwcypQEhEREZEW7cSJEyQkJNC1a1cMwwj1cKSFMU2TU6dOceLECbp16xaw86r0TkRERERatPLyclJSUhQkiV+GYZCSkhLwjKMCJRERERFp8RQkSV2C8f1QoCQiIiIiUo/4+PhQD0GamQKlECootWKaZqiHISIiIiIiPhQohch/s4vo/8wa3t2eGeqhiIiIiEgDmabJzJkz6du3L2lpaaxYsQKArKws0tPTGTBgAH379mX9+vXY7XamT5/uPva5554L8eilMdT1LkS+PXYGgK8O5nHzoM4hHo2IiIjIueGPH+1h78nCgJ6zd8dEnr6xT4OOXblyJTt27CAjI4O8vDyGDBlCeno6b775JmPHjuXJJ5/EbrdTWlrKjh07yMzMZPfu3QDk5+cHdNwSXMoohUhhmQ2AxOjA9XoXERERkeDasGEDU6dOJTw8nNTUVK655hq2bt3KkCFDeO2115g9eza7du0iISGB7t27c+jQIR588EE++eQTEhMTQz18aQRllELEUTU3yTCcKdztx87woy7J6ugiIiIiUoeGZn6Cpbb55enp6axbt45Vq1Zxxx13MHPmTO68804yMjJYvXo1L7zwAm+99RaLFy9u5hFLUymjFCJhVQHRaxuP8MGOk0z63018mHEyxKMSERERkbqkp6ezYsUK7HY7ubm5rFu3jqFDh3L06FHatWvHPffcw91338327dvJy8vD4XAwadIk5syZw/bt20M9fGkEZZRCxOpwuB8fyCkG4HBeSaiGIyIiIiINMHHiRDZt2kT//v0xDIP58+fTvn17li5dyoIFC7BYLMTHx/P666+TmZnJjBkzcFRd982dOzfEo5fGUKAUIpU2R41tBiq7ExEREWmJioudN7YNw2DBggUsWLDAa/+0adOYNm1ajdcpi3TuUuldiFjtzkApPMzgo53OkjtNTxIRERERaRkUKIWI1e6cCGh3mBw9VQpAVkF5KIckIiIiIiJVFCiFiL/Su48yTlJcYQvBaERERERExJMCpRCptHsHSkO6JlNcYWN3ZkGIRiQiIiIiIi4KlELEanOQFFO92OxFybEAnCquDNWQRERERESkigKlEKmwOWgVWx0otU+KBiCvuCJUQxIRERERkSoKlEKksNxKYnR1oNQhKZqE6Aj2/1AUwlGJiIiIiD/x8fFBf48PP/yQefPmBf19PK1du5avvvqqWd/zXKF1lEKkoMxKUoyFiDADm8MkKiKcHm3jOXGmNNRDExEREZEgsdvthIeH+903fvx4xo8fH/D3tNlsRET4v+xfu3Yt8fHxXHnllQF/33OdMkohUlBmJSnWQozF+RfFEmEQHxVBibreiYiIiLRoCxYsYMiQIfTr14+nn37avX3ChAkMGjSIPn368PLLL7u3x8fH89RTTzFs2DA2bdpE165defrpp/nRj35EWloa+/fvB2DJkiU88MADAEyfPp2HHnqIK6+8ku7du/POO+8A4HA4uP/+++nTpw833HAD48aNc+/zNGLECH7/+99zzTXX8Ne//pWPPvqIYcOGMXDgQK699lqys7M5cuQIL730Es899xwDBgxg/fr15ObmMmnSJIYMGcKQIUPYuHFjMH+ULZoySiFSWJVRio4Mp6jChiU8jLiocM1REhEREanD7jlzKNy3L6DnTOzVi76zZjXo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CSdPnuTxxx/n888/Z8eOHWzdupX333+fHTt2kJmZye7du9m1axczZswAnJm7b7/9lp07d/LSSy816D3OVlCbOVyIPtmdxdYjztrUzx+7BoCuKbEc8QiWmpZRcrYHN00Tw/C3Tq+IiIjIheGbTac5czpwlTbJrS0MuqJ1ncds3LiRjh07kpOTw+jRo7n88stJT0+v9fjRo0czevRoAJYuXcq4ceP47rvvWLhwIcnJyfz1r38lNta7Cumtt97i5ZdfxmazkZWVxd69e+nXrx8AU6dOdf//kUceAWDTpk2sXLkSgDvuuIPf/va3AEyePJkVK1YwcuRIli9fzv33309xcTFfffUVt9xS3S+toqKi1vFPmTKF559/noKCAhYtWsSf//xnv8dFRkZyww03ADBo0CD+85//1P5D9LB161ZGjBiBay3U22+/nXXr1jFr1iwOHTrEgw8+yPXXX8+YMWMA6NevH7fffjsTJkxgwoQJDXqPs6VAKcA2Hzrtfty9bTwAr80YysiFa93bm5ZRsmB3mJRW2omL0h+biIiIXLjqC2qCoWPHjgC0a9eOiRMnsmXLFtLT00lNTSUrK4sOHTqQlZVFu3btvF5XWlrK0qVLWb16NWPGjOGDDz7gzTff5I033uCee+5xH3f48GEWLlzI1q1bSU5OZvr06ZSXl7v3e94or+2muWv7+PHj+d3vfsfp06f55ptv+MlPfkJJSQmtWrVix44dDfq8Q4cOZffu3cTExHDppZfWepzFYnG/b3h4ODZbwyqgnEun1pScnExGRgarV6/mhRde4K233mLx4sWsWrWKdevW8eGHHzJnzhz27NlDRERwr4lVehdANruDJV8dqbG9Y6tor+dNzSgBKr8TERERaWYlJSUUFRW5H69Zs4a+ffsCzqBk6dKlgDNzdNNNN3m9dv78+Tz88MNYLBbKysowDIOwsDBKS72nZhQWFhIXF0dSUhLZ2dn8+9//9tq/YsUK9/+vuOIKAK688kqWL18OwBtvvMFVV10FOOcNDR06lIcffpgbbriB8PBwEhMT6datG2+//TbgDFQyMjLq/Nxz586tNZN0toYNG8aXX35JXl4edrudZcuWcc0115CXl4fD4WDSpEnMmTOH7du343A4OH78OCNHjmT+/Pnk5+dTXFwclHF5UmoigE7ml/vdHhURzowfd+W1jUfczxsrIdoCQFG5lfZJ0fUcLSIiIiKBkp2dzcSJEwGw2WzcdtttXHfddQA88cQT3Hrrrbz66qt06dLFHYiAcx7Otm3bmD17NgCPPfYYw4cPp1WrVu6mDy79+/dn4MCB9OnTh+7du/PjH//Ya39FRQXDhg3D4XC4O9I9//zz3HXXXSxYsIC2bdvy2muvuY+fPHkyt9xyC2vXrnVve+ONN/jVr37Fs88+i9VqZcqUKV7d7Hz99Kc/bfwPqxZLlizx+sybN29m7ty5jBw5EtM0GTduHDfddBMZGRnMmDHD3Yxi7ty52O12fv7zn1NQUIBpmjzyyCO0atUqYGOrjVFb2utcM3jwYNOzVSPAfa+u4e93j2m2MXxz9AyT/vcr9/Mj86732t/1iVV+tzfEF9/lMOO1rbz7qysZdHHy2Q1URERE5Byyb98+evXqFephSAvX0O+JYRjfmKY5uL7jVHoXQNmF1RmlCQM61tj/54lpTQ5yEt2ld2oRLiIiIiISbCq9CyDPQOn/mzKwxv7bhnXhtmFdmnTu6tI7zVESEREREQk2ZZQC6IdC/3OUAsHVzOHz/TlBew8REREREXFSoBRAOYXOXvSje6cG/NyujNJ732byx4/2BPz8IiIiIiJSTYFSgBSUWXnv20wuTY3nH3fWOzes0eIiqzvlubrniYiIiIhIcChQCpCdJ/IB6FG1yGyg+S4s5nCcH90KRURERERaIgVKAeKKW35xdbdmeb/XNx1plvcREREREejatStpaWkMGDCAwYOrq4dOnz7N6NGj6dmzJ6NHj+bMmTMAvPvuu/Tp04err76aU6dOAXDw4EGmTJnS6Pd+++236dWrFyNHjvTafuTIEQzDYNasWe5teXl5WCwWHnjggaZ8TC9LliwJyHnOVQqUAsSV4QnzyfwEy+yP9jbL+4iIiIiI0xdffMGOHTvwXLtz3rx5jBo1iu+//55Ro0Yxb948ABYtWsTmzZu58847efPNNwH4wx/+wJw5cxr9vq+++iovvvgiX3zxRY193bt351//+pf7+dtvv02fPn0a/R5SkwKlAHFULdwbHha8QGn9b73vIny8K4tKmyNo7yciIiIidfvggw+YNm0aANOmTeP9998HICwsjIqKCkpLS7FYLKxfv54OHTrQs2fPWs+1bNky0tLS6Nu3L48//jgAzzzzDBs2bOCXv/wlM2fOrPGamJgYevXq5Q7eVqxYwa233ure/9FHHzFs2DAGDhzItddeS3Z2NgAPPfQQzzzzDACrV68mPT0dh6Nh15X+xmm325k+fTp9+/YlLS2N5557DoDnn3+e3r17069fvyZl00JJ6ygFiL0ZMkoXtY71en7/G9v5PyN7MHPs5UF7z4aY9+/9vLL+EAf+PC6k4xAREREJFsMwGDNmDIZhcN9993HvvfcCkJ2dTYcOHQDo0KEDOTnOpVyefvppxo4dS8eOHfnnP//JrbfeyvLly2s9/8mTJ3n88cf55ptvSE5OZsyYMbz//vs89dRTfP755yxcuNCr5M/TlClTWL58Oe3btyc8PJyOHTty8uRJAK666io2b96MYRi88sorzJ8/n0WLFjFv3jyGDBnC1VdfzUMPPcTHH39MWFj9OZTaxnnRRReRmZnJ7t27AcjPd87fnzdvHocPHyYqKsq97VyhQClAXBmlYJfeZTw9hr98sp83vz4GwJG80qC+X0O89OVBAEzTrNF0QkRERCTQVuzezYnCwoCdr3NiIpP79q3zmI0bN9KxY0dycnIYPXo0l19+Oenp6bUeP3r0aEaPHg3A0qVLGTduHN999x0LFy4kOTmZv/71r8TGVt8E37p1KyNGjKBt27YA3H777axbt44JEybUO/7rrruOWbNmkZqayuTJk732nThxgsmTJ5OVlUVlZSXdujnn08fGxvKPf/yD9PR0nnvuOXr06FHv+9Q1zlmzZnHo0CEefPBBrr/+esaMGQNAv379uP3225kwYUKDPktLokApQOxVmcpglt4BJMVYuLRddWc9q73llN5V2BxEW8LrP1BERETkLNQX1ARDx44dAWjXrh0TJ05ky5YtpKenk5qaSlZWFh06dCArK4t27dp5va60tJSlS5eyevVqxowZwwcffMCbb77JG2+8wT333OM+zjSb3tE4MjKSQYMGsWjRIvbs2cNHH33k3vfggw/y6KOPMn78eNauXcvs2bPd+3bt2kVKSoo7+9QQtY0zOTmZjIwMVq9ezQsvvMBbb73F4sWLWbVqFevWrePDDz9kzpw57Nmzh4iIcyME0RylAKmeoxT897rjiq68UrVWU0R4y8ngFFfYQj0EERERkYArKSmhqKjI/XjNmjX0rQrWxo8fz9KlSwFn5uimm27yeu38+fN5+OGHsVgslJWVYRgGYWFhlJZ6VwUNGzaML7/8kry8POx2O8uWLeOaa65p8Bgfe+wx/vKXv5CSkuK1vaCggE6dOrnH53L06FEWLVrEt99+y7///W++/vrrBr1PbePMy8vD4XAwadIk5syZw/bt23E4HBw/fpyRI0cyf/588vPzKS4ubvBnCrVzI5w7B7gCpeYoPQsPM7i2dypDu7Umr7iy0a+32R04TIiMCGxUN/jZTzky7/qAnlNEREQk1LKzs5k4cSIANpuN2267jeuuuw6AJ554gltvvZVXX32VLl268Pbbb7tfd/LkSbZt2+bO4jz22GMMHz6cVq1auZs+uHTo0IG5c+cycuRITNN9gWd1AAAgAElEQVRk3LhxNYKuuvTp08dvt7vZs2dzyy230KlTJ4YPH87hw4cxTZO7776bhQsX0rFjR1599VWmT5/O1q1biY6O9nr9kiVLvMa6efNmv+PMyMhgxowZ7oYQc+fOxW638/Of/5yCggJM0+SRRx6hVatWDf5MoWacTZqvJRk8eLDp2aoR4L5X1/D3u8c0y/uv3H6CR9/KYO1vRtC1TVyzvOeDy75l54l8vpw5sv6DPUx4YSM7jucHLKhJm72aonJnNunw3HGapyQiIiIBtW/fPnr16hXqYUgL19DviWEY35im6b8zhgdllALE1fUu2HOUPKUmRJFdWN6gJgo2u4Pxf9vImD6p7DgeuI4jlTaHO0gCKLPaiY3U10pEREREzm26oj1LB3KKeXvbcbpVZZHCmjFQap8UTbnVQWG5jaQYS53HniqpZG9WIXuzAtchBuBQnned6ZlSqwIlERERETnnqZnDWXrgze38fd0hDuWVANCMcRLtEp01pDmF5fUeW26119hm8+iYV1hupesTq3jv2xONGkPmmTKv5/mljZ8zJSIiIiLS0ihQOkuurnMvrzsEQHgzzs9JTYgC4IcGBEplfgKl3767kw3f5wFwtGo9ppfXHW7UGFyd7hKinVmk/FJro14vIiIiItISKVA6S75lZs1degeQXVhR77Hl1prrLa3cnsnPX3W2giyqcAY4kfW0Gz9VXMHgZz8lo2qekytQevH2HwFwRhklERERETkPKFA6S2mdkryeN2dGqV2CK1BqWumdpzMlzkCpvmYUGw7kkVdcwd++OMCSjYc5U+IMjDq2igGgoEwZJRERERE592nW/Vn6bF+21/OwZgyUYiLDSYyOaFCg5K/0ziW/tJKS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eMfd9pIxZqcx5oAx5jF32/eABPf9fuNu67x7Zdz33m+MeccY8/Eu773BGPO8MeaQMeY3xl3x2hjzPWPMu25Zvn/b/3dEROS28oW6ACIiIq6vAV+x1n4EwE146q21M40xccBmY8zr7r6zgDJr7Un397+21tYYYxKA7caYF6y1XzPGfN5aO6WHf+ujwBRgMpDl/s0m97WpwETgArAZmO+uUn8vMM5aa40xabf804uIyKCiO0oiIjJY3QX8lTFmD/AWkAmUuq+93SVJAviCMWYvsA0o6LLf9SwAfmut7bDWlgMbgZld3vuctTYA7MHpEtgANANPGGM+CjTd9KcTEZFBTYmSiIgMVgb4G2vtFPdRbK3tvKPU6O1kzGJgOTDXWjsZ2A3E9+K9r6ely/MOwGetbce5i/UC8JfAn/v0SUREJOwoURIRkcHiMuDv8vsq4LPGmBgAY8wYY0xSD3+XCtRaa5uMMeOAOV1ea+v8+yCbgI+746CygTuBt69XMGNMMpBqrX0N+DucbnsiIhLBNEZJREQGi31Au9uF7hfAv+J0e9vlTqhQiXM3J9ifgf9qjNkHHMbpftfpcWCfMWaXtfY/d9n+B2AusBewwFettZfcRKsnfuA/jDHxOHejvti/jygiIuHCWGtDXQYREREREZFBRV3vREREREREgihREhERERERCaJESUREREREJIgSJRERERERkSBKlERERERERIIoURIREREREQmiRElERERERCSIEiUREREREZEg/w9LrmN3C1ECRQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_loss(custom_learner, val=custom_learner.sched.val_losses)"
]
},
{
"cell_type": "code",
"execution_count": 338,
"metadata": {},
"outputs": [],
"source": [
"custom_learner.save('customcnn_mnist_acc_99056')"
]
},
{
"cell_type": "code",
"execution_count": 339,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9892"
]
},
"execution_count": 339,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_preds = custom_learner.predict(is_test=True)\n",
"np.equal(model_data.test_dl.dataset.y, np.argmax(log_preds, axis=1)).sum() / model_data.test_ds.n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I think that's good enough for an MNIST warm up."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6.2 `resnet_learner`:"
]
},
{
"cell_type": "code",
"execution_count": 342,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f1adc23e26b74dfdaa0e8c858a41e77f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.063101 0.038616 0.988444 \n",
" 1 0.041075 0.034616 0.990222 \n",
"CPU times: user 1min 20s, sys: 30.1 s, total: 1min 50s\n",
"Wall time: 1min 39s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.03462]), 0.9902222221692403]"
]
},
"execution_count": 342,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time resnet_learner.fit(lrs, n_cycle=2, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 343,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e10107b5aba643c9bd83aac54ffc8742",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=4), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.039452 0.030857 0.990667 \n",
" 1 0.032786 0.028692 0.992111 \n",
" 2 0.024677 0.029187 0.991778 \n",
" 3 0.02215 0.028211 0.991333 \n",
"CPU times: user 2min 39s, sys: 1min 1s, total: 3min 41s\n",
"Wall time: 3min 19s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.02821]), 0.9913333334392972]"
]
},
"execution_count": 343,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time resnet_learner.fit(lrs, n_cycle=4, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 360,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAGtCAYAAAAoBIT+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl8VNX9//HXSTJZSFjCvkmBSiuQsMiqlaBFQNEiFBXQKiBVW78utda6K5W2UJYfX/0Wv36tC1hlc19QoS5sCrJJAMUFkT1mAbKvM3N/f0xmMjOZbGSZZPJ+Ph4+mLn3zL1nYjJzP/dzzucYy7IQERERERGRMmHB7oCIiIiIiEhjo0BJRERERETEjwIlERERERERPwqURERERERE/ChQEhERERER8aNASURERERExI8CJRERERERET8KlERERERERPwoUBIREREREfETEewO1JX27dtbPXv29Nn2Y2YendvEBqdDIiIiIiLS6OzatSvDsqwOVbULmUCpZ8+e7Ny502fbrc+t5/9mjwtSj0REREREpLExxhypTjsNvRMREREREfGjQElERERERMSPAiURERERERE/CpRERERERET81GugZIy5zBjzjTHmoDHm/gD7o4wxq0v3f26M6Vm63WaMWW6M2WeMOWCMeaA++ykiIiIiIuKt3gIlY0w4sBS4HOgHTDfG9PNrNhs4Y1nWucAS4B+l268BoizLSgSGALe6gygREREREZH6Vp8ZpeHAQcuyDlmWVQysAq7ya3MVsLz08avAGGOMASwg1hgTAcQAxUB2PfZVRERERETEoz4DpW7AMa/nx0u3BWxjWZYdyALa4Qqa8oAU4CiwyLKs0/XYVxEREREREY/6DJRMgG1WNdsMBxxAV6AXcI8xpne5ExhzizFmpzFmZ3p6em37KyIiIiIiAkBEPR77OHCO1/PuwMkK2hwvHWbXGjgNXAd8YFlWCZBmjPkUGAoc8n6xZVnPAM8ADB061D8IExEREZEQUFJSwvHjxyksLAx2V6SRio6Opnv37thstjo7Zn0GSjuAPsaYXsAJYBquAMjb28AMYCtwNfCxZVmWMeYo8EtjzEtAC2Ak8N/12FcRERERaaSOHz9Oy5Yt6dmzJ67p7CJlLMvi1KlTHD9+nF69etXZcett6F3pnKPbgXXAAWCNZVlfGmMeN8ZMLG32HNDOGHMQ+CPgLiG+FIgD9uMKuF6wLGtvffVVRERERBqvwsJC2rVrpyBJAjLG0K5duzrPONZnRgnLst4D3vPb9qjX40JcpcD9X5cbaLuIiIiINE8KkqQy9fH7Ua8LzoqIiIiIhIK4uLhgd0EaWMgHStmFJViW6jyIiIiIiEj1hXSgVFhiZ8Cc9Sz77HCwuyIiIiIiIcCyLO69914SEhJITExk9erVAKSkpJCUlMSgQYNISEhg8+bNOBwOZs6c6Wm7ZMmSIPdeaqJe5ygFW0GxEzD856tUZv2i7ipgiIiIiEhw/OWdL/nqZHadHrNf11Y89qv+1Wr7+uuvs2fPHpKTk8nIyGDYsGEkJSWxYsUKxo8fz0MPPYTD4SA/P589e/Zw4sQJ9u/fD0BmZmad9lvqV0hnlNzL2To19E5ERERE6sCWLVuYPn064eHhdOrUidGjR7Njxw6GDRvGCy+8wJw5c9i3bx8tW7akd+/eHDp0iDvuuIMPPviAVq1aBbv7UgMhnVFy175QnCQiIiISGqqb+akvFc19T0pKYtOmTaxdu5YbbriBe++9lxtvvJHk5GTWrVvH0qVLWbNmDc8//3wD91jOVmhnlEopUBIRERGRupCUlMTq1atxOBykp6ezadMmhg8fzpEjR+jYsSM333wzs2fPZvfu3WRkZOB0OpkyZQpz585l9+7dwe6+1EBIZ5TcKSULRUoiIiIiUnuTJ09m69atDBw4EGMMCxYsoHPnzixfvpyFCxdis9mIi4vjxRdf5MSJE8yaNQun0wnAvHnzgtx7qYmQDpTcQ++cipNEREREpBZyc3MB18KmCxcuZOHChT77Z8yYwYwZM8q9TlmkpivEh965QiWtoyQiIiIiIjUR4oGSizJKIiIiIiJSEyEdKHmq3gW1FyIiIiIi0tSEdqDkLuagoXciIiIiIlIDIR0ouWnBWRERERERqYlmESgpThIRERERkZpQoCQiIiIiUoW4uLh6P8fbb7/N/Pnz6/083jZs2MBnn33WoOdsKprFOkqKk0RERESkMXA4HISHhwfcN3HiRCZOnFjn57Tb7UREBL7s37BhA3FxcVx44YV1ft6mrplklBQqiYiIiEjdWLhwIcOGDWPAgAE89thjnu2TJk1iyJAh9O/fn2eeecazPS4ujkcffZQRI0awdetWevbsyWOPPcb5559PYmIiX3/9NQDLli3j9ttvB2DmzJnceeedXHjhhfTu3ZtXX30VAKfTyW233Ub//v258sormTBhgmeft4svvpgHH3yQ0aNH88QTT/DOO+8wYsQIBg8ezKWXXkpqaiqHDx/m6aefZsmSJQwaNIjNmzeTnp7OlClTGDZsGMOGDePTTz+tzx9loxbaGSVjAEtD70RERERCxP65c8k+cKBOj9mqb18SHnmkWm3Xr1/Pd999x/bt27Esi4kTJ7Jp0yaSkpJ4/vnnadu2LQUFBQwbNowpU6bQrl078vLySEhI4PHHH/ccp3379uzevZunnnqKRYsW8eyzz5Y7V0pKClu2bOHrr79m4sSJXH311bz++uscPnyYffv2kZaWRt++fbnpppsC9jUzM5ONGzcCcObMGbZt24YxhmeffZYFCxawePFifve73xEXF8ef/vQnAK677jruvvtuLrroIo4ePcr48eM5UMc/76YipAMlN1W9ExEREZG6sH79etavX8/gwYMByM3N5bvvviMpKYknn3ySN954A4Bjx47x3Xff0a5dO8LDw5kyZYrPcX79618DMGTIEF5//fWA55o0aRJhYWH069eP1NRUALZs2cI111xDWFgYnTt35pJLLqmwr1OnTvU8Pn78OFOnTiUlJYXi4mJ69eoV8DUffvghX331led5dnY2OTk5tGzZsqofTchpFoGSwiQRERGR0FDdzE99sSyLBx54gFtvvdVn+4YNG/jwww/ZunUrLVq04OKLL6awsBCA6OjocvOSoqKiAAgPD8dutwc8l7uN+7ze/1ZHbGys5/Edd9zBH//4RyZOnMiGDRuYM2dOwNc4nU62bt1KTExMtc8TqprFHCVllERERESkLowfP57nn3+e3NxcAE6cOEFaWhpZWVnEx8fTokULvv76a7Zt21Yv57/ooot47bXXcDqdpKamsmHDhmq9Lisri27dugGwfPlyz/aWLVuSk5PjeT5u3Dj++c9/ep7v2bOnbjreBDWLQEkpJRERERGpC+PGjeO6667jggsuIDExkauvvpqcnBwuu+wy7HY7AwYM4JFHHmHkyJH1cv4pU6bQvXt3EhISuPXWWxkxYgStW7eu8nVz5szhmmuuYdSoUbRv396z/Ve/+hVvvPGGp5jDk08+yc6dOxkwYAD9+vXj6aefrpf30RSYUKkIN3ToUGvnzp0+237z1Hts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riLOM2bM4M033wQgLCyMoqIi8vPzsdlsbN68mS5dutCnT58Kj/X73/+eoUOH0r9/fx577DGffQsXLmT48OEMHz6cgwcPAnDkyBHGjBnDgAEDGDNmDEePHiUrK4uePXvidDoByM/P55xzzqGkpITvv/+eyy67jCFDhjBq1Ci+/vrrgP0YNWoU27dvp6SkhNzcXA4ePMigQYM8+y+++GJPsBgXF8dDDz3EwIEDGTlyJKmpqdX+2a1cuZLExEQSEhK47777AHA4HMycOZOEhAQSExNZsmQJAE8++ST9+vVjwIABZ5WVOxvNIlByKk4SaTLcVSrdQ+8OZeQBcDKzgG2HTgWtXyIi0rwZYxg3bhxDhgzhmWee8WxPTU2lS5cuAHTp0oW0tDQAHnvsMcaPH8+HH37I9OnT+etf/8ojjzxS6Tn+9re/sXPnTvbu3cvGjRvZu3evZ1+rVq3Yvn07t99+O3/4wx8AuP3227nxxhvZu3cv119/PXfeeSetW7dm4MCBbNy4EYB33nmH8ePHY7PZuOWWW/if//kfdu3axaJFi7jtttsqfK+XXnop69at46233mLixIkV9jkvL4+RI0eSnJxMUlIS//rXv6rx04STJ09y33338fHHH7Nnzx527NjBm2++yZ49ezhx4gT79+9n3759zJo1C3Bl7r744gv27t3L008/Xa1z1Fa9Vr0TEamp7NKS4C2jXR9Pt/57F4fnX8Hf3zvAu3tT2PbAGDq3jg5mF0VEJMh2bT3NmdN1t4REfFsbQy5oW2mbTz/9lK5du5KWlsbYsWM577zzSEpKqrD92LFjGTt2LADLly9nwoQJfPPNNyxatIj4+HieeOIJWrRo4fOaNWvW8Mwzz2C320lJSeGrr75iwIABAEyfPt3z79133w3A1q1bef311wG44YYb+POf/wzA1KlTWb16NZdccgmrVq3itttuIzc3l88++4xrrikrOF1UVFRh/6dNm8aTTz5JVlYWixcv5u9//3vAdpGRkVx55ZUADBkyhP/85z8V/xC97Nixg4svvpgOHToAcP3117Np0yYeeeQRDh06xB133MEVV1zBuHHjABgwYADXX389kyZNYtKkSdU6R20pUBKRRuP4mXzuf30fAK1ibD77Pj3omsSallOoQElEpJmrKqipD127dgWgY8eOTJ48me3bt5OUlESnTp1ISUmhS5cu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gO3Bggou1DV695+rqmP697fyqk9GvEn946+n6F7dNkfJGOMCfgYsBPKBXcaYPGvt4TaHfQYos9ZmG2PuAX4AfAwoAVZYawuNMWOAjUAmIiIiIiLSaw1Lcxah3Xe6HIA3H57f6YQL2SlOoHTf73YRHebmwCOLAbjl37cA8ItXjrc73tXZrqrL6M5kDlOAY9baEwDGmGeAlUDbQGkl8Ihn+8/A48YYY619p80xh4AwY0yotbaus39c/UkiIiIiIj3L4KT26y9dS1a6jNgwokLdVNc1UlXbSHFFLb9+7cQlxz35NzneoOpGdOfQu0zgdJvH+VzaK+Q9xlrbCFQAiT7HfAR451qCJBERERER6Xky41oDo28sH3lNrzXGtFu/6TtrDvGr7R9cctzwtGgGJl26IO616s5AqaO+Lt+OniseY4wZjTMc78EO/4AxDxhj3jbGvH3u3LnrLqiIiIiIiHS/ttnx7psx6Jpfnx7bOvdp/cFi7/bfzWp9r9DgrglxujNQygf6tXmcBRRe7hhjjBuIBUo9j7OAF4C/sdYepwPW2iestTnW2pzk5GSf57rinyAiIiIiIl3pwdmD+cikrOuaQ5TmCZRCXO3DmAdmD/Fudzbd+NV0Z6C0CxhqjBlkjAkB7gHyfI7JAz7t2V4FvGSttcaYOGAt8LC19nVERERERCQgPLxsJP/10fHX9dolo50U4x+f0tof89RnppAcHUpWvDOsLzKkawKlbkvmYK1tNMZ8HidjnQv4jbX2kDHmu8Db1to84NfAU8aYYzg9Sfd4Xv55IBv4pjHmm559i6y1ZxERERERkT5p5tAk9n5rIZU1jfz+zVMA9It35i09++A0ahua2g3vuxHdmfUOa+06YJ3Pvm+12a4F7u7gdd8DvndDf1t570REREREAk5cRAhxESE88anJjM2K9WbOa5sooit0a6AkIiIiIiLSHRaNTuvW9w+cQKmsDP7rv7wPZxws4mhDRLt9IiIiIiIinRE4gVJ8PHz5y96H8xqaeOFbv4Qvf86PhRIRERERkR7loYc6dVh3Zr3zq7BgF8Zce8pBERERERGRgA2URERERERErpcCJRERERERER8KlERERERERHwoUBIREREREfGhQElERERERMSHAiUREREREREfCpRERERERER8KFASERERERHxoUBJRERERETEhwIlERERERERHwqUREREREREfChQEhERERER8aFASURERERExIcCJRERERERER8KlERERERERHwoUBIREREREfGhQElERERERMSHAiUREREREREfCpRERERERER8KFASERERERHxoUBJRERERETEhwIlERERERERHwqUREREREREfChQEhERERER8aFASURERERExIcCJRERERERER8KlERERERERHwoUBIREREREfGhQElERERERMSHAiUREREREREfCpRERERERER8KFASERERERHx0a2BkjFmiTHmqDHmmDHmqx08H2qMedbz/A5jzEDP/kRjzMvGmGpjzOPdWUYRERERERFf3RYoGWNcwM+ApcAo4OPGmFE+h30GKLPWZgP/DfzAs78W+CbwUHeVT0RERERE5HLc3fjeU4Bj1toTAMaYZ4CVwOE2x6wEHvFs/xl43BhjrLUXgNeMMdndWD4A6svKqCstJSQujpC4OIzL1d1/UuSmqDp2jDNbt2KCgjBuN8btJqjlPjQUd2Qk7qgogqOicLe5uUJD/V10kS5Rcfgw57Zvx7hcGJeLoOBgZ9vtxhUa2u5z746Kwh0ZSXB0NEEhIf4uukiXKNu7l/M7dlxaB4KDcYWE4I6Obvf5d0dFOXUgONjfRRfpEbozUMoETrd5nA9Mvdwx1tpGY0wFkAiUdOYPGGMeAB4A6N+//3UV8vV77qH62DHv4+CYGILj4giJjyc0KYmwtDTC09Ja79PTCUtLwx0efl1/T+RmOfa//0v+X/96za9zR0URmpR0yS08PZ3wrCwisrIIS0sjyN2dXx8iN+7oT37CmS1brvl17uhoQpOTWz//iYlOHcjIICIri/CsLMJTU9WwJj3e4R/8gNKdO6/5dcGxsZd8/kOTkwnPyHCuA5mZhKWkqA5IwOvOXzqmg332Oo65LGvtE8ATADk5OZ1+XVsN5eUkTp1K+uLF1JeXU19WRkN5OfXl5dQUFlK6Zw8NZWWXvC4sNZXIgQO9t6hBg5ztAQPUGik9QnNDA5EDBjA7L4/mpiZsQwO2qYnmxkaa6+porK6msbqaBs9944ULNFRWUn/+PHUlJdSVlFB17Bglb71FQ3l5u/c2LhdhaWlEZGUR0b8/UYMHE52dTdSQIURkZeniKT1Cc309saNHM/3pp2lubMQ2Njr3TU001dbSdOECDVVV3s9/Y3U1DRUV1J0/79xK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OtDQQO25c9QWFVFbXExNcTG1Z87QUF5OfUUF9WVlVL33HvVlZTRUVGCbrj7IIFh1QHqYkNhYQlrmPPloqquj7tw557PvqQe15845n/nycurLy6k5csS73ZlkDboOSE9ijCE0IYHQhIRLGpPBqQO1Z844n33PdaDOUwfqy8tpKC+norDQ2a6o6FQdGP2NbzD4vvuuq7zdGSh11E1jO3lMZ16LMeYB4AGA/v37t3tu6Oc+R8KvNzHnM9/sVGFF/C0oJMQZtz5gQKeOb25spLG6msbqapobGrANDTQ3NrZuNzURN2ZMN5dapOsEBQcTkZFBREbGVY+11tJcX09zXR1NNTU01dY6t5oabGMjtrkZa22HAZlIT+UKDXWGYWdlXfXYljrQVFtLs+ez3+SpDy11AGNUB6RXcYWGeueCX03bOtBUU+PUA8+tubERmpuxzc2deq/L6c5AKR/o1+ZxFlB4mWPyjTFuIBYo7eRrsdY+ATwBkJOTc0kgJRLIgtxupwu6j6+aLX2TMQZXaCiu0NCASkUr0llt6wCxsf4ujshNdzPqQHcOXN0FDDXGDDLGhOAkZ8jzOSYP+LRnexXwkrXWevbfY4wJNcYMAoYCO7uxrCIiIiIiIl7d1qPkmXP0eWAjTnrw31hrDxljvgu8ba3NA34NPOVJ1lCKE0zhOe45nMQPjcA/dHXGOxERERERkcvp1nWUrLXrgHU++77VZrsWuPsyr/134N+7s3wiIiIiIiIdUc5IERERERERHwqUREREREREfChQEhERERER8aFASURERERExIcCJRERERERER8KlERERERERHwoUBIREREREfGhQElERERERMSHAiUREREREREfCpRERERERER8KFASERERERHxoUBJRERERETEh7HW+rsMXcIYcw445bM7CSjxQ3Hk5tE5Dnw6x4FP5zjw6RwHPp3jwBdI53iAtTb5agcFTKDUEWPM29baHH+XQ7qPznHg0zkOfDrHgU/nOPDpHAe+vniONfRORERERETEhwIlERERERERH4EeKD3h7wJIt9M5Dnw6x4FP5zjw6RwHPp3jwNfnznFAz1ESERERERG5HoHeoyQiIiIiInLNAjZQMsYsMcYcNcYcM8Z81d/lketnjDlpjDlgjNlrjHnbsy/BGLPZGPO+5z7es98YY/7Hc973G2Mm+bf00hFjzG+MMWeN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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_loss(resnet_learner, val=resnet_learner.sched.val_losses)"
]
},
{
"cell_type": "code",
"execution_count": 345,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9931"
]
},
"execution_count": 345,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_preds = resnet_learner.predict(is_test=True)\n",
"np.equal(model_data.test_dl.dataset.y, np.argmax(log_preds, axis=1)).sum() / model_data.test_ds.n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6.3 `pt_res_learner`:"
]
},
{
"cell_type": "code",
"execution_count": 346,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3386eb97d80943b294383c1c63790887",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.499828 0.521596 0.908778 \n",
" 1 0.456638 0.385642 0.914556 \n",
"CPU times: user 39.5 s, sys: 12.2 s, total: 51.7 s\n",
"Wall time: 40.9 s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.38564]), 0.9145555555025736]"
]
},
"execution_count": 346,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time pt_res_learner.fit(lrs, n_cycle=2, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 347,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "053282fc8c4b45d3b822fa0ebb3ae8f3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=4), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 0.450119 0.430365 0.917333 \n",
" 1 0.435357 0.407292 0.922667 \n",
" 2 0.412722 0.429438 0.923556 \n",
" 3 0.411739 0.334759 0.925889 \n",
"CPU times: user 1min 18s, sys: 24.3 s, total: 1min 43s\n",
"Wall time: 1min 21s\n"
]
},
{
"data": {
"text/plain": [
"[array([0.33476]), 0.9258888889948527]"
]
},
"execution_count": 347,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time pt_res_learner.fit(lrs, n_cycle=4, cycle_len=1, cycle_mult=1)"
]
},
{
"cell_type": "code",
"execution_count": 359,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_loss(pt_res_learner, val=pt_res_learner.sched.val_losses)"
]
},
{
"cell_type": "code",
"execution_count": 365,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9236"
]
},
"execution_count": 365,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_preds = pt_res_learner.predict(is_test=True)\n",
"np.equal(model_data.test_dl.dataset.y, np.argmax(log_preds, axis=1)).sum() / model_data.test_ds.n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 7. Comparisons & Thoughts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With single-epoch test set accuracies already in the 90%s, I'm not sure how useful a standard-regime baseline with MNIST will be.\n",
"\n",
"What has been *extremely* valuable was the practice setting this up has been. With pytorch, with fastai callbacks, with data processing, and a lot else. This'll hopefully make the next experiments with CIFAR-10 and ImageNet much smoother and to the point.\n",
"\n",
"### **Stats**:\n",
"\n",
"- The custom CNN model **`convnet`** in a simple pytorch training loop achieved a **97.83**% test - accuracy after 1 epoch. I think I wrote the validation procedure wrong (current Pytorch documentation is for version 0.4; I'm working with 0.3.1), nonetheless a val loss of **0.0878** was recorded after 1 epoch.\n",
"\n",
"- The custom CNN learner **`custom_learner`** achieved a **98.92**% test accuracy after 7 epochs of training, **98.19**% after only 1. Validation Loss (ep 7,1): **0.030089, 0.068054**\n",
"\n",
"- The fresh ResNet18 learner **`resnet_learner`** achieved a **99.31**% test accuracy after 7, and **98.63**% after 1. Validation Loss (ep 7,1): **0.028211, 0.05272**\n",
"\n",
"- The pretrained ResNet18 learner **`pt_res_learner`** (training only the classifier head) achieved a **92.36**% test accuracy after 7, and **89.23**% after 1. Validation Loss (ep 7,1): **0.334759, 0.58673**\n",
"\n",
"No model overfit, and only the fresh ResNet18 learner had a training loss better than validation. All learners appeared to be beginning to bottom-out in validation loss roughly around **0.3**, maintaining the default Cosine Annealing learning-rate schedule fastai uses.\n",
"\n",
"In looking up what default LR scheduler fastai uses: apparently *fastai has a built-in [`SaveBestModel` callback](https://github.com/fastai/fastai/tree/master/fastai/sgdr.py#L331)* in sgdr.py.\n",
"\n",
"|model/learner|1-epoch val loss|7-epoch val loss|1-epoch test accuracy|7-epoch test accuracy|\n",
"|-|:-|-|-|-|\n",
"|`convnet`|0.0878|–|97.83%|–|\n",
"|`custom_learner`|0.068054|0.030089|98.19%|98.92%|\n",
"|`resnet_learner`|**0.05272**|**0.028211**|**98.63**%|**99.31**%|\n",
"|`pt_res_learner`|0.58673|0.334759|89.23%|92.36%|"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment