{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**Important: This notebook will only work with fastai-0.7.x. Do not try to run any fastai-1.x code from this path in the repository because it will load fastai-0.7.x**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CIFAR 10" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "%reload_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from fastai.conv_learner import *\n", "PATH = \"data/cifar10/\"\n", "os.makedirs(PATH,exist_ok=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n", "stats = (np.array([ 0.4914 , 0.48216, 0.44653]), np.array([ 0.24703, 0.24349, 0.26159]))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def get_data(sz,bs):\n", " tfms = tfms_from_stats(stats, sz, aug_tfms=[RandomFlip()], pad=sz//8)\n", " return ImageClassifierData.from_paths(PATH, val_name='test', tfms=tfms, bs=bs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "bs=128" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Look at data" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = get_data(32,4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x,y=next(iter(data.trn_dl))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(data.trn_ds.denorm(x)[0]);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(data.trn_ds.denorm(x)[1]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initial model" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from fastai.models.cifar10.resnext import resnext29_8_64\n", "\n", "m = resnext29_8_64()\n", "bm = BasicModel(m.cuda(), name='cifar10_rn29_8_64')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = get_data(8,bs*4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn = ConvLearner(data, bm)\n", "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lr=1e-2; wd=5e-4" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "55728f6a7d4540d2a20ee58fcc896fe1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 2.41622 23356282. 0.09889]\n", "\n" ] } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.sched.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "20a0a5f155da4edc999462078df7e01c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 1.69719 1.58988 0.43418] \n", "\n", "CPU times: user 33.3 s, sys: 7.2 s, total: 40.5 s\n", "Wall time: 40.8 s\n" ] } ], "source": [ "%time learn.fit(lr, 1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "710f1f4dc3754643a9f898831d6ef6d0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 1.43256 1.39725 0.49746] \n", "[ 1. 1.35969 1.3411 0.51602] \n", "\n" ] } ], "source": [ "learn.fit(lr, 2, cycle_len=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d5a2f48b281742ee9c997c08ed55b241", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 1.31041 1.29344 0.53174] \n", "[ 1. 1.30313 1.31292 0.53418] \n", "[ 2. 1.15682 1.22019 0.5668 ] \n", "[ 3. 1.26632 1.34606 0.54121] \n", "[ 4. 1.14698 1.18958 0.57598] \n", "[ 5. 1.02205 1.13905 0.60254] \n", "[ 6. 0.93291 1.13761 0.60596] \n", "\n" ] } ], "source": [ "learn.fit(lr, 3, cycle_len=1, cycle_mult=2, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.save('8x8_8')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 16x16" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.load('8x8_8')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.set_data(get_data(16,bs*2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f03025dbb7b14c01ae24c38739ad6179", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 5.14421 5.90379 0.28985] \n", "\n" ] } ], "source": [ "%time learn.fit(1e-3, 1, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5e6a831c66294db28cb40ed22f52a8ea", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 2.28283 966.72705 0.09523] \n", "\n" ] } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.sched.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lr=1e-2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1ab8bcbd746847bebcdbe41e3d1fc979", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 1.38133 1.36374 0.51137] \n", "[ 1. 1.13313 1.14011 0.60384] \n", "\n" ] } ], "source": [ "learn.fit(lr, 2, cycle_len=1, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bef462334a3f40e09fe8337d11b1bbd1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.98926 0.98239 0.6605 ] \n", "[ 1. 0.9254 0.93705 0.67257] \n", "[ 2. 0.75597 0.785 0.72646] \n", "[ 3. 0.84544 0.90955 0.68958] \n", "[ 4. 0.66637 0.71065 0.75752] \n", "[ 5. 0.56253 0.63 0.78066] \n", "[ 6. 0.4769 0.60606 0.79114] \n", "\n" ] } ], "source": [ "learn.fit(lr, 3, cycle_len=1, cycle_mult=2, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.save('16x16_8')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 24x24" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.load('16x16_8')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.set_data(get_data(24,bs))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6cf1e0f3b0da4f1db7bd66b9215e8c69", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.61302 0.67112 0.77321] \n", "\n" ] } ], "source": [ "learn.fit(1e-2, 1, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5042ebdbf9c24df69269c8f140431c1f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.49323 0.51107 0.82698] \n", "\n" ] } ], "source": [ "learn.fit(lr, 1, cycle_len=1, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "55e219d9a0ad4b72b8ea7b4aa51cd38a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.43563 0.47423 0.8373 ] \n", "[ 1. 0.46499 0.51238 0.82282] \n", "[ 2. 0.32453 0.40952 0.86141] \n", "[ 3. 0.47472 0.62542 0.78919] \n", "[ 4. 0.34746 0.43835 0.85566] \n", "[ 5. 0.24327 0.37241 0.87728] \n", "[ 6. 0.19959 0.35643 0.88214] \n", "\n" ] } ], "source": [ "learn.fit(lr, 3, cycle_len=1, cycle_mult=2, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.save('24x24_8')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.32011880736219389, 0.89410000000000001)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_preds,y = learn.TTA()\n", "preds = np.mean(np.exp(log_preds),0), metrics.log_loss(y,preds), accuracy_np(preds,y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 32x32" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.load('24x24_8')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.set_data(get_data(32,bs))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "88a14526c98546f6ba16b234464850e0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.28159 0.37857 0.87114] \n", "\n" ] } ], "source": [ "learn.fit(1e-2, 1, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "163e6afe27714c1a95aa9dd6cd0abc40", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.24112 0.3168 0.89587] \n", "[ 1. 0.28276 0.38893 0.87342] \n", "[ 2. 0.16777 0.29451 0.90378] \n", "[ 3. 0.27507 0.57156 0.81695] \n", "[ 4. 0.20369 0.35616 0.88786] \n", "[ 5. 0.12198 0.2949 0.90437] \n", "[ 6. 0.08032 0.27401 0.91169] \n", "\n" ] } ], "source": [ "learn.fit(lr, 3, cycle_len=1, cycle_mult=2, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1eae5941057645e0a824ac056cbb1737", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.23548 0.43751 0.86086] \n", "[ 1. 0.15057 0.32182 0.89616] \n", "[ 2. 0.08559 0.28051 0.91218] \n", "[ 3. 0.05464 0.26494 0.91555] \n", "[ 4. 0.18577 0.4403 0.86541] \n", "[ 5. 0.11875 0.32632 0.89943] \n", "[ 6. 0.06624 0.26536 0.91911] \n", "[ 7. 0.03661 0.26202 0.92059] \n", "[ 8. 0.16668 0.39448 0.87718] \n", "[ 9. 0.09441 0.31163 0.9019 ] \n", "[ 10. 0.0395 0.26366 0.92 ] \n", "[ 11. 0.02982 0.25696 0.92375] \n", "\n" ] } ], "source": [ "learn.fit(lr, 3, cycle_len=4, wds=wd)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.22727449907067793, 0.93049999999999999)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_preds,y = learn.TTA()\n", "metrics.log_loss(y,np.exp(log_preds)), accuracy_np(log_preds,y)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.save('32x32_8')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }