Skip to content

Instantly share code, notes, and snippets.

@rlandingin
Created January 28, 2021 17:16
Show Gist options
  • Save rlandingin/e09e2e568e964466fc3b5634bf18d87a to your computer and use it in GitHub Desktop.
Save rlandingin/e09e2e568e964466fc3b5634bf18d87a to your computer and use it in GitHub Desktop.
fastai-cifar-gpu.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "fastai-cifar-gpu.ipynb",
"provenance": [],
"mount_file_id": "1_vXV5y_3DPPba4kp2zw6rVc2-gEtMzul",
"authorship_tag": "ABX9TyMLoLR74pK4hCncpuf4voOZ",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU",
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"5cf9fdb7843c42b5ab6595b5cb50c73a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_8a75589f22884154beae173fddd6d575",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_f31fe24dfbaa4f66a3c2f398dfbd0ed6",
"IPY_MODEL_cdfd1c47c24945ff973b605c56311176"
]
}
},
"8a75589f22884154beae173fddd6d575": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"f31fe24dfbaa4f66a3c2f398dfbd0ed6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_5d97985e1dc240c9ac2198302058e438",
"_dom_classes": [],
"description": "100%",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 87306240,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 87306240,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_b4dd97f7e96f40e5bba7bc9be52e8abc"
}
},
"cdfd1c47c24945ff973b605c56311176": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_18b7a9e857b947149304e9172c053e7f",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "​",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 83.3M/83.3M [00:11<00:00, 7.38MB/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_3add3ce561e3463ebcf9d0e136c03515"
}
},
"5d97985e1dc240c9ac2198302058e438": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "initial",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"b4dd97f7e96f40e5bba7bc9be52e8abc": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"18b7a9e857b947149304e9172c053e7f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"3add3ce561e3463ebcf9d0e136c03515": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/rlandingin/e09e2e568e964466fc3b5634bf18d87a/fastai-cifar-gpu.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UAmBO7ecDEwu",
"outputId": "76a37296-132f-42de-824d-8d3bed6b47ed"
},
"source": [
"!pip install -Uqq fastai --upgrade"
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": [
"\u001b[K |████████████████████████████████| 194kB 8.9MB/s \n",
"\u001b[K |████████████████████████████████| 61kB 7.9MB/s \n",
"\u001b[?25h"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "o6N4vdSMu5Nd"
},
"source": [
""
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "34ufhmYNDR8-",
"outputId": "ce274561-41c9-4b92-aed3-7a5a6f24893d"
},
"source": [
"# setup dirs to see data and models on colab\n",
"!curl -s https://course19.fast.ai/setup/colab | bash"
],
"execution_count": 21,
"outputs": [
{
"output_type": "stream",
"text": [
"Updating fastai...\n",
"Done.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9JP8Kxl3DZ3l",
"outputId": "c2e461a1-ffe1-439a-fdce-4ae28da73104"
},
"source": [
"# printout torch and fastai versions used\n",
"!pip freeze | grep torch\n",
"!pip freeze | grep fast"
],
"execution_count": 20,
"outputs": [
{
"output_type": "stream",
"text": [
"torch==1.7.0+cu101\n",
"torchsummary==1.5.1\n",
"torchtext==0.3.1\n",
"torchvision==0.8.1+cu101\n",
"fastai==2.2.5\n",
"fastcore==1.3.19\n",
"fastdtw==0.3.4\n",
"fastprogress==1.0.0\n",
"fastrlock==0.5\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "-uo6v-cuDfKs"
},
"source": [
"from fastai.vision.all import *"
],
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"id": "guhIGE2lDmMp",
"outputId": "dffc27b8-69fc-41ed-e706-7233d9675f09"
},
"source": [
"path = untar_data(URLs.CIFAR); Path.BASE_PATH = path; path.ls()"
],
"execution_count": 5,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(#3) [Path('train'),Path('labels.txt'),Path('test')]"
]
},
"metadata": {
"tags": []
},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "j1rgQbvvDqch",
"outputId": "7150af72-fef6-427c-c3b3-1dd227fa9993"
},
"source": [
"# size up to 96 and scale down to 32 with random resize crop\n",
"data = DataBlock(\n",
" blocks=(ImageBlock, CategoryBlock),\n",
" get_items=get_image_files,\n",
" get_y=parent_label,\n",
" splitter=GrandparentSplitter(valid_name='test'),\n",
" item_tfms=Resize(96), \n",
" batch_tfms=[*aug_transforms(size=32, min_scale=0.8, max_zoom=1.2,), Normalize.from_stats(*imagenet_stats)]\n",
")\n",
"data.summary(path)"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
"Setting-up type transforms pipelines\n",
"Collecting items from /root/.fastai/data/cifar10\n",
"Found 60000 items\n",
"2 datasets of sizes 50000,10000\n",
"Setting up Pipeline: PILBase.create\n",
"Setting up Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
"\n",
"Building one sample\n",
" Pipeline: PILBase.create\n",
" starting from\n",
" /root/.fastai/data/cifar10/train/cat/895_cat.png\n",
" applying PILBase.create gives\n",
" PILImage mode=RGB size=32x32\n",
" Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
" starting from\n",
" /root/.fastai/data/cifar10/train/cat/895_cat.png\n",
" applying parent_label gives\n",
" cat\n",
" applying Categorize -- {'vocab': None, 'sort': True, 'add_na': False} gives\n",
" TensorCategory(3)\n",
"\n",
"Final sample: (PILImage mode=RGB size=32x32, TensorCategory(3))\n",
"\n",
"\n",
"Collecting items from /root/.fastai/data/cifar10\n",
"Found 60000 items\n",
"2 datasets of sizes 50000,10000\n",
"Setting up Pipeline: PILBase.create\n",
"Setting up Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
"Setting up after_item: Pipeline: Resize -- {'size': (96, 96), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} -> ToTensor\n",
"Setting up before_batch: Pipeline: \n",
"Setting up after_batch: Pipeline: IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} -> Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} -> RandomResizedCropGPU -- {'size': (32, 32), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} -> Brightness -- {'max_lighting': 0.2, 'p': 1.0, 'draw': None, 'batch': False} -> Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)}\n",
"\n",
"Building one batch\n",
"Applying item_tfms to the first sample:\n",
" Pipeline: Resize -- {'size': (96, 96), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} -> ToTensor\n",
" starting from\n",
" (PILImage mode=RGB size=32x32, TensorCategory(3))\n",
" applying Resize -- {'size': (96, 96), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} gives\n",
" (PILImage mode=RGB size=96x96, TensorCategory(3))\n",
" applying ToTensor gives\n",
" (TensorImage of size 3x96x96, TensorCategory(3))\n",
"\n",
"Adding the next 3 samples\n",
"\n",
"No before_batch transform to apply\n",
"\n",
"Collating items in a batch\n",
"\n",
"Applying batch_tfms to the batch built\n",
" Pipeline: IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} -> Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} -> RandomResizedCropGPU -- {'size': (32, 32), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} -> Brightness -- {'max_lighting': 0.2, 'p': 1.0, 'draw': None, 'batch': False} -> Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)}\n",
" starting from\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying RandomResizedCropGPU -- {'size': (32, 32), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} gives\n",
" (TensorImage of size 4x3x32x32, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Brightness -- {'max_lighting': 0.2, 'p': 1.0, 'draw': None, 'batch': False} gives\n",
" (TensorImage of size 4x3x32x32, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)} gives\n",
" (TensorImage of size 4x3x32x32, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "UObd1gnUE4Rj"
},
"source": [
"dls = data.dataloaders(path, bs=64)"
],
"execution_count": 7,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 536
},
"id": "bV45bSvDFMMi",
"outputId": "9544cbd4-5d38-4440-a6b7-269fe5d2ed75"
},
"source": [
"dls.show_batch()"
],
"execution_count": 8,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 648x648 with 9 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 103,
"referenced_widgets": [
"5cf9fdb7843c42b5ab6595b5cb50c73a",
"8a75589f22884154beae173fddd6d575",
"f31fe24dfbaa4f66a3c2f398dfbd0ed6",
"cdfd1c47c24945ff973b605c56311176",
"5d97985e1dc240c9ac2198302058e438",
"b4dd97f7e96f40e5bba7bc9be52e8abc",
"18b7a9e857b947149304e9172c053e7f",
"3add3ce561e3463ebcf9d0e136c03515"
]
},
"id": "Gc0tsLHFFKft",
"outputId": "895bf6cf-b761-4283-b47d-dbe18eeec19b"
},
"source": [
"learner = cnn_learner(dls,resnet34, metrics=accuracy)"
],
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading: \"https://download.pytorch.org/models/resnet34-333f7ec4.pth\" to /root/.cache/torch/hub/checkpoints/resnet34-333f7ec4.pth\n"
],
"name": "stderr"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5cf9fdb7843c42b5ab6595b5cb50c73a",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=87306240.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 391
},
"id": "9j8Z3DLTFUex",
"outputId": "d7e58c98-dfcb-403f-f7aa-b9793a78cc8f"
},
"source": [
"learner.fine_tune(freeze_epochs=3, epochs=7)"
],
"execution_count": 10,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>2.097734</td>\n",
" <td>1.658079</td>\n",
" <td>0.443000</td>\n",
" <td>01:49</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>1.562185</td>\n",
" <td>1.413626</td>\n",
" <td>0.503700</td>\n",
" <td>01:50</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>1.322948</td>\n",
" <td>1.221668</td>\n",
" <td>0.568000</td>\n",
" <td>01:48</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.965432</td>\n",
" <td>0.871374</td>\n",
" <td>0.701100</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.804247</td>\n",
" <td>0.727025</td>\n",
" <td>0.749300</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.712187</td>\n",
" <td>0.666176</td>\n",
" <td>0.774700</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.608476</td>\n",
" <td>0.595483</td>\n",
" <td>0.796100</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.543641</td>\n",
" <td>0.542046</td>\n",
" <td>0.812900</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>0.478241</td>\n",
" <td>0.524682</td>\n",
" <td>0.820500</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>0.457521</td>\n",
" <td>0.518430</td>\n",
" <td>0.826200</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "3PL_CZrCKGwE",
"outputId": "dcf4994f-9490-4f03-d52f-1a7097d90d0a"
},
"source": [
"learner.save('stage-1')"
],
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Path('models/stage-1.pth')"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 265
},
"id": "CGF0zJkIKLm8",
"outputId": "ebe15182-a02a-400b-b515-44b6ddf81c20"
},
"source": [
"learner.recorder.plot_loss()"
],
"execution_count": 12,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 265
},
"id": "rIE_lBJFKVab",
"outputId": "23ae7aba-26cd-4f7a-8101-6277d5c08237"
},
"source": [
"learner.recorder.plot_sched()"
],
"execution_count": 14,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x288 with 2 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "jz_6y5NiKcua",
"outputId": "91b975de-3681-44c4-bae3-212fdb941f23"
},
"source": [
"learner.summary()"
],
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"Sequential (Input shape: 64)\n",
"============================================================================\n",
"Layer (type) Output Shape Param # Trainable \n",
"============================================================================\n",
" 64 x 64 x 16 x 16 \n",
"Conv2d 9408 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"MaxPool2d \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"____________________________________________________________________________\n",
" 64 x 128 x 4 x 4 \n",
"Conv2d 73728 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 8192 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"____________________________________________________________________________\n",
" 64 x 256 x 2 x 2 \n",
"Conv2d 294912 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 32768 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"____________________________________________________________________________\n",
" 64 x 512 x 1 x 1 \n",
"Conv2d 1179648 True \n",
"BatchNorm2d 1024 True \n",
"ReLU \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"Conv2d 131072 True \n",
"BatchNorm2d 1024 True \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"ReLU \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"ReLU \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"AdaptiveAvgPool2d \n",
"AdaptiveMaxPool2d \n",
"Flatten \n",
"BatchNorm1d 2048 True \n",
"Dropout \n",
"____________________________________________________________________________\n",
" 64 x 512 \n",
"Linear 524288 True \n",
"ReLU \n",
"BatchNorm1d 1024 True \n",
"Dropout \n",
"____________________________________________________________________________\n",
" 64 x 10 \n",
"Linear 5120 True \n",
"____________________________________________________________________________\n",
"\n",
"Total params: 21,817,152\n",
"Total trainable params: 21,817,152\n",
"Total non-trainable params: 0\n",
"\n",
"Optimizer used: <function Adam at 0x7fcf27dadea0>\n",
"Loss function: FlattenedLoss of CrossEntropyLoss()\n",
"\n",
"Model unfrozen\n",
"\n",
"Callbacks:\n",
" - TrainEvalCallback\n",
" - Recorder\n",
" - ProgressCallback"
]
},
"metadata": {
"tags": []
},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 301
},
"id": "ukimSX3OKmRW",
"outputId": "ff5c705c-b499-4980-dce5-79334ac40fa3"
},
"source": [
"learner.lr_find()"
],
"execution_count": 16,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"SuggestedLRs(lr_min=3.981071586167673e-07, lr_steep=1.0964781722577754e-06)"
]
},
"metadata": {
"tags": []
},
"execution_count": 16
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"id": "fNRClgMfKp5e",
"outputId": "17a365a6-6467-462e-a962-2a9d61e0a22e"
},
"source": [
"learner.fit_one_cycle(5, lr_max=slice(1e-6, 3e-4), wd=2e-5, moms=(0.9,0.85,0.9))"
],
"execution_count": 17,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.473553</td>\n",
" <td>0.516631</td>\n",
" <td>0.826100</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.451531</td>\n",
" <td>0.518295</td>\n",
" <td>0.824200</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.443857</td>\n",
" <td>0.509724</td>\n",
" <td>0.828600</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.434907</td>\n",
" <td>0.506867</td>\n",
" <td>0.830600</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.432730</td>\n",
" <td>0.521056</td>\n",
" <td>0.828500</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JqhejbzOLU47",
"outputId": "ec3a2cb9-9eab-445c-97ee-5fec9e47815d"
},
"source": [
"learner.save('stage-2')"
],
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Path('models/stage-2.pth')"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "yrLl38kGN7EY"
},
"source": [
"data2 = data.new(item_tfms=Resize(96), batch_tfms=[*aug_transforms(size=64, min_scale=0.8, max_zoom=1.1), Normalize.from_stats(*imagenet_stats)])"
],
"execution_count": 27,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "2RuIHucUP3j8"
},
"source": [
"dls2 = data2.dataloaders(path, bs=64)"
],
"execution_count": 28,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-FJ2-GBjQAg9"
},
"source": [
"learner.dls = dls2"
],
"execution_count": 29,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "JuPDf4O6QIqd",
"outputId": "45a27b49-4107-4785-8015-5b902de97aa0"
},
"source": [
"learner.summary()"
],
"execution_count": 30,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"Sequential (Input shape: 64)\n",
"============================================================================\n",
"Layer (type) Output Shape Param # Trainable \n",
"============================================================================\n",
" 64 x 64 x 32 x 32 \n",
"Conv2d 9408 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"MaxPool2d \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"ReLU \n",
"Conv2d 36864 True \n",
"BatchNorm2d 128 True \n",
"____________________________________________________________________________\n",
" 64 x 128 x 8 x 8 \n",
"Conv2d 73728 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 8192 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"ReLU \n",
"Conv2d 147456 True \n",
"BatchNorm2d 256 True \n",
"____________________________________________________________________________\n",
" 64 x 256 x 4 x 4 \n",
"Conv2d 294912 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 32768 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"ReLU \n",
"Conv2d 589824 True \n",
"BatchNorm2d 512 True \n",
"____________________________________________________________________________\n",
" 64 x 512 x 2 x 2 \n",
"Conv2d 1179648 True \n",
"BatchNorm2d 1024 True \n",
"ReLU \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"Conv2d 131072 True \n",
"BatchNorm2d 1024 True \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"ReLU \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"ReLU \n",
"Conv2d 2359296 True \n",
"BatchNorm2d 1024 True \n",
"____________________________________________________________________________\n",
" [] \n",
"AdaptiveAvgPool2d \n",
"AdaptiveMaxPool2d \n",
"Flatten \n",
"BatchNorm1d 2048 True \n",
"Dropout \n",
"____________________________________________________________________________\n",
" 64 x 512 \n",
"Linear 524288 True \n",
"ReLU \n",
"BatchNorm1d 1024 True \n",
"Dropout \n",
"____________________________________________________________________________\n",
" 64 x 10 \n",
"Linear 5120 True \n",
"____________________________________________________________________________\n",
"\n",
"Total params: 21,817,152\n",
"Total trainable params: 21,817,152\n",
"Total non-trainable params: 0\n",
"\n",
"Optimizer used: <function Adam at 0x7fcf27dadea0>\n",
"Loss function: FlattenedLoss of CrossEntropyLoss()\n",
"\n",
"Model unfrozen\n",
"\n",
"Callbacks:\n",
" - TrainEvalCallback\n",
" - Recorder\n",
" - ProgressCallback"
]
},
"metadata": {
"tags": []
},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "rSMo1gQ8QLzY",
"outputId": "02fb5bd2-33c8-45fe-8020-0b6ce59f031a"
},
"source": [
"data2.summary(path)"
],
"execution_count": 31,
"outputs": [
{
"output_type": "stream",
"text": [
"Setting-up type transforms pipelines\n",
"Collecting items from /root/.fastai/data/cifar10\n",
"Found 60000 items\n",
"2 datasets of sizes 50000,10000\n",
"Setting up Pipeline: PILBase.create\n",
"Setting up Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
"\n",
"Building one sample\n",
" Pipeline: PILBase.create\n",
" starting from\n",
" /root/.fastai/data/cifar10/train/cat/895_cat.png\n",
" applying PILBase.create gives\n",
" PILImage mode=RGB size=32x32\n",
" Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
" starting from\n",
" /root/.fastai/data/cifar10/train/cat/895_cat.png\n",
" applying parent_label gives\n",
" cat\n",
" applying Categorize -- {'vocab': None, 'sort': True, 'add_na': False} gives\n",
" TensorCategory(3)\n",
"\n",
"Final sample: (PILImage mode=RGB size=32x32, TensorCategory(3))\n",
"\n",
"\n",
"Collecting items from /root/.fastai/data/cifar10\n",
"Found 60000 items\n",
"2 datasets of sizes 50000,10000\n",
"Setting up Pipeline: PILBase.create\n",
"Setting up Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
"Setting up after_item: Pipeline: Resize -- {'size': (96, 96), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} -> ToTensor\n",
"Setting up before_batch: Pipeline: \n",
"Setting up after_batch: Pipeline: IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} -> Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} -> RandomResizedCropGPU -- {'size': (64, 64), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} -> Brightness -- {'max_lighting': 0.2, 'p': 1.0, 'draw': None, 'batch': False} -> Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)}\n",
"\n",
"Building one batch\n",
"Applying item_tfms to the first sample:\n",
" Pipeline: Resize -- {'size': (96, 96), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} -> ToTensor\n",
" starting from\n",
" (PILImage mode=RGB size=32x32, TensorCategory(3))\n",
" applying Resize -- {'size': (96, 96), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} gives\n",
" (PILImage mode=RGB size=96x96, TensorCategory(3))\n",
" applying ToTensor gives\n",
" (TensorImage of size 3x96x96, TensorCategory(3))\n",
"\n",
"Adding the next 3 samples\n",
"\n",
"No before_batch transform to apply\n",
"\n",
"Collating items in a batch\n",
"\n",
"Applying batch_tfms to the batch built\n",
" Pipeline: IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} -> Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} -> RandomResizedCropGPU -- {'size': (64, 64), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} -> Brightness -- {'max_lighting': 0.2, 'p': 1.0, 'draw': None, 'batch': False} -> Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)}\n",
" starting from\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying RandomResizedCropGPU -- {'size': (64, 64), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} gives\n",
" (TensorImage of size 4x3x64x64, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Brightness -- {'max_lighting': 0.2, 'p': 1.0, 'draw': None, 'batch': False} gives\n",
" (TensorImage of size 4x3x64x64, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)} gives\n",
" (TensorImage of size 4x3x64x64, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "IReuNxwJQXIV",
"outputId": "80b4d66f-5d1b-44dd-f34a-4b64e7e4692f"
},
"source": [
"learner.lr_find()"
],
"execution_count": 32,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"SuggestedLRs(lr_min=6.918309954926372e-05, lr_steep=7.585775847473997e-07)"
]
},
"metadata": {
"tags": []
},
"execution_count": 32
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
},
"id": "2VJoKrU7RmhY",
"outputId": "22806466-ab54-4872-c98c-547e9d90957f"
},
"source": [
"learner.fit_one_cycle(10, lr_max=slice(2e-6, 2e-4))"
],
"execution_count": 33,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.528881</td>\n",
" <td>0.464533</td>\n",
" <td>0.837300</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.392999</td>\n",
" <td>0.349499</td>\n",
" <td>0.881300</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.323074</td>\n",
" <td>0.309998</td>\n",
" <td>0.893700</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.294490</td>\n",
" <td>0.280780</td>\n",
" <td>0.905200</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.238873</td>\n",
" <td>0.267586</td>\n",
" <td>0.908700</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>0.221666</td>\n",
" <td>0.257785</td>\n",
" <td>0.912500</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>0.198466</td>\n",
" <td>0.250700</td>\n",
" <td>0.913500</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>0.188390</td>\n",
" <td>0.254890</td>\n",
" <td>0.914800</td>\n",
" <td>01:52</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>0.182901</td>\n",
" <td>0.253787</td>\n",
" <td>0.914100</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>0.180202</td>\n",
" <td>0.252379</td>\n",
" <td>0.915800</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "xfyizWSOR9Ge",
"outputId": "5cc92f6f-51c8-461c-f1ce-3243766b92b4"
},
"source": [
"learner.save('stage-3')"
],
"execution_count": 34,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Path('models/stage-3.pth')"
]
},
"metadata": {
"tags": []
},
"execution_count": 34
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 265
},
"id": "7iWQ-uJLXvqb",
"outputId": "120d69e1-13e0-4dd0-cdc3-26a0bbf6986e"
},
"source": [
"learner.recorder.plot_loss()"
],
"execution_count": 35,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "vHLe_RcaX1Ct",
"outputId": "8f1c6fd9-4dad-4404-eec0-1b0c0b4d579d"
},
"source": [
"learner.lr_find()"
],
"execution_count": 36,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"SuggestedLRs(lr_min=7.585775847473997e-08, lr_steep=6.309573450380412e-07)"
]
},
"metadata": {
"tags": []
},
"execution_count": 36
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
},
"id": "TcgzaVxrYNUm",
"outputId": "2a749477-7afa-4a3f-e8de-128e2e2c68cc"
},
"source": [
"learner.fit_one_cycle(10,lr_max=slice(3e-7,8e-5), wd=8e-4, moms=(0.75, 0.65, 0.75),pct_start=0.4)"
],
"execution_count": 37,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.178871</td>\n",
" <td>0.250905</td>\n",
" <td>0.916400</td>\n",
" <td>01:52</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.164206</td>\n",
" <td>0.252998</td>\n",
" <td>0.916100</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.163848</td>\n",
" <td>0.254696</td>\n",
" <td>0.915800</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.167524</td>\n",
" <td>0.255029</td>\n",
" <td>0.914700</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.161984</td>\n",
" <td>0.256657</td>\n",
" <td>0.916900</td>\n",
" <td>01:54</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>0.145190</td>\n",
" <td>0.253201</td>\n",
" <td>0.918800</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>0.155030</td>\n",
" <td>0.252263</td>\n",
" <td>0.917700</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>0.158310</td>\n",
" <td>0.255681</td>\n",
" <td>0.917700</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>0.138855</td>\n",
" <td>0.249917</td>\n",
" <td>0.919100</td>\n",
" <td>01:52</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>0.128419</td>\n",
" <td>0.253122</td>\n",
" <td>0.918600</td>\n",
" <td>01:53</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "duIhfjSlZAE9",
"outputId": "77055703-3b58-4466-ff68-9526cd1c7690"
},
"source": [
"learner.save('stage-4')"
],
"execution_count": 38,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Path('models/stage-4.pth')"
]
},
"metadata": {
"tags": []
},
"execution_count": 38
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lSfXqQspdaJM"
},
"source": [
"data3 = data.new(item_tfms=Resize(128), batch_tfms=[*aug_transforms(size=96, min_scale=0.8,max_zoom=1.2,max_lighting=0.4), \n",
" Normalize.from_stats(*imagenet_stats)]\n",
" )"
],
"execution_count": 40,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1qw7YAWKeQdB",
"outputId": "0b479f8b-5aa9-4afa-e5ce-65482be73746"
},
"source": [
"data3.summary(path)"
],
"execution_count": 41,
"outputs": [
{
"output_type": "stream",
"text": [
"Setting-up type transforms pipelines\n",
"Collecting items from /root/.fastai/data/cifar10\n",
"Found 60000 items\n",
"2 datasets of sizes 50000,10000\n",
"Setting up Pipeline: PILBase.create\n",
"Setting up Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
"\n",
"Building one sample\n",
" Pipeline: PILBase.create\n",
" starting from\n",
" /root/.fastai/data/cifar10/train/cat/895_cat.png\n",
" applying PILBase.create gives\n",
" PILImage mode=RGB size=32x32\n",
" Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
" starting from\n",
" /root/.fastai/data/cifar10/train/cat/895_cat.png\n",
" applying parent_label gives\n",
" cat\n",
" applying Categorize -- {'vocab': None, 'sort': True, 'add_na': False} gives\n",
" TensorCategory(3)\n",
"\n",
"Final sample: (PILImage mode=RGB size=32x32, TensorCategory(3))\n",
"\n",
"\n",
"Collecting items from /root/.fastai/data/cifar10\n",
"Found 60000 items\n",
"2 datasets of sizes 50000,10000\n",
"Setting up Pipeline: PILBase.create\n",
"Setting up Pipeline: parent_label -> Categorize -- {'vocab': None, 'sort': True, 'add_na': False}\n",
"Setting up after_item: Pipeline: Resize -- {'size': (128, 128), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} -> ToTensor\n",
"Setting up before_batch: Pipeline: \n",
"Setting up after_batch: Pipeline: IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} -> Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} -> RandomResizedCropGPU -- {'size': (96, 96), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} -> Brightness -- {'max_lighting': 0.4, 'p': 1.0, 'draw': None, 'batch': False} -> Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)}\n",
"\n",
"Building one batch\n",
"Applying item_tfms to the first sample:\n",
" Pipeline: Resize -- {'size': (128, 128), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} -> ToTensor\n",
" starting from\n",
" (PILImage mode=RGB size=32x32, TensorCategory(3))\n",
" applying Resize -- {'size': (128, 128), 'method': 'crop', 'pad_mode': 'reflection', 'resamples': (2, 0), 'p': 1.0} gives\n",
" (PILImage mode=RGB size=128x128, TensorCategory(3))\n",
" applying ToTensor gives\n",
" (TensorImage of size 3x128x128, TensorCategory(3))\n",
"\n",
"Adding the next 3 samples\n",
"\n",
"No before_batch transform to apply\n",
"\n",
"Collating items in a batch\n",
"\n",
"Applying batch_tfms to the batch built\n",
" Pipeline: IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} -> Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} -> RandomResizedCropGPU -- {'size': (96, 96), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} -> Brightness -- {'max_lighting': 0.4, 'p': 1.0, 'draw': None, 'batch': False} -> Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)}\n",
" starting from\n",
" (TensorImage of size 4x3x128x128, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying IntToFloatTensor -- {'div': 255.0, 'div_mask': 1} gives\n",
" (TensorImage of size 4x3x128x128, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Flip -- {'size': None, 'mode': 'bilinear', 'pad_mode': 'reflection', 'mode_mask': 'nearest', 'align_corners': True, 'p': 0.5} gives\n",
" (TensorImage of size 4x3x128x128, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying RandomResizedCropGPU -- {'size': (96, 96), 'min_scale': 0.8, 'ratio': (1, 1), 'mode': 'bilinear', 'valid_scale': 1.0, 'p': 1.0} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Brightness -- {'max_lighting': 0.4, 'p': 1.0, 'draw': None, 'batch': False} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n",
" applying Normalize -- {'mean': tensor([[[[0.4850]],\n",
"\n",
" [[0.4560]],\n",
"\n",
" [[0.4060]]]], device='cuda:0'), 'std': tensor([[[[0.2290]],\n",
"\n",
" [[0.2240]],\n",
"\n",
" [[0.2250]]]], device='cuda:0'), 'axes': (0, 2, 3)} gives\n",
" (TensorImage of size 4x3x96x96, TensorCategory([3, 3, 3, 3], device='cuda:0'))\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GjcWJuL-eYAb"
},
"source": [
"dls3 = data3.dataloaders(path, bs=64)"
],
"execution_count": 42,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "bLhTRKSAeh02"
},
"source": [
"learner.dls = dls3"
],
"execution_count": 43,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "u03feTAXelLn",
"outputId": "e14c99cc-2358-4f6a-b95d-ca8ebb9898f9"
},
"source": [
"learner.lr_find()"
],
"execution_count": 44,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"SuggestedLRs(lr_min=5.754399353463669e-07, lr_steep=7.585775847473997e-07)"
]
},
"metadata": {
"tags": []
},
"execution_count": 44
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
},
"id": "ybnoVxsXeqjr",
"outputId": "c99661ea-e86d-4709-96a6-3ff6e30a4d1f"
},
"source": [
"learner.fit_one_cycle(10, lr_max=slice(1e-6, 5e-5), wd=4e-4, moms=(0.85,0.7,0.85))"
],
"execution_count": 45,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.305300</td>\n",
" <td>0.257448</td>\n",
" <td>0.916300</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.255835</td>\n",
" <td>0.219591</td>\n",
" <td>0.928100</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.235239</td>\n",
" <td>0.203558</td>\n",
" <td>0.933100</td>\n",
" <td>01:57</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.198460</td>\n",
" <td>0.195417</td>\n",
" <td>0.934000</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.179636</td>\n",
" <td>0.189691</td>\n",
" <td>0.935700</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>0.181400</td>\n",
" <td>0.185727</td>\n",
" <td>0.937300</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>0.160581</td>\n",
" <td>0.184527</td>\n",
" <td>0.938800</td>\n",
" <td>01:59</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>0.157073</td>\n",
" <td>0.180746</td>\n",
" <td>0.939100</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>0.153650</td>\n",
" <td>0.177676</td>\n",
" <td>0.940900</td>\n",
" <td>01:59</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>0.155541</td>\n",
" <td>0.178640</td>\n",
" <td>0.938700</td>\n",
" <td>01:58</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TTvNL-DQfIHC",
"outputId": "78976c52-d1cf-42c4-dc82-04dc032770a4"
},
"source": [
"learner.save('stage-5')"
],
"execution_count": 46,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Path('models/stage-5.pth')"
]
},
"metadata": {
"tags": []
},
"execution_count": 46
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "Dc5FvM7pjw5q",
"outputId": "676315dd-8eab-4244-c79f-f5c7e13a869f"
},
"source": [
"learner.lr_find()"
],
"execution_count": 47,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"SuggestedLRs(lr_min=9.12010818865383e-08, lr_steep=6.309573450380412e-07)"
]
},
"metadata": {
"tags": []
},
"execution_count": 47
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "G078fBsgpVZK"
},
"source": [
"learner = cnn_learner(dls3, resnet34, \n",
" metrics=accuracy, \n",
" loss_func=LabelSmoothingCrossEntropy(), \n",
" cbs=MixUp())"
],
"execution_count": 56,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "BvMUkknVqNlj"
},
"source": [
"learner.unfreeze()"
],
"execution_count": 57,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "GafJQ5Cpp-DO"
},
"source": [
"learner.load('stage-5')\n",
"learner.unfreeze()"
],
"execution_count": 58,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "9sktMWtqpwJL",
"outputId": "4736794b-14e4-4a22-dcba-7e79029df47c"
},
"source": [
"learner.lr_find()"
],
"execution_count": 54,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"SuggestedLRs(lr_min=6.918309954926372e-05, lr_steep=9.12010818865383e-07)"
]
},
"metadata": {
"tags": []
},
"execution_count": 54
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "hE22tW_TqIZy"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 669
},
"id": "-cuej1eyj_PK",
"outputId": "34612d34-ff1f-4113-ffc7-3db09c1c7f93"
},
"source": [
"learner.fit_one_cycle(20, lr_max=slice(1e-6,2e-4), wd=1e-5,moms=(0.8,0.6,0.8))"
],
"execution_count": 59,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>accuracy</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>1.726052</td>\n",
" <td>0.994071</td>\n",
" <td>0.936900</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>1.239258</td>\n",
" <td>0.767120</td>\n",
" <td>0.935100</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>1.160746</td>\n",
" <td>0.689779</td>\n",
" <td>0.939800</td>\n",
" <td>01:59</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>1.140134</td>\n",
" <td>0.669125</td>\n",
" <td>0.939100</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>1.132444</td>\n",
" <td>0.663442</td>\n",
" <td>0.943300</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>1.118148</td>\n",
" <td>0.652955</td>\n",
" <td>0.944900</td>\n",
" <td>02:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>1.107699</td>\n",
" <td>0.649566</td>\n",
" <td>0.943800</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>1.092362</td>\n",
" <td>0.648626</td>\n",
" <td>0.946200</td>\n",
" <td>02:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>1.101405</td>\n",
" <td>0.646206</td>\n",
" <td>0.947700</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>1.082921</td>\n",
" <td>0.643641</td>\n",
" <td>0.947100</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>1.069624</td>\n",
" <td>0.636542</td>\n",
" <td>0.948400</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>1.059715</td>\n",
" <td>0.636369</td>\n",
" <td>0.949400</td>\n",
" <td>01:59</td>\n",
" </tr>\n",
" <tr>\n",
" <td>12</td>\n",
" <td>1.075041</td>\n",
" <td>0.635129</td>\n",
" <td>0.949300</td>\n",
" <td>02:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>13</td>\n",
" <td>1.064912</td>\n",
" <td>0.632790</td>\n",
" <td>0.950900</td>\n",
" <td>02:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>14</td>\n",
" <td>1.061419</td>\n",
" <td>0.631351</td>\n",
" <td>0.953200</td>\n",
" <td>02:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>15</td>\n",
" <td>1.055095</td>\n",
" <td>0.633197</td>\n",
" <td>0.952100</td>\n",
" <td>02:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>16</td>\n",
" <td>1.063334</td>\n",
" <td>0.633962</td>\n",
" <td>0.952100</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>17</td>\n",
" <td>1.060922</td>\n",
" <td>0.632507</td>\n",
" <td>0.952300</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>18</td>\n",
" <td>1.066795</td>\n",
" <td>0.630631</td>\n",
" <td>0.954000</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" <tr>\n",
" <td>19</td>\n",
" <td>1.059743</td>\n",
" <td>0.630741</td>\n",
" <td>0.953800</td>\n",
" <td>02:00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uKXnGRCJ91uL"
},
"source": [
"learner.save('stage-6')\n",
"learner.export()"
],
"execution_count": 60,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "q-Hu8DGM9-0S"
},
"source": [
"!mkdir -p /content/drive/MyDrive/fastai-cifar-models\n",
"!cp /content/models/*.pth /content/drive/MyDrive/fastai-cifar-models/.\n",
"!cp /content/export.pkl /content/drive/MyDrive/fastai-cifar-models/."
],
"execution_count": 62,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 37
},
"id": "YC1Oj7dAkq5K",
"outputId": "73bacc13-0bcb-46da-98cc-10d7d3354adf"
},
"source": [
"res = learner.tta(n=10)\n"
],
"execution_count": 63,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <div>\n",
" <style>\n",
" /* Turns off some styling */\n",
" progress {\n",
" /* gets rid of default border in Firefox and Opera. */\n",
" border: none;\n",
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
" background-size: auto;\n",
" }\n",
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
" background: #F44336;\n",
" }\n",
" </style>\n",
" <progress value='0' class='' max='20' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
" \n",
" </div>\n",
" \n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "INEla5Pp6J7s",
"outputId": "c0e470eb-d96b-4971-8ba2-8e4d9ef0f64b"
},
"source": [
"print(f'final accuracy (tta) : {accuracy(*res)}')"
],
"execution_count": 64,
"outputs": [
{
"output_type": "stream",
"text": [
"final accuracy (tta) : 0.9613999724388123\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "D_16g4Rf_pdl"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment