Skip to content

Instantly share code, notes, and snippets.

@aakashns
Created July 15, 2018 17:31
Show Gist options
  • Save aakashns/90c13a903ff510c5baa72293fea72952 to your computer and use it in GitHub Desktop.
Save aakashns/90c13a903ff510c5baa72293fea72952 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load the Data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import torchvision.transforms as tt\n",
"from torchvision.datasets import ImageFolder\n",
"from torch.utils.data import DataLoader\n",
"from fastai.dataset import ModelData\n",
"\n",
"def get_data(bs, num_workers):\n",
" PATH = \"data/cifar10/\"\n",
" trn_dir, val_dir = PATH + 'train', PATH + 'test'\n",
" stats = ((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))\n",
" \n",
" # Data transforms (normalization & data augmentation)\n",
" tfms = [tt.ToTensor(), tt.Normalize(*stats)]\n",
" aug_tfms = tt.Compose([tt.RandomCrop(32, padding=4), \n",
" tt.RandomHorizontalFlip()] + tfms)\n",
" # PyTorch datasets\n",
" trn_ds = ImageFolder(trn_dir, aug_tfms)\n",
" val_ds = ImageFolder(val_dir, tt.Compose(tfms))\n",
" aug_ds = ImageFolder(val_dir, aug_tfms)\n",
" \n",
" # PyTorch data loaders\n",
" trn_dl = DataLoader(trn_ds, batch_size=bs, shuffle=True, \n",
" num_workers=num_workers, pin_memory=True)\n",
" val_dl = DataLoader(val_ds, batch_size=bs, shuffle=False, \n",
" num_workers=num_workers, pin_memory=True)\n",
" aug_dl = DataLoader(aug_ds, batch_size=bs, shuffle=False, \n",
" num_workers=num_workers, pin_memory=True)\n",
" \n",
" # FastAI model data \n",
" data = ModelData(PATH, trn_dl, val_dl)\n",
" data.aug_dl = aug_dl\n",
" data.sz = 32\n",
" \n",
" return data"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def get_learner(arch, bs):\n",
" \"\"\"Create a FastAI learner using the given model\"\"\"\n",
" data = get_data(bs, num_cpus())\n",
" learn = ConvLearner.from_model_data(arch.cuda(), data)\n",
" learn.crit = nn.CrossEntropyLoss()\n",
" learn.metrics = [accuracy]\n",
" return learn\n",
"\n",
"def get_TTA_accuracy(learn):\n",
" \"\"\"Calculate accuracy with Test Time Agumentation(TTA)\"\"\"\n",
" preds, targs = learn.TTA()\n",
" preds = 0.6 * preds[0] + 0.4 * preds[1:].sum(0)\n",
" return accuracy_np(preds, targs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create the network"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"\n",
"def conv_2d(ni, nf, stride=1, ks=3):\n",
" \"\"\"3x3 convolution with 1 pixel padding\"\"\"\n",
" return nn.Conv2d(in_channels=ni, out_channels=nf, \n",
" kernel_size=ks, stride=stride, \n",
" padding=ks//2, bias=False)\n",
"\n",
"def bn_relu_conv(ni, nf):\n",
" \"\"\"BatchNorm → ReLU → Conv2D\"\"\"\n",
" return nn.Sequential(nn.BatchNorm2d(ni), \n",
" nn.ReLU(inplace=True), \n",
" conv_2d(ni, nf))\n",
"\n",
"class BasicBlock(nn.Module):\n",
" \"\"\"Residual block with shortcut connection\"\"\"\n",
" def __init__(self, ni, nf, stride=1):\n",
" super().__init__()\n",
" self.bn = nn.BatchNorm2d(ni)\n",
" self.conv1 = conv_2d(ni, nf, stride)\n",
" self.conv2 = bn_relu_conv(nf, nf)\n",
" self.shortcut = lambda x: x\n",
" if ni != nf:\n",
" self.shortcut = conv_2d(ni, nf, stride, 1)\n",
" \n",
" def forward(self, x):\n",
" x = F.relu(self.bn(x), inplace=True)\n",
" r = self.shortcut(x)\n",
" x = self.conv1(x)\n",
" x = self.conv2(x) * 0.2\n",
" return x.add_(r)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def make_group(N, ni, nf, stride):\n",
" \"\"\"Group of residual blocks\"\"\"\n",
" start = BasicBlock(ni, nf, stride)\n",
" rest = [BasicBlock(nf, nf) for j in range(1, N)]\n",
" return [start] + rest\n",
"\n",
"class Flatten(nn.Module):\n",
" def __init__(self): super().__init__()\n",
" def forward(self, x): return x.view(x.size(0), -1)\n",
"\n",
"class WideResNet(nn.Module):\n",
" def __init__(self, n_groups, N, n_classes, k=1, n_start=16):\n",
" super().__init__() \n",
" # Increase channels to n_start using conv layer\n",
" layers = [conv_2d(3, n_start)]\n",
" n_channels = [n_start]\n",
" \n",
" # Add groups of BasicBlock(increase channels & downsample)\n",
" for i in range(n_groups):\n",
" n_channels.append(n_start*(2**i)*k)\n",
" stride = 2 if i>0 else 1\n",
" layers += make_group(N, n_channels[i], \n",
" n_channels[i+1], stride)\n",
" \n",
" # Pool, flatten & add linear layer for classification\n",
" layers += [nn.BatchNorm2d(n_channels[3]), \n",
" nn.ReLU(inplace=True), \n",
" nn.AdaptiveAvgPool2d(1), \n",
" Flatten(), \n",
" nn.Linear(n_channels[3], n_classes)]\n",
" \n",
" self.features = nn.Sequential(*layers)\n",
" \n",
" def forward(self, x): return self.features(x)\n",
" \n",
"def wrn_22(): \n",
" return WideResNet(n_groups=3, N=3, n_classes=10, k=6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training & Evaluation"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a6f9770be1824b62bd7a8c3d895db1cd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=20), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch trn_loss val_loss accuracy \n",
" 0 1.307771 1.355958 0.5027 \n",
" 1 0.973831 1.268146 0.5804 \n",
" 2 0.815618 0.937404 0.6821 \n",
" 3 0.726471 0.901928 0.7004 \n",
" 4 0.654479 0.777541 0.7319 \n",
" 5 0.630079 0.783178 0.7379 \n",
" 6 0.614516 0.817597 0.7293 \n",
" 7 0.606512 0.749424 0.7461 \n",
" 8 0.587174 1.035898 0.6526 \n",
" 9 0.575562 1.696366 0.5554 \n",
" 10 0.566359 0.798111 0.7341 \n",
" 11 0.545117 0.70227 0.7569 \n",
" 12 0.499315 0.611959 0.7922 \n",
" 13 0.469588 0.717421 0.767 \n",
" 14 0.437617 0.695363 0.7639 \n",
" 15 0.401804 0.489137 0.8375 \n",
" 16 0.316073 0.347868 0.8784 \n",
" 17 0.246093 0.283443 0.9038 \n",
" 18 0.198445 0.247639 0.9156 \n",
" 19 0.149643 0.219992 0.9242 \n",
"\n",
"CPU times: user 15min 20s, sys: 7min 21s, total: 22min 42s\n",
"Wall time: 22min 27s\n"
]
}
],
"source": [
"%%time\n",
"learn = get_learner(wrn_22(), 128)\n",
"learn.clip = 1e-1\n",
"learn.fit(1.5, 1, wds=1e-4, cycle_len=20, use_clr_beta=(12, 15, 0.95, 0.85))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \r"
]
},
{
"data": {
"text/plain": [
"0.9287"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_TTA_accuracy(learn)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"learn.sched.plot_loss()\n",
"learn.sched.plot_lr()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@sidujjain
Copy link

sidujjain commented Jan 23, 2019

Great stuff!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment