Skip to content

Instantly share code, notes, and snippets.

@NTT123
Created July 21, 2018 05:50
Show Gist options
  • Save NTT123/37b65b2139375ca544267e00d2578648 to your computer and use it in GitHub Desktop.
Save NTT123/37b65b2139375ca544267e00d2578648 to your computer and use it in GitHub Desktop.
ResNet.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "ResNet.ipynb",
"version": "0.3.2",
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"[View in Colaboratory](https://colab.research.google.com/gist/NTT123/37b65b2139375ca544267e00d2578648/resnet.ipynb)"
]
},
{
"metadata": {
"id": "o9_uKhBn-bqf",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"## Deep Residual Learning for Image Recognition\n",
"Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun"
]
},
{
"metadata": {
"id": "JL9i9zB2k8Hb",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"# <img width=\"700\" src=\"data:image/png;base64,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JW8TffF1YUK+4H7jGL63cAifYYPtIUOGdCh/46B+8sEaUj5bCFzgZmE9Bf+zGLOUWPx34/+I/7/cLM67sIaV1/f48ePzXU0/ky/1aNNfFtxLJrQLC3MpmA0HM3Fe8P/Lb4c1pHzWlsiINKTlfCZ0fcYmZleiDm3V6cIaaZHU3239jA4z8sROE+he3vjNyu8V8rXGm/+mMQsLs6EMGzbMz8EMLTYNX2RTmJPB8zHnQ2GrUDa+t8Zog5c5EHyxHZum0b+zXhpn2kisDyLQjwjMwLX225aILlwEREAEREAEOiFADxYzE9F7QfiJTAREQAT6goDCVPqCqvIUAREQARFoGwLyWbVNVepCRKAlCUiMt2S1qFAiIAIiIAL/3wQYh4ExE41MBERABPqKgMJU+oqs8hUBERABEfjPEiA0JUQ4s5DYaqo+OPE/e0EquAiIQMsSkBhv2apRwURABERABERABERABNqdgMJU2r2GdX0iIAIiIAIiIAIiIAItS0BivGWrRgUTAREQAREQAREQARFodwIS4+1ew7o+ERABERABERABERCBliUgMd6yVaOCiYAIiIAIiIAIiIAItDsBifF2r2FdnwiIgAiIgAiIgAiIQMsSkBhv2apRwURABERABERABERABNqdgMR4u9ewrk8EREAEREAEREAERKBlCUiMt2zVqGAiIAIiIAIiIAIiIALtTkBivN1rWNcnAiIgAiIgAiIgAiLQsgQkxlu2alQwERABERABERABERCBdicgMd7uNazrEwEREAEREAEREAERaFkCEuMtWzUqmAiIgAiIgAiIgAiIQLsTkBhv9xrW9YmACIiACIiACIiACLQsAYnxlq0aFUwEREAEREAEREAERKDdCUiMt3sN6/pEQAREQAREQAREQARaloDEeMtWjQomAiIgAiIgAiIgAiLQ7gQkxtu9hnV9IiACIiACIiACIiACLUtAYrxlq0YFEwEREAEREAEREAERaHcCEuPtXsO6PhHohwReeOGFdPPNN/8nrvzbb79N11xzTTr00EPTuHHj0h9//NFn5e6OyxNPPJEOPvjgWs5/++23pxNPPLFpXr/++mvaZ5990ttvv910P18OHz48Pf/8853ur7rjuuuuS2PHjq2aXOlEQARE4F8nIDH+ryPXCUVABPqawDPPPJPuvvvuWk7z888/p4ceeqjPRPKtt96annvuubTbbrulGWecMf3000+1lLtZJt1x+f333xONgzoMwf3DDz80zaooCj9PVw0PykF5emu//PJLnzLtbfl0vAiIgAhIjOseEAERaDsCw4YNS+ecc04t1/Xpp5+6ZxVR1xf27LPPpk033TRtvPHG6aCDDkrzzDNPX5zG86yTS58VUhmLgAiIQD8jIDHezypclysCrUjg3XffTR9++GGHon3yyScdwhi+++67RJjF999/3yHdW2+9lb744ov0559/uocZbyvb5RCIzo5HbHN+jHO+8sorDY/sjz/+6N+xj3QfffRR+u2339hMeH5ffPHF9OabbyY8vV0Z5SEE5PXXX/dyRlrO9/HHH/smeTcT/FwvZcJI+9577/lnXj744IP01FNPJbz3uVGeqVOnppdeeqlxLexvxgVuXD/p49oiL7775ptvYjN99dVX6Y033mhs8wEOL7/8svPpsKPiBufEY1+u/2aHU87HH3/cr7vZfhgS2kK9dWZ43OESzHpSj53lqe9FQAREoDcEBvTmYB0rAiIgAnUQePjhh9MjjzySzj777EZ2559/fho4cGBadtll0xVXXOFhJ/POO68Lyj322CPtsssunvbCCy9M66+/fnrwwQddrBJ/PWXKlPToo4+m008/3dN0dfydd97p4m7++ef3MhAmstJKK6WTTz45PfbYY+mqq67yPE499dQ0wwwzpMMPPzzNPvvs6dhjj00LLrigh68g7Ij3nnXWWRvljw+33HKL50Hazz//PC2//PLpqKOOcg84eSIGiWu+6aabPE567bXXjkP9/bXXXktnnHGG7zv33HM9nGXJJZdMZ511lgt8GCFCt99+e99Hfscdd5yHgXBN77//fjr++OP9vGUuCHsYcTzl+/LLL9Occ87ZOD/7hgwZkjbffHP/DiF82223NXod4EM89gILLOD1svrqq6ejjz66cXx3HxDXxJXPNNNMHtJy4IEHpkGDBk1zGA0Grpd7ZJFFFnHhT5lGjhzpadnPvUM4EdeM4N53333T1ltv3SEv2Jx00klpscUWS6NGjfJ6r1qPHTLShgiIgAjUSEBivEaYykoERGD6CGy44YbpxhtvdHG01FJLuZjC27rnnnumv/76y2N+zzvvPBdad911l6fdeeedXRxzRkTmDjvskNZdd10XdnkpqhyPBxgxe/nll6enn346jRkzxoUzgo/yjB49OiGEQ2xfeeWVaemll04nnHCCn4pthOwSSyyRnzq98847iX0hMvFsI1avv/76tN9++7nA3GuvvdKIESPSeuut1+HYfAOxSbkQpAsttJA3TPDKjx8/3sUzgh1RCwO8vojsCRMmpJlnnjnde++96euvv86z8894z7km8jvmmGPSwgsvnB544IF02WWXTZO2sy/w7MNmjTXW8Lo75JBD3MNNY6GK3XfffemUU05Jiy66aKLxRZx/MzFOncf1Ux9PPvmkH0fDZYMNNkjs5zsaNyussIKnvf/++zuIce4DGhezzTZbopw0rCZPnlypHqtci9KIgAiIwPQSUJjK9JLTcSIgArURwLuLtxJvNoYHFg/nyiuv7IMaEatsE2pCWsIl8HKG4anecsst03zzzRdfNd4ZFNnd8YjdnXbaKQ0YMCAh8BBqCE0MEYexLwzxiADGm02ZiMUuC3HSEkKCgN9kk0380MUXXzzhPSbcpidG+YgrR4giJgl5wZONlxphzwBQwj0IIUFU8/nSSy91j/fgwYPTOuusM83p8NITYgM3jsEQ7z2xHXfc0YU4YSHUzxxzzNEIu6mSD+XimjjvRhtt5KEyzUJMENrcC6TFOI5GRMy2wn56MxDi2FprreWeb9/4++WSSy5xj/qRRx7ZuM6q9Zjno88iIAIiUDeBf54udees/ERABESgBwQQY4jxXXfd1d8JPUEUY3isCYlAGCNMy4ZQ68q6Ox4RR6gEFu8hwuMdUR+21VZbeXz3pEmT0rXXXps222wzn6pvlllmiST+Trw1jYzIky/xqIeI7JC4iw04IDbD8HQTTpLHeCOM8UjTIEFwEvrCgFDE/wEHHODe5ziedxo0GGEzYc3Yxj7e8/OxjWeZBgHXSWMl4rDZV8VWW221RjLYwZpGVh4qQwLyz9PyHdcas7XAY9VVV+XrpkbYymeffeahQTTcwqrWY6TXuwiIgAj0BYF/ni59kbvyFAEREIGKBAhVYdAlAzLxHCPOsVdffdVFHyEIF198cdp///2nyZGY5c6syvG5WC7nE2I83tmPON5uu+28PMSQE/NOqETZ8N4Ss5178fFGE/fcE8NzPNdcczUO4XoRrIS4xN/uu+/e6BlYc80102mnneZhGQwApTFStoHWw4CAzge6EhqUGwI5F9i5R5/BpldYLP/QoUM9XIbQnrzBkufT2ec8PfXEdeJhLxu9APnAUUJsuE+CY3k/dZUPhmWswRFHHOFhQ5Q5rGo9Rnq9i4AIiEBfEJAY7wuqylMERKDHBJZbbjkXVwzInHvuudMqq6zieeDVxPDKMuDvnnvu8e2qL709Hk82oo2YZWLLmZGEeGzitRF9eOUJRWGgadmIZ+bYq6++2uPg8fwjaGNAZDl91W0aKuRDzDWik/hxQnEQzoRs4BlnIOoyyyzj4SzNyka4C952Qm0IucHLzXtueJ8ZGBshOYS2hNHA4NzUC152Yv57aghqjoct8epwgVfZCPNBjFNGvOGUmXCWiC+nIUdeeOkpyw033OADcPN8uBZ6Cu644w6/JvZVrcc8H30WAREQgboJKEylbqLKTwREYLoJIKpYOXObbbZpiDLigwlRQEghjAnHYG7uqtbb4/GqIhLPPPNMj1Nm4CVx1szeQaw4opbBl+UwCspHTPJhhx2WLrroIheKeODxqG+xxRZVi980HWExTAVIXPgFF1yQiEXfe++9fZYXvOIM2mQFSzzPK664YoeBjHmGHMNsKAzgJMxj2223TRMnTmwkgTUzuTA7C4NjuW5mn8HgQkgRA2uJFScvhHsVwwNO3vQm0KjB003d4+VvZohxpnGEIwM96RVgEGbEkMODHgjKTi8AjQ/qqWyEPjE2AGbcS1XrsZyPtkVABESgTgIz2I9g1xPk1nk25SUCIiAC00mAeOauwkm6y7a3x+PBRUTmnls80Yjx/Ltm5eBnFo8t8dy9uYZy3uSLhzgPYYk0zLfOfsrcnZE2H6BaTt/V/t5yZQAscdxVysm5iB8nTKcZc/bjsadx0BOrWo89yVNpRUAERKAqAYnxqqSUTgREQAREQAREQAREQARqJqCY8ZqBKjsREAEREAEREAEREAERqEpAYrwqKaUTAREQAREQAREQAREQgZoJSIzXDFTZiYAIiIAIiIAIiIAIiEBVAhLjVUkpnQiIgAiIgAiIgAiIgAjUTEBivGagyk4EREAEREAEREAEREAEqhKQGK9KSulEQAREQAREQAREQAREoGYCEuM1A1V2IiACIiACIiACIiACIlCVgMR4VVJKJwIiIAIiIAIiIAIiIAI1E5AYrxmoshMBERABERABERABERCBqgQkxquSUjoREAEREAEREAEREAERqJmAxHjNQJWdCIiACIiACIiACIiACFQlIDFelZTSiYAIiIAIiIAIiIAIiEDNBCTGawaq7ERABERABERABERABESgKgGJ8aqklE4EREAEREAEREAEREAEaiYgMV4zUGUnAiIgAiIgAiIgAiIgAlUJSIxXJaV0IiACIiACIiACIiACIlAzAYnxmoEqOxEQAREQAREQAREQARGoSuD/AB22O3zDVuBwAAAAAElFTkSuQmCC\" alt=\"\" />"
]
},
{
"metadata": {
"id": "-uNfp8m3EVsa",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"#@title Load CIFAR-10 dataset\n",
"# http://pytorch.org/\n",
"from os import path\n",
"from wheel.pep425tags import get_abbr_impl, get_impl_ver, get_abi_tag\n",
"platform = '{}{}-{}'.format(get_abbr_impl(), get_impl_ver(), get_abi_tag())\n",
"\n",
"accelerator = 'cu80' if path.exists('/opt/bin/nvidia-smi') else 'cpu'\n",
"\n",
"!pip install -q http://download.pytorch.org/whl/{accelerator}/torch-0.4.0-{platform}-linux_x86_64.whl torchvision\n",
"import torch\n",
"import torchvision\n",
"import torchvision.transforms as transforms\n",
"transform = transforms.Compose(\n",
" [transforms.ToTensor(),\n",
" transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
"\n",
"testset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
" download=True, transform=transform)\n",
"testloader = torch.utils.data.DataLoader(testset, batch_size=32,\n",
" shuffle=False, num_workers=2)\n",
"\n",
"classes = ('plane', 'car', 'bird', 'cat',\n",
" 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from pylab import rcParams\n",
"rcParams['font.size'] = 14\n",
"plt.style.use('seaborn-white')\n",
"rcParams['figure.figsize'] = 8, 4\n",
"\n",
"# functions to show an image\n",
"\n",
"\n",
"def imshow(img):\n",
" img = img / 2 + 0.5 # unnormalize\n",
" npimg = img.numpy()\n",
" plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
" plt.axis(\"off\")\n",
"\n",
"\n",
"# get some random training images\n",
"dataiter = iter(testloader)\n",
"images, labels = dataiter.next()\n",
"\n",
"# show images\n",
"imshow(torchvision.utils.make_grid(images))\n",
"# print labels\n",
"print(' '.join('%5s' % classes[labels[j]] for j in range(8)))\n",
"\n"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "Sl_bpqCzEe2g",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"from torch import nn"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "MnkbW4AhGRZB",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"device = torch.device(\"cuda\")"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "pBfMX_uQGn5k",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"## Full pre-activation\n",
"\n",
"class ResBlock(nn.Module):\n",
" def __init__(self, filters, downsampling=False):\n",
" super().__init__()\n",
" conv = []\n",
" nfirstFilters = filters\n",
" firstStride = 1\n",
" self.downsampling = downsampling\n",
" \n",
" if downsampling:\n",
" nfirstFilters = filters // 2\n",
" firstStride = 2\n",
" self.pad = nn.Sequential(\n",
" nn.Conv2d(in_channels=nfirstFilters, \n",
" out_channels=filters, \n",
" kernel_size=2, stride=2, padding=0, bias=False),\n",
" nn.BatchNorm2d(filters)\n",
" )\n",
"\n",
" self.F = nn.Sequential(\n",
" nn.BatchNorm2d(nfirstFilters),\n",
" nn.ReLU(),\n",
" nn.Conv2d(in_channels=nfirstFilters, out_channels=filters, \n",
" kernel_size=3, stride=firstStride, padding=1,\n",
" bias=False),\n",
" nn.BatchNorm2d(filters),\n",
" nn.ReLU(),\n",
" nn.Conv2d(in_channels=filters, out_channels=filters, \n",
" kernel_size=3, padding=1, bias=False),\n",
" )\n",
" \n",
" \n",
" #self.relu = nn.ReLU()\n",
" \n",
" def forward(self, x):\n",
" out = self.F(x)\n",
" #print(x.shape)\n",
" #print(out.shape)\n",
" if self.downsampling:\n",
" x = self.pad(x)\n",
" #print(x.shape)\n",
" \n",
" return out + x # self.relu(out + x) "
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "JCcxERE7H4Ry",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "r0vHLgCLGGqw",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"class ResNet(nn.Module):\n",
" def __init__(self, numResBlock=2):\n",
" super().__init__()\n",
" self.F = nn.Sequential()\n",
" \n",
" self.F.add_module(\"conv1\", nn.Conv2d(in_channels=3, out_channels=16, \n",
" kernel_size=3, padding=1))\n",
" self.F.add_module(\"relu1\", nn.ReLU())\n",
" for i in range(numResBlock):\n",
" self.F.add_module(\"res16_{}\".format(i+1), ResBlock(16) )\n",
"\n",
" for i in range(numResBlock):\n",
" if i == 0:\n",
" self.F.add_module(\"res32_{}\".format(i+1), ResBlock(32, downsampling=True) )\n",
" else:\n",
" self.F.add_module(\"res32_{}\".format(i+1), ResBlock(32) )\n",
"\n",
" for i in range(numResBlock):\n",
" if i == 0:\n",
" self.F.add_module(\"res64_{}\".format(i+1), ResBlock(64, downsampling=True) )\n",
" else:\n",
" self.F.add_module(\"res64_{}\".format(i+1), ResBlock(64) )\n",
" \n",
" self.F.add_module(\"reluend\", nn.ReLU())\n",
" self.F.add_module(\"avgpool\", nn.AvgPool2d(kernel_size=8))\n",
" self.fc = nn.Linear(64, 10)\n",
" #self.softmax = nn.Softmax(dim=1)\n",
"\n",
" #for m in self.modules():\n",
" # if isinstance(m, nn.Conv2d):\n",
" # nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')\n",
" # elif isinstance(m, nn.BatchNorm2d):\n",
" # nn.init.constant_(m.weight, 1)\n",
" # nn.init.constant_(m.bias, 0)\n",
" \n",
" def forward(self, x):\n",
" out = self.F(x).view(x.size(0), -1)\n",
" #print(out.shape)\n",
" out = self.fc(out)\n",
" return out\n",
" #return self.softmax(out) \n"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "nnTasgqjGN3B",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"net = ResNet(numResBlock=4)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "BhdRSo7MGY7p",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"net = net.to(device)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "IV6wxlchWGtw",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"nepoch = 1000\n",
"start = 1"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "ZIOoHiWfWoT4",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"lossfn = torch.nn.CrossEntropyLoss()"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "NnlVRcfijZMW",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"#@title\n",
"import matplotlib.pyplot as plt\n",
"from IPython.display import HTML\n",
"from matplotlib import animation\n",
"from IPython import display\n",
"\n",
"def test(net):\n",
" net.eval()\n",
" # get some random training images\n",
" dataiter = iter(testloader) \n",
" images, labels = dataiter.next()\n",
" _, indices = torch.max(net(images.to(device)), dim=1)\n",
" indices = indices.detach().cpu()\n",
" # show images\n",
" imshow(torchvision.utils.make_grid(images))\n",
" # print labels\n",
" display.clear_output(wait=True)\n",
" display.display(plt.gcf())\n",
" print(\"target :\", ' '.join('%5s' % classes[labels[j]] for j in range(8)))\n",
" print(\"predict:\", ' '.join('%5s' % classes[indices[j]] for j in range(8)))\n",
" \n",
" net.train()"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "lsAW1oERD-LP",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "c6b778b1-976c-4dcb-e72b-6da2a4830e72"
},
"cell_type": "code",
"source": [
"testset.test_data.shape"
],
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(10000, 32, 32, 3)"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"metadata": {
"id": "qrw1byndH89m",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"\n",
"def trainerr(net):\n",
" net.eval()\n",
" testloader1 = torch.utils.data.DataLoader(trainset, batch_size=1000,\n",
" shuffle=False, num_workers=0)\n",
" \n",
" s = 0.0\n",
" for ii, (images,labels) in enumerate(testloader1, 0): \n",
" _, indices = torch.max(net(images.to(device)), dim=1)\n",
" indices = indices.detach().cpu()\n",
" s = s + torch.sum((labels == indices).float()) \n",
" \n",
" print(\"test mis: \", (1-s / 50000)*100)\n",
" net.train()"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "tpo7OS_DlRbj",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"\n",
"def testerr(net):\n",
" net.eval()\n",
" testloader1 = torch.utils.data.DataLoader(testset, batch_size=1000,\n",
" shuffle=False, num_workers=0)\n",
" \n",
" s = 0.0\n",
" for ii, (images,labels) in enumerate(testloader1, 0): \n",
" _, indices = torch.max(net(images.to(device)), dim=1)\n",
" indices = indices.detach().cpu()\n",
" s = s + torch.sum((labels == indices).float()) \n",
" \n",
" print(\"test mis: \", (1-s / 10000)*100)\n",
" net.train()"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "TA2FyZvnDvy1",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"##testerr(net)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "eQb1Sej6Rr0a",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "1399865b-4c5f-4af0-d7d5-732390d7e6a6"
},
"cell_type": "code",
"source": [
"trans = transforms.Compose(\n",
" [\n",
" transforms.RandomCrop(32, padding=4),\n",
" transforms.RandomHorizontalFlip(),\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),\n",
" ]\n",
")\n",
"\n",
"\n",
"trainset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
" download=True, transform=trans)\n",
"\n",
"\n",
"trainloader = torch.utils.data.DataLoader(trainset, batch_size=32,\n",
" shuffle=True, num_workers=2)\n",
"\n"
],
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"text": [
"Files already downloaded and verified\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "-LofpOq-WoAp",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"optimizer = torch.optim.SGD(net.parameters(), lr=1e-1, weight_decay=1e-4, momentum=0.9, )\n",
"scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.1)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "mDsKX920WJjR",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"los = None\n",
"testloader = torch.utils.data.DataLoader(testset, batch_size=8,\n",
" shuffle=True, num_workers=2)\n",
"\n",
"for epoch in range(start, nepoch+1):\n",
" \n",
" trainloader=torch.utils.data.DataLoader(trainset, batch_size=256, shuffle=True, num_workers=1)\n",
" scheduler.step()\n",
" print(scheduler.last_epoch, \" lr \", scheduler.get_lr())\n",
" for ii, (X,targetY) in enumerate(trainloader, 0):\n",
"\n",
" y = net(X.to(device))\n",
"\n",
" loss = lossfn(y, targetY.to(device))\n",
" optimizer.zero_grad()\n",
"\n",
" loss.backward()\n",
"\n",
" optimizer.step()\n",
" if los == None:\n",
" los = loss.item()\n",
" else:\n",
" los = los * 0.99 + (1-0.99)*loss.item()\n",
" test(net)\n",
" print(\"epoch: {} loss: {}\".format( epoch ,los))\n",
" if epoch % 3 == 0:\n",
" testerr(net)\n"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "sl91jgagnkcZ",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "NSOIOY9bDJfV",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "c_o2VSg0DKFB",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
""
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment