{ "cells": [ { "cell_type": "markdown", "source": [ "# Anime Image Labeller" ], "metadata": { "id": "4JpSTNndsxc1" } }, { "cell_type": "markdown", "source": [ "Using the https://www.kaggle.com/alamson/safebooru dataset." ], "metadata": { "id": "rDERnS9Bs8Ht" } }, { "cell_type": "markdown", "source": [ "## 0. Setup" ], "metadata": { "id": "ogGEwD4XskNJ" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "oHmnbPRi2_Ft", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "8988113c-89f6-4877-cb51-bebee1a3de65" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[K |████████████████████████████████| 720 kB 7.3 MB/s \n", "\u001b[K |████████████████████████████████| 48 kB 6.1 MB/s \n", "\u001b[K |████████████████████████████████| 189 kB 72.6 MB/s \n", "\u001b[K |████████████████████████████████| 1.2 MB 67.9 MB/s \n", "\u001b[K |████████████████████████████████| 56 kB 5.4 MB/s \n", "\u001b[K |████████████████████████████████| 51 kB 312 kB/s \n", "\u001b[K |████████████████████████████████| 558 kB 59.2 MB/s \n", "\u001b[K |████████████████████████████████| 130 kB 58.5 MB/s \n", "\u001b[?25hMounted at /content/gdrive\n" ] } ], "source": [ "!pip install -Uqq fastbook\n", "import fastbook\n", "fastbook.setup_book()" ] }, { "cell_type": "markdown", "source": [ "" ], "metadata": { "id": "s94b9Iy6spl4" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "wwy-q6EC4OYq" }, "outputs": [], "source": [ "from fastbook import *" ] }, { "cell_type": "code", "source": [ "load_learner?" ], "metadata": { "id": "ihdMlcte8WPv" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "IyrQlb3GSOtk" }, "outputs": [], "source": [ "import os.path" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "PIXCpyrqR98j" }, "outputs": [], "source": [ "from fastai.callback.fp16 import *" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "LvVMzzwmV5YL" }, "outputs": [], "source": [ "from IPython.display import HTML, display\n", "\n", "def set_css():\n", " display(HTML('''\n", " \n", " '''))\n", "get_ipython().events.register('pre_run_cell', set_css)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "sOPOtebwWuEg", "outputId": "33c3b9a0-ef07-4d9c-969b-25fee561ec6d" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Q3Qvg1hNRLYj" }, "outputs": [], "source": [ "path = Path('gdrive/MyDrive/anime-image-labeller/safebooru')" ] }, { "cell_type": "markdown", "metadata": { "id": "JnxH6gchOXj9" }, "source": [ "## 1. Data Collection" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "WX73j_dk4kf5" }, "outputs": [], "source": [ "!pip install -Uqq opendatasets" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NGOBECwD5kUx" }, "outputs": [], "source": [ "import opendatasets as od" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "34g62y_AWGuG" }, "outputs": [], "source": [ "path = Path('gdrive/MyDrive/anime-image-labeller')" ] }, { "cell_type": "markdown", "metadata": { "id": "tZGgzPR66Gpd" }, "source": [ "\"username\":\"curttigges\",\"key\":\"2cd7a4db172413af72b9ca64e5d8eb56\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ObJ7HxTM5oiw" }, "outputs": [], "source": [ "od.download(\"https://www.kaggle.com/alamson/safebooru\",data_dir=path)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "edpV1BdmWx4t" }, "outputs": [], "source": [ "path = Path('gdrive/MyDrive/anime-image-labeller/safebooru')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "OEQikwyi6X0_" }, "outputs": [], "source": [ "Path.BASE_PATH = path" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "j1v8ssRB6x27" }, "outputs": [], "source": [ "path.ls()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "A9nVwnEU6a4F" }, "outputs": [], "source": [ "df = pd.read_csv(str(path/'all_data.csv'))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "KL7YNh_x6l28" }, "outputs": [], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "eIEU8P827GRH" }, "outputs": [], "source": [ "df.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "iU-EngnL-BH4" }, "outputs": [], "source": [ "df['sample_url'] = (df['sample_url'].str.strip('/'))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "R9La26d5_SsH" }, "outputs": [], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "l1tjk76L9h0h" }, "outputs": [], "source": [ "dest = 'images/im23868.jpg'" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-PXNYSgd7Lun" }, "outputs": [], "source": [ "img = download_url(df.iloc[23868,4] if df.iloc[23868,4] == 'h' else 'http://' +df.iloc[23868,4], dest)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "aNd90gRM8Iqe" }, "outputs": [], "source": [ "im = Image.open('images/im23868.jpg')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ID95-eLg8zxV" }, "outputs": [], "source": [ "im" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "VxJ_MF2t_zwK" }, "outputs": [], "source": [ "df.iloc[23868,8]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "7pHPXPOgAtdc" }, "outputs": [], "source": [ "df_s = df.sample(100000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "VU94mUmGG7nh" }, "outputs": [], "source": [ "df_s.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "voCevGNWJlgX" }, "outputs": [], "source": [ "urls = [i if i[0] == 'h' else 'http://' + i for i in df_s.iloc[:,4]]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Evv4JgVjD5J5" }, "outputs": [], "source": [ "download_images(path/'images',urls=urls, max_pics=100000, preserve_filename=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "FWK7YuiEPpsR" }, "outputs": [], "source": [ "#!rm -rf 'safebooru/images'" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "t1X6xdGVVEbL" }, "outputs": [], "source": [ "df_s['img_name'] = [re.findall(r'[^/]*$', df_s.iloc[i,4])[0] for i in range(len(urls))] #[^,]*$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "OjGy6VcAVQ3Z" }, "outputs": [], "source": [ "df_s.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NDC7N36ZUTBj" }, "outputs": [], "source": [ "df_s['file_found'] = [os.path.isfile(path/'images'/df_s.iloc[i,9]) for i in range(len(df_s))]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "FzLiKfcaWMGM" }, "outputs": [], "source": [ "df_s = df_s[df_s['file_found']]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "P4DxyXomA5wu" }, "outputs": [], "source": [ "df_s.to_pickle(path/'df_s.pkl')" ] }, { "cell_type": "markdown", "metadata": { "id": "m_LffM8gOzMU" }, "source": [ "## 2. Data Prep" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "zihfMi-eBVK8" }, "outputs": [], "source": [ "df_50k = pd.read_pickle(path/'df_s.pkl')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "7OwLsf9uPeNw", "outputId": "2e70ea9b-98a7-4cec-adbb-f5da4f247f98" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_s = df_50k.sample(n=1000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "id": "l7z9KGp_WWAu", "outputId": "3fbcc6a5-0937-4f33-fb53-3e6e6ad06206" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "1000" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_s)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 382 }, "id": "44bcseWdgw81", "outputId": "5fba3d50-8fb4-4426-a2df-de487cb57aed" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "10 top tags:\n", "('solo', 466)\n", "('long_hair', 465)\n", "('1girl', 436)\n", "('highres', 352)\n", "('smile', 292)\n", "('blush', 257)\n", "('short_hair', 240)\n", "('looking_at_viewer', 235)\n", "('blue_eyes', 222)\n", "('open_mouth', 205)\n", "('breasts', 193)\n", "('skirt', 181)\n", "('blonde_hair', 176)\n", "('brown_hair', 167)\n", "('multiple_girls', 166)\n", "('hat', 165)\n", "('red_eyes', 161)\n", "('touhou', 160)\n", "('gloves', 146)\n", "('black_hair', 141)\n" ] } ], "source": [ "tag_dict = {}\n", "for i in df_s.tags:\n", " tokens = re.split(\"[ ]\",i)\n", " for token in tokens:\n", " if token in tag_dict:\n", " tag_dict[token] += 1\n", " else:\n", " tag_dict[token] = 1\n", "\n", "item = sorted(tag_dict.items(), key = lambda x:x[1],reverse = True)\n", "print(\"10 top tags:\")\n", "for i in range(0,20):\n", " print(item[i])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "id": "mOTcyDeLi70a", "outputId": "71c32bc6-b1e8-43d7-9e11-72a126826c84" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "5543" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(tag_dict)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "id": "1M1u4P8DjV0H", "outputId": "75fb5025-8eda-4357-9135-3689d5a22b58" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "79" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_tags = {t for t in tag_dict if tag_dict[t] > 50}\n", "len(pop_tags)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "i3ze6EHzLhXG", "outputId": "b30a4af0-5f5b-46c8-8a5d-4b5d5ba9bf36" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#df_s['img_name'] = [str(i).zfill(8)+'.'+re.findall(r'[^.]*$', df_s.iloc[i,4])[0] for i in range(len(urls))] #[^,]*$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "7pGC6_vYJB5W" }, "outputs": [], "source": [ "def get_x(r): return path/'images'/r['img_name']\n", "def get_y(r): return [t for t in r['tags'].split(' ') if t in pop_tags]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "4TCPCNAaYpq9", "outputId": "07a27b05-1dce-421a-dfce-96027004792f" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "db = DataBlock(\n", " blocks=(ImageBlock, MultiCategoryBlock),\n", " get_x=get_x,\n", " get_y=get_y,\n", " splitter=RandomSplitter(valid_pct=0.3),\n", " item_tfms=Resize(460),\n", " batch_tfms=aug_transforms(size=224, min_scale=0.75)\n", ")\n", "dls = db.dataloaders(df_s)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "50URl3xyZuT0" }, "outputs": [], "source": [ "dls.show_batch(nrows=1, ncols=5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "1AXWdbRxbMes" }, "outputs": [], "source": [ "db.dataloaders?" ] }, { "cell_type": "markdown", "metadata": { "id": "-D1BVSsNR0tV" }, "source": [ "## 3. Training Smaller Models" ] }, { "cell_type": "markdown", "metadata": { "id": "hNaEBUALVbDY" }, "source": [ "### Result Assessment Functions" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "_Jeo38eSdrEl", "outputId": "2f26a9c1-2667-4103-dd13-46494d920bf1" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"\n", "Get the prediction labels and their accuracies, then return the results as a dictionary.\n", "\n", "[obj] - tensor matrix containing the predicted accuracy given from the model\n", "[learn] - fastai learner needed to get the labels\n", "[thresh] - minimum accuracy threshold to returning results\n", "\"\"\"\n", "def get_pred_classes(obj, learn, thresh):\n", " labels = []\n", " # get list of classes from Learner object\n", " for item in dls.vocab:\n", " labels.append(item)\n", "\n", " predictions = {}\n", " x=0\n", " for item in obj:\n", " acc= round(item.item(), 3)*100\n", "# acc= int(item.item()*100) # no decimal places\n", " if acc > thresh:\n", " predictions[labels[x]] = acc\n", " x+=1\n", " \n", " # sorting predictions by highest accuracy\n", " predictions ={k: round(v, 2) for k, v in sorted(predictions.items(), key=lambda item: item[1], reverse=True)}\n", "\n", " return predictions" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "y6YKStzMdtf3", "outputId": "b848c26f-76f4-49ac-b514-a759e35e915d" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def predict_single_img(imf, learn, imtype, thresh=20):\n", " if imtype == 'l':\n", " img = PILImage.create(imf)\n", " elif imtype == 'w':\n", " dl = download_url(imf, dest=path/'test')\n", " img = PILImage.create(dl)\n", " else:\n", " print(\"Invalid image type.\")\n", "\n", " img.show() #show image\n", " _, _, pred_pct = learn.predict(img) #predict while ignoring first 2 array inputs\n", " print(get_pred_classes(pred_pct, learn, thresh))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "Y4Sq1LPpb_RE", "outputId": "1a65b6bc-1184-4eca-fe54-9eb0d5e5df40" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29):\n", " preds, targs = learn.get_preds()\n", " xs = torch.linspace(thresmin,thresmax,threscnt)\n", " accs = [accuracy_multi(preds, targs, thresh=i, sigmoid=False) for i in xs]\n", " plt.plot(xs,accs);" ] }, { "cell_type": "markdown", "metadata": { "id": "nSdXLF0XSQtl" }, "source": [ "### A. Baseline Model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "2lsx7qE8Rxyw" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2)).to_fp16()\n", "lr_min, lr_steep = learn.lr_find(suggest_funcs=(minimum, steep))\n", "lr_min, lr_steep" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "WcWubUhFXM0-" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2)).to_fp16()\n", "learn.fine_tune(8, 1e-2, freeze_epochs=2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "mW_bptVPedPs" }, "outputs": [], "source": [ "dls.train.bs" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "SH7hXCEfUbzo" }, "outputs": [], "source": [ "learn.recorder.plot_loss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ZqkML0snnZc4" }, "outputs": [], "source": [ "predict_single_img(path/'test/choker.jpeg', learn, 'l')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Iv4w-3O_v-TS" }, "outputs": [], "source": [ "shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29)" ] }, { "cell_type": "markdown", "metadata": { "id": "1-Cqm0oTSKAu" }, "source": [ "### B. Progressive Resizing" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "pWAT8pAjYoU7", "outputId": "21d97873-2bcc-440d-a77e-13aee8268690" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def get_dls(bs, size):\n", " db = DataBlock(\n", " blocks=(ImageBlock, MultiCategoryBlock),\n", " get_x=get_x,\n", " get_y=get_y,\n", " splitter=RandomSplitter(valid_pct=0.3),\n", " item_tfms=Resize(460),\n", " batch_tfms=aug_transforms(size=size, min_scale=0.75)\n", " )\n", " return db.dataloaders(df_50k, bs=bs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "hpRsE5SGYaWB" }, "outputs": [], "source": [ "dls = get_dls(128, 128)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-uaOPnJGZ6M8" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2)).to_fp16()\n", "learn.fit_one_cycle(5, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "bGbR-TMVa_kn" }, "outputs": [], "source": [ "learn.dls = get_dls(64, 224)\n", "learn.fine_tune(8, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "yNwNGrC8LCms" }, "outputs": [], "source": [ "learn.recorder.plot_loss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NGgXh3r7nVdA" }, "outputs": [], "source": [ "predict_single_img(path/'test/choker.jpeg', learn, 'l')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "zRWV_sM6v8j0" }, "outputs": [], "source": [ "shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29)" ] }, { "cell_type": "markdown", "metadata": { "id": "Ftnca652XccJ" }, "source": [ "### C. Test-Time Augmentation" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "mI9g00IkXf7p" }, "outputs": [], "source": [ "preds,targs = learn.tta()\n", "accuracy_multi(preds, targs).item()" ] }, { "cell_type": "markdown", "metadata": { "id": "4SHmbjNVXj3e" }, "source": [ "### D. MixUp" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GE7h4TVDXnAf" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2),\n", " cbs=MixUp()).to_fp16()\n", "learn.fine_tune(40, 1e-2, freeze_epochs=2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "HJbv1nPrmgJA" }, "outputs": [], "source": [ "learn.recorder.plot_loss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "FYqo8pWMm2g7" }, "outputs": [], "source": [ "predict_single_img(path/'test/choker.jpeg', learn, 'l')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "dyObEFlGnfde" }, "outputs": [], "source": [ "shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29)" ] }, { "cell_type": "markdown", "metadata": { "id": "A8g2qyArXwuG" }, "source": [ "### E. Label Smoothing" ] }, { "cell_type": "markdown", "metadata": { "id": "Sla41MkM3KC_" }, "source": [ "### F. Combination of Successful Approaches" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "kq241k5b3SWQ" }, "outputs": [], "source": [ "dls = get_dls(128, 128)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "f784yrsq3olc" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2),\n", " cbs=MixUp()).to_fp16()\n", "learn.fit_one_cycle(20, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "8xakQN1j32vo" }, "outputs": [], "source": [ "learn.dls = get_dls(64, 224)\n", "learn.fine_tune(20, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "KdrOJ--B4DfF" }, "outputs": [], "source": [ "learn.recorder.plot_loss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "3F-c1B_67oop" }, "outputs": [], "source": [ "learn.dls = get_dls(32, 312)\n", "learn.fine_tune(20, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-_IfYNxb4UVu" }, "outputs": [], "source": [ "predict_single_img(path/'test/choker.jpeg', learn, 'l')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "cBBgP0zV4Wig" }, "outputs": [], "source": [ "shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29)" ] }, { "cell_type": "markdown", "metadata": { "id": "ghMjgWdXAC2Q" }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "id": "xdaWz9MOADAs" }, "source": [ "### Mixup Wins!" ] }, { "cell_type": "markdown", "metadata": { "id": "OxIeWLpMAUcS" }, "source": [ "## 4. Training Medium-Sized Model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "x2P8i886ACKs" }, "outputs": [], "source": [ "df_m = df_50k.sample(n=7500)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "26sKHQWcAvX4" }, "outputs": [], "source": [ "tag_dict = {}\n", "for i in df_m.tags:\n", " tokens = re.split(\"[ ]\",i)\n", " for token in tokens:\n", " if token in tag_dict:\n", " tag_dict[token] += 1\n", " else:\n", " tag_dict[token] = 1\n", "\n", "item = sorted(tag_dict.items(), key = lambda x:x[1],reverse = True)\n", "print(\"10 top tags:\")\n", "for i in range(0,20):\n", " print(item[i])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "yZGm1vheBIvu" }, "outputs": [], "source": [ "len(tag_dict)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "O89UC0B9BMoE" }, "outputs": [], "source": [ "pop_tags = {t for t in tag_dict if tag_dict[t] > 25}\n", "len(pop_tags)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ICNvu0DNBotk" }, "outputs": [], "source": [ "db = DataBlock(\n", " blocks=(ImageBlock, MultiCategoryBlock),\n", " get_x=get_x,\n", " get_y=get_y,\n", " splitter=RandomSplitter(valid_pct=0.2),\n", " item_tfms=Resize(460),\n", " batch_tfms=aug_transforms(size=224, min_scale=0.75)\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "qsXRiannA7Oy" }, "outputs": [], "source": [ "dls = db.dataloaders(df_m)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Ncvi0v1SBTwH" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2)).to_fp16()\n", "lr_min, lr_steep = learn.lr_find(suggest_funcs=(minimum, steep))\n", "lr_min, lr_steep" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "tFkSXXGACOOG" }, "outputs": [], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.2),\n", " cbs=MixUp()).to_fp16()\n", "learn.fine_tune(40, 1e-2, freeze_epochs=2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "kZDr-F03CWuJ" }, "outputs": [], "source": [ "learn.recorder.plot_loss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "_xCFpyEXCam3" }, "outputs": [], "source": [ "predict_single_img(path/'test/hatsune.jpeg', learn, 'l', thresh=15)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "B2TVBD1mCeWS" }, "outputs": [], "source": [ "shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29)" ] }, { "cell_type": "markdown", "metadata": { "id": "ttRoy3IOh9FN" }, "source": [ "## 5. Training a Large Model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Wuet3V-yiA3C", "outputId": "59a7efb3-1e1c-4a07-e9af-6640122bf8a1" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10 top tags:\n", "('solo', 25617)\n", "('1girl', 24414)\n", "('long_hair', 23516)\n", "('highres', 18210)\n", "('smile', 15949)\n", "('short_hair', 14646)\n", "('blush', 13001)\n", "('looking_at_viewer', 12920)\n", "('open_mouth', 11153)\n", "('breasts', 10749)\n", "('blue_eyes', 10307)\n", "('blonde_hair', 9913)\n", "('skirt', 9595)\n", "('touhou', 9588)\n", "('brown_hair', 9492)\n", "('multiple_girls', 9204)\n", "('hat', 8992)\n", "('black_hair', 8097)\n", "('red_eyes', 7863)\n", "('simple_background', 7428)\n" ] } ], "source": [ "tag_dict = {}\n", "for i in df_50k.tags:\n", " tokens = re.split(\"[ ]\",i)\n", " for token in tokens:\n", " if token in tag_dict:\n", " tag_dict[token] += 1\n", " else:\n", " tag_dict[token] = 1\n", "\n", "item = sorted(tag_dict.items(), key = lambda x:x[1],reverse = True)\n", "print(\"10 top tags:\")\n", "for i in range(0,20):\n", " print(item[i])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hdcSD-fxiOcU", "outputId": "e5fde687-271d-47cb-afb2-affebe504e01" }, "outputs": [ { "data": { "text/plain": [ "67093" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(tag_dict)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XGKlQoSeiPTD", "outputId": "23f9e787-44ac-4545-ce5c-c62db539d3e5" }, "outputs": [ { "data": { "text/plain": [ "1356" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop_tags = {t for t in tag_dict if tag_dict[t] > 100}\n", "len(pop_tags)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "kFqHZ9ouiVXN" }, "outputs": [], "source": [ "db = DataBlock(\n", " blocks=(ImageBlock, MultiCategoryBlock),\n", " get_x=get_x,\n", " get_y=get_y,\n", " splitter=RandomSplitter(valid_pct=0.2),\n", " item_tfms=Resize(460),\n", " batch_tfms=aug_transforms(size=224, min_scale=0.75)\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ZiUYnTCRiedG" }, "outputs": [], "source": [ "dls = db.dataloaders(df_50k, batch_size=128)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "background_save": true, "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "VG_gxruliiCc", "outputId": "b824ba7c-6f06-4495-d0a8-24b1645e0b62" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracy_multitime
00.0665600.0608260.90204011:31
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n" ] }, { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 35.00% [14/40 2:43:58<5:04:31]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracy_multitime
00.0562090.0562930.89725911:40
10.0553460.0535310.88956611:42
20.0543510.0499900.88860211:46
30.0538720.0519400.89122111:48
40.0532960.0484530.89686811:50
50.0526220.0482300.90282011:45
60.0517990.0478830.90290711:54
70.0512130.0471520.89051511:49
80.0509910.0466480.89773011:40
90.0501060.0464470.89444911:41
100.0503080.0460700.89521711:38
110.0502090.0458880.89783111:33
120.0496410.0455270.90483411:33
130.0494070.0453210.89107611:33

\n", "\n", "

\n", " \n", " \n", " 47.95% [164/342 04:30<04:53 0.0489]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/TiffImagePlugin.py:788: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 4. \n", " warnings.warn(str(msg))\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n", "/usr/local/lib/python3.7/dist-packages/PIL/Image.py:960: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n", " \"Palette images with Transparency expressed in bytes should be \"\n" ] } ], "source": [ "learn = cnn_learner(dls, resnet50, metrics=partial(accuracy_multi, thresh=0.02),\n", " cbs=MixUp())\n", "learn.fine_tune(40, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "rxGktBOHipuk", "outputId": "3ec5f3e5-9847-4cb0-853f-4f03c17cd3bc" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.recorder.plot_loss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 407 }, "id": "m-d_Tz4Lip_2", "outputId": "076a5566-b7e2-4f3b-cabd-7bbf0b9c693f" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'solo': 59.6, 'short_hair': 56.9, '1girl': 50.1, 'highres': 24.4, 'blush': 23.1, 'smile': 22.1, 'looking_at_viewer': 18.2, 'black_hair': 16.8, 'original': 15.2, 'green_hair': 14.5, 'green_eyes': 13.9, 'shirt': 12.4, 'school_uniform': 11.9, '1boy': 11.6, 'bangs': 11.4, 'upper_body': 10.9, 'brown_hair': 10.6, 'brown_eyes': 10.4, 'idolmaster': 9.0, 'open_mouth': 9.0, 'long_sleeves': 8.6, 'grey_hair': 8.3, 'jacket': 8.0, 'eyebrows_visible_through_hair': 7.6, 'long_hair': 7.5, 'commentary_request': 7.3, 'male_focus': 7.2, 'hair_ornament': 6.9, 'skirt': 6.6, 'silver_hair': 6.1, 'red_eyes': 6.0, 'dress': 5.8, 'indoors': 5.8, 'closed_mouth': 5.6, 'tagme': 5.6, 'closed_eyes': 5.2, 'bag': 5.1}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict_single_img(path/'test/girl.jpeg', learn, 'l', thresh=5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "k5w9WD8fi48E" }, "outputs": [], "source": [ "shows_accs(learn, thresmin=0.05, thresmax=0.95, threscnt=29)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "gkvsCJmL2BO5", "outputId": "b8f2da60-3219-417f-b03d-d580b7ebf45e" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.export(path/'model-large-40e.pkl')" ] }, { "cell_type": "markdown", "metadata": { "id": "tQcUTxM16DQb" }, "source": [ "### Continue Training" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "XVqgP4TmivAF" }, "outputs": [], "source": [ "learn = load_learner(path/'model-large-40e.pkl',cpu=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "-zZfAvoc5hxo", "outputId": "4b9a617a-3181-4266-9566-8eb68d73a5fb" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.dls = get_dls(128, 224)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 340 }, "id": "p3wBrwWyjQn4", "outputId": "fcf4580f-e6c8-43b7-c6d3-480215578567" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 0.00% [0/1 00:00<00:00]\n", "
\n", " \n", "\n", "\n", "
\n", " \n", " \n", " 30.43% [91/299 12:45<29:09 0.0261]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(5.754399353463669e-07, 6.309573450380412e-07)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEKCAYAAAAFJbKyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU1d348c83+0oCIWwJELawK2Bc0GpRRHFBbd1rq1Zb7fPUqo+tj/qztdTS1vaxLn3aWm21Lq1bqfahgmJV1KKoLLJKAmGTJIQsZN+T+f7+mBsMIYQZkpuZyXzfr9e8MvfMufd+ZwjzzTnn3nNEVTHGGGN8FRHoAIwxxoQWSxzGGGP8YonDGGOMXyxxGGOM8YslDmOMMX6xxGGMMcYvUYEOoC8MHjxYs7KyAh2GMcaEjMGDB7N8+fLlqjq/82thkTiysrJYs2ZNoMMwxpiQIiKDuyq3ripjjDF+scRhjDHGL5Y4jDHG+CUsxji60tLSQkFBAY2NjYEOJaTFxcWRmZlJdHR0oEMxxvSRsE0cBQUFJCcnk5WVhYgEOpyQpKqUl5dTUFDAmDFjAh2OMaaPhG1XVWNjI2lpaZY0ekBESEtLs1abMWEmbBMHYEmjF9hnaExw2llay4rcEppbPb1+7LBOHKFgyZIlPPDAA93WKSoq4rLLLuujiIwxoWDpxn188+nVeFxYcylsxzj8tvFlePt+qCqAlEyYex8cd4Xrp73ooou46KKLuq0zYsQIFi9e7HosxpjQUVjZwOCkGOKiI3v92K62OERkvojkiUi+iNzdxeuxIvKS8/rHIpLllM8TkbUissn5eVaHfWJE5AkR2SYiuSJyqZvvAfAmjX/eClV7AfX+/Oet3vIe2L17N5MmTeL6668nOzuba665hrfeeovTTjuNCRMm8Mknn/D0009zyy23AHD99ddz6623cuqppzJ27NiDyWL37t1MmzYNgKeffppLLrmEefPmkZWVxW9/+1seeughZs6cySmnnMKBAwcAmDNnzsG76cvKymifksXX/Y0xwa2wsoGMgQmuHNu1xCEikcDvgPOAKcDVIjKlU7UbgQpVHQ88DPzSKS8DFqjqdOA64LkO+9wLlKhqtnPc99x6Dwe9fT+0NBxa1tLgLe+h/Px8vv/975Obm0tubi7PP/88K1eu5MEHH+TnP//5YfX37dvHypUree2117j77sNyMQCbN2/mlVdeYfXq1dx7770kJCTw6aefMnv2bJ599tmjxtTT/Y0xgVdY0UBmarwrx3azxXESkK+qO1W1GXgRuLhTnYuBZ5zni4G5IiKq+qmqFjnlW4B4EYl1tm8AfgGgqh5VLXPxPXhVFfhX7ocxY8Ywffp0IiIimDp1KnPnzkVEmD59Ort37z6s/iWXXEJERARTpkxh//79XR7zzDPPJDk5mfT0dFJSUliwYAHAEY/Z2/sbYwJLVZ0WR+gljgxgb4ftAqesyzqq2gpUAWmd6lwKrFPVJhFJdcp+KiLrRORvIjK0q5OLyE0iskZE1pSWlvbsnaRk+lfuh9jY2IPPIyIiDm5HRETQ2trabX09wqCXL8eMiorC4/FebdH5clp/YzLGBJey2maaWj1khGCLo8dEZCre7qubnaIoIBP4UFVnAauAB7vaV1WfUNUcVc1JT0/vWSBz74PoTv8A0fHe8hCVlZXF2rVrAWxg3Zh+pqCiHiAkE0chMLLDdqZT1mUdEYkCUoByZzsTeBW4VlV3OPXLgXrgFWf7b8AsN4I/xHFXwILfQMpIQLw/F/ymT66qcssPfvADHnvsMWbOnElZmfu9fcaYvlNY6R2TdaurSo7U3dHjA3sTwTZgLt4EsRr4mqpu6VDnu8B0Vf2OiFwFfFVVr3C6pN4DfqKqr3Q67ovAE6r6johcD1ygqpd3F0tOTo52Xo9j69atTJ48ucfv09hnaUywefy9Hfzi9Vw2LjyHAXHHPo+ciKxV1ZzO5a61OJwxi1uA5cBW4GVV3SIi94tI+40JTwJpIpIP3AG0XyZ0CzAeuE9E1juPIc5rdwELRWQj8A3g+269B2OMCUWFlQ0MiIvqUdLojqs3AKrqMmBZp7L7OjxvBA5rLajqImDREY65BzijdyM1xpj+o7DCvXs4IMgHx40xxvivsLLBtYFxsMRhjDH9iqpSUNFApksD42CJwxhj+pXqhlZqm1qtxWGMMcY3BZXOPRzW4ggPjzzyCPX19YEOwxgTwgornHs4rMUReEt3LuWcxedw3DPHcc7ic1i6c2mvn8MShzGmp9pv/rMxjgBbunMpCz9cyL66fSjKvrp9LPxwYY+SR11dHRdccAHHH38806ZN4yc/+QlFRUWceeaZnHnmmQC8+eabzJ49m1mzZnH55ZdTW1sLwNq1a/nyl7/MCSecwLnnnsu+ffsA71Tpt912GzNmzGDatGl88sknPX/zxpiQUljRQFx0BIMSY1w7hyUOHzy67lEa2w6dCLCxrZFH1z16zMd84403GDFiBBs2bGDz5s3cfvvtjBgxghUrVrBixQrKyspYtGgRb731FuvWrSMnJ4eHHnqIlpYWvve977F48WLWrl3LDTfcwL333nvwuPX19axfv57f//733HDDDcccnzEmNBVUeC/FdXNZZ1sB0AfFdcV+lfti+vTpfP/73+euu+7iwgsv5PTTTz/k9Y8++ojPPvuM0047DYDm5mZmz55NXl4emzdvZt68eQC0tbUxfPjwg/tdffXVAJxxxhlUV1dTWVlJamoqxpjw4OYCTu0scfhgWOIw9tXt67L8WGVnZ7Nu3TqWLVvGD3/4Q+bOnXvI66rKvHnzeOGFFw4p37RpE1OnTmXVqlVdHrfzXxlu/tVhjAk+hZUNTMtIcfUc1lXlg9tm3UZcZNwhZXGRcdw267ZjPmZRUREJCQl8/etf584772TdunUkJydTU1MDwCmnnMIHH3xAfn4+4B0T2bZtGxMnTqS0tPRg4mhpaWHLloPzRvLSSy8BsHLlSlJSUkhJcfcXyBgTPOqbWzlQ1+zqwDhYi8MnF4y9APCOdRTXFTMscRi3zbrtYPmx2LRpE3feeScRERFER0fz2GOPsWrVKubPn39wrOPpp5/m6quvpqmpCYBFixaRnZ3N4sWLufXWW6mqqqK1tZXbb7+dqVOnAhAXF8fMmTNpaWnhqaee6vmbN8aEjKJK9y/FBRenVQ8m4TKt+pw5c3jwwQfJyTlsFmRX9cfP0phQ9G5eCdf/eTWLvzObnKxBPT5en0+rbowxpm+5vYBTO+uq6kfefffdQIdgjAmggooGoiKEIclxR6/cA9biMMaYfqKwooHhqXFERrh7NWVYJ45wGN9xm32GxgQPt9fhaBe2iSMuLo7y8nL74usBVaW8vJy4OHebxcYY3+w9UE+myzf/QRiPcWRmZlJQUEBpaWmgQwlpcXFxZGZmBjoMY8JeRV0zJTVNZA9Ncv1cYZs4oqOjGTNmTKDDMMaYXpFb7L15eOKwAa6fK2y7qowxpj/JK64GYPKwZNfPZYnDGGP6gdziGgYmRJOeHOv6uSxxGGNMP5BbXMOkYQP6ZGJTSxzGGBPiPB5l2/4aJvZBNxVY4jDGmJC3t6Ke+uY2Jg+3xGGMMcYHW/f13RVVYInDGGNCXl5xDSL0yT0c4HLiEJH5IpInIvkicncXr8eKyEvO6x+LSJZTPk9E1orIJufnWR32edc55nrnMcTN92CMMcEut7ia0YMSSIjpm1vzXDuLiEQCvwPmAQXAahFZoqqfdah2I1ChquNF5Crgl8CVQBmwQFWLRGQasBzI6LDfNap66AIbxhgTpvKcK6r6ipstjpOAfFXdqarNwIvAxZ3qXAw84zxfDMwVEVHVT1W1yCnfAsSLiPsXJxtjTIhpaG5jV3ldn11RBe4mjgxgb4ftAg5tNRxSR1VbgSogrVOdS4F1qtrUoezPTjfVj+QIFy2LyE0iskZE1th8VMaY/mp7SQ2q9NkVVRDkg+MiMhVv99XNHYqvUdXpwOnO4xtd7auqT6hqjqrmpKenux+sMcYEQG4fX1EF7iaOQmBkh+1Mp6zLOiISBaQA5c52JvAqcK2q7mjfQVULnZ81wPN4u8SMMSYs5RbXEB8dyahB7k+n3s7NxLEamCAiY0QkBrgKWNKpzhLgOuf5ZcA7qqoikgosBe5W1Q/aK4tIlIgMdp5HAxcCm118D8YYE9Ryi6vJHpbs+qp/HbmWOJwxi1vwXhG1FXhZVbeIyP0icpFT7UkgTUTygTuA9kt2bwHGA/d1uuw2FlguIhuB9XhbLH906z0YY0wwU1XvHFVD+258A1xej0NVlwHLOpXd1+F5I3B5F/stAhYd4bAn9GaMxhgTqkprmzhQ18ykPhwYhyAfHDfGGHNkXwyMW+Iwxhjjg81FVQBMHZ7Sp+e1xGGMMSFqc2EVowYlkJIQ3afntcRhjDEhalNhFdMz+ra1AZY4jDEmJFXUNbP3QAPTMy1xGGOM8UH7+Ia1OIwxxvhkU6E3cUwbYYnDGGOMDwI1MA6WOIwxJiRtLKgKyPgGWOIwxpiQU1HXTEFFQ0DGN8AShzHGhJxADoyDJQ5jjAk5GwsCNzAOljiMMSbkbC6sYnRaYAbGwRKHMcaEnE2FVUwLUDcVWOIwxpiQEuiBcbDEYYwxIaX9xr/jLHEYY4zxRXvimGqJwxhjjC82FTgD4/GBGRgHSxzGGBMyWts8fLijjJOyBgU0DkscxhgTItZ9Xkl1YytnTRoS0DgscRhjTIh4J7eEqAjhtAmDAxqHJQ5jjAkRK3JLODFrEAPiAje+AZY4jDEmJBRWNpC3vybg3VRgicMYY0LCitwSAM6clB7gSCxxGGNMSFiRW8LIQfGMS08KdCiWOIwxJtg1trTxwY4yzpo4BBEJdDjuJg4RmS8ieSKSLyJ3d/F6rIi85Lz+sYhkOeXzRGStiGxyfp7Vxb5LRGSzm/EbY0ww+GhnOY0tHuYEwfgGuJg4RCQS+B1wHjAFuFpEpnSqdiNQoarjgYeBXzrlZcACVZ0OXAc81+nYXwVq3YrdGGOCyYrcEuKiI5g9Ni3QoQDutjhOAvJVdaeqNgMvAhd3qnMx8IzzfDEwV0REVT9V1SKnfAsQLyKxACKSBNwBLHIxdmOMCQqqyoq8Uk4bN5i46MhAhwO4mzgygL0dtgucsi7rqGorUAV0TqmXAutUtcnZ/inwa6C+twM2xphgs6Woms8P1AdNNxUE+eC4iEzF2311s7M9Axinqq/6sO9NIrJGRNaUlpa6HKkxxrjjzx/sJiEmkouOGxHoUA5yM3EUAiM7bGc6ZV3WEZEoIAUod7YzgVeBa1V1h1N/NpAjIruBlUC2iLzb1clV9QlVzVHVnPT0wF/3bIwx/iqpbmTJhkKuyBkZsGViu+Jm4lgNTBCRMSISA1wFLOlUZwnewW+Ay4B3VFVFJBVYCtytqh+0V1bVx1R1hKpmAV8CtqnqHBffgzHGBMyzq/bQ6lG+eVpWoEM5hGuJwxmzuAVYDmwFXlbVLSJyv4hc5FR7EkgTkXy8A97tl+zeAowH7hOR9c4jeDr4jDHGZQ3Nbfz14z3MmzyU0WmJgQ7nEFFuHlxVlwHLOpXd1+F5I3B5F/st4ihXTanqbmBarwRqjDFB5pVPC6iob+Fbp48NdCiHCerBcWOMCUcej/Lkyl1Mz0jhxKyBgQ7nMJY4jDEmyLy3rZSdpXV86/QxQTHFSGeWOIwxJoioKo+8vZ0RKXGcP314oMPpkiUOY4wJIq9vLmbD3kpun5dNdGRwfkUHZ1TGGBOGWto8/M/yPLKHJnHprMxAh3NEljiMMSZIvLh6L7vK6rhr/iQiI4JvbKOdJQ5jjAkCdU2tPPrWdk7KGhQUy8N2xxKHMcYEgT/9exdltU3cff6koLySqiNLHMYYE2D7qxt54v0dzJ86jFmjgu++jc58ShwikigiEc7zbBG5SESCZ8YtY4wJYb9YtpWWNuWe8ycFOhSf+NrieB+IE5EM4E3gG8DTbgVljDHh4uOd5fxjfRE3f3ls0M1JdSS+Jg5R1Xrgq8DvVfVyYKp7YRljTP/X2ubhx0u2kJEaz3/OGR/ocHzmc+IQkdnANXinOwcIjjUMjTEmRP3loz3kFtfwowsnEx8TOl+pviaO24F7gFedqdHHAivcC8sYY/q3stomfv2vbZw+YTDnTh0W6HD84tO06qr6HvAegDNIXqaqt7oZmDHG9Feqyn3/t5nGljZ+vGBq0F9+25mvV1U9LyIDRCQR2Ax8JiJ3uhuaMcb0T0s2FLFsUzG3n53N+CFJgQ7Hb752VU1R1WrgEuB1YAzeK6uMMcb4obiqkR/9YzOzRqVy8xnBt0iTL3xNHNHOfRuXAEtUtQVQ98Iyxpj+R1W56+8baWlTfn3FDKKCdPbbo/E16seB3UAi8L6IjAaq3QrKGGP6oxc+2ct720q55/xJjBkcGvdsdMXXwfHfAL/pULRHRM50JyRjjOl/qhtbeOD1rZw2Po2vnzw60OH0iK+D4yki8pCIrHEev8bb+jDGGOODZz7YTXVjK/ecN5mIIJ4y3Re+dlU9BdQAVziPauDPbgVljDH9SU1jC39auYuzJw9hWkZKoMPpMZ+6qoBxqnpph+2fiMh6NwIyxpj+5tlVe6hqaOHWuRMCHUqv8LXF0SAiX2rfEJHTgAZ3QjLGmP6jtqmVP/57J2dOTOe4zNRAh9MrfG1xfAd4VkTa21gVwHXuhGSMMf3Hc6v2UFnfwm1nZwc6lF7j61VVG4DjRWSAs10tIrcDG90MzhhjQlmd09r4cnY6M0b2j9YG+LkCoKpWO3eQA9zhQjzGGNNvPP7eDg7UNXP72f1jbKNdT25bPOr1ZCIyX0TyRCRfRO7u4vVYEXnJef1jEclyyueJyFoR2eT8PKvDPm+IyAYR2SIifxCR0JmL2BgTNvYeqOfx93dy8YwRzAyB5WD90ZPE0e2UI84X+u+A84ApwNUiMqVTtRuBClUdDzwM/NIpLwMWqOp0vGMpz3XY5wpVPR6YBqQDl/fgPRhjjCt+vmwrESLcfV5oLAfrj27HOESkhq4ThADxRzn2SUC+qu50jvUicDHwWYc6FwMLneeLgd+KiKjqpx3qbAHiRSRWVZs6dJVFATFHiM8YYwLmwx1lvL65mO/Py2Z4ytG+KkNPty0OVU1W1QFdPJJV9WgD6xnA3g7bBU5Zl3VUtRWoAtI61bkUWKeqTe0FIrIcKMF7U+Lirk4uIje13+leWlp6lFCNMaZ3tLZ5+MmSz8gcGM+3Q3T226MJ6qkZRWQq3u6rmzuWq+q5wHAgFjiri11R1SdUNUdVc9LT012P1RhjAF5YvZe8/TXce/5k4qL75xCsm4mjEBjZYTvTKeuyjohEASlAubOdCbwKXKuqOzofXFUbgf/D291ljDEB5/EoT7y/g5zRA5k/LbSWg/WHm4ljNTBBRMaISAxwFbCkU50lfHEj4WXAO6qqIpIKLAXuVtUP2iuLSJKIDHeeRwEXALkuvgdjjPHZv/PL2HuggetOzQq55WD94eud435T1VYRuQVYDkQCT6nqFhG5H1ijqkuAJ4HnRCQfOIA3uQDcAowH7hOR+5yyc/AOyi8RkVi8SW8F8Ae33oMxxvjjrx/tIS0xhnOn9t/WBriYOABUdRmwrFPZfR2eN9LF5bSqughYdITDntibMRpjTG/YV9XA27kl3HTGWGKignr4uMf697szxpg+8tLqvXhUufrEUYEOxXWWOIwxpoda2zy8+MlezpiQzqi0hECH4zpLHMYY00Nv55ZQXN3INSf3/9YGWOIwxpge++vHnzNsQBxnTRoS6FD6hCUOY4zpgS1FVby/rZQrTxxJVGR4fKWGx7s0xhgXqCr3/d8W0hJjuOFLYwIdTp+xxGGMMcfo1U8LWbungrvmTyIlPjrQ4fQZSxzGGHMMahpb+PmyXI4fmcplJ2QGOpw+5eoNgMYY0189+tZ2yuuaePK6HCIi+u/0Il2xFocxxvgpr7iGP3+4m6tOHMnx/WgtcV9Z4jDGGD9s21/DtU99zIC4KH5wzsRAhxMQljiMMcZH6/dWcsXjq/AovHDTKaQlxQY6pICwMQ5jjPHBh/llfPvZNQxKiuEvN57M6LTEQIcUMJY4jDHmKPZVNfDtZ9eQMTCe5248maED4gIdUkBZV5UxxhzFT1/7jFaP8uR1J4Z90gBLHMYY061380pYtqmY7501npGD+v/Mt76wxGGMMUfQ2NLGj5dsYWx6It8+Y2ygwwkaNsZhjDFH8Ni7O9hTXs9fv3UysVGRgQ4naFiLwxhjurC5sIrH3tvBRceP4LTxgwMdTlCxxGGMMZ28sXkfVzy+ikEJMfzwgsmBDifoWFeVMcY4PB7l0be38+jb25k5KpXHv34CQ+wqqsNY4jDGGGBPeR0/XrKFd/NKuXRWJj/7yjTiom1coyuWOIwxYa2huY3fv5vP4+/vJDpCWLhgCtedmoVIeM146w9LHMYEUFNrG29vLaGlzcOI1HgyUuNJiouirKaJkpomymqbaGhuo6nVQ3OrhzGDE5kzMd2+1HpBU2sbf1tTwO9X5FNU1cglM0Zwz/mT7QY/H1jiMP2WqvLnD3azvaSGyAghUoQ2Veqa2qhpbKWlzcN1p47mrElDD9u3qbXtsMsvVZUtRdVsL6lhSHIcI1LjGZ4Sd0zdGfuqGvjrR5/zwiefU17X7Ne+M0elcs95kzlpzCC/zxvOPB6lpqmVyvpm3tpawhPv72B/dRMzR6Xy6NUzOTHLPk9fWeIw/dY/1hdy/2ufMTAhGhGhzaNECCTFRZEUG011Qws3PL2Gr58yinvPn0J8TCRbiqp4+F/beWvrfkakxHFcZirTM1MorGzgna0lFFc3HnIOEfjKjAx+dOEUBibGdBlHWW0TS9YXsamwisKKBgorGyiqagBg7qShXHfqaIanxFFY2UhhRQM1jS2kJ8cyJDmO9ORYEmIiiY2KIDoygjc/K+ahf23jisdXMWdiOnMnD+X4zBQmDRtATJS7F0mqKhX1LRRVNlBQ0cCe8jr2HKinqLKBaSNSuPD44Uwcmhyw1lB9cyvltc20epQ2j4cDdS18+nkF6z6vYMPeKkpqGvHoF/VPHjOIh66Ywanj0qwF5ydR1aPXCnE5OTm6Zs2aQIdxTJbuXMqj6x6luK6YYYnDuG3WbVww9oJAh9Vn9pTX8U5uCSvySmlsbuOcqUOZP20YmQO7n/qhpKaReQ+9z/ghSbx882wiu1ihram1jV+/uY0n3t/J2PREsock88aWYgbERXHZCSMprW1iY0Ele8rrSYyJ5PQJ6cydPIQZI1Mpq22mqLKBzUVVPLdqDynx0fzk4qlcMH04bR6lsLKBLUXVvPppIStyS2j1KBmp8WQMjCczNZ6swYl8ZWbGMU1h0dDcxtMf7ubJlTspq/W2VmIiIxgQH02rx0Nbm9LqUTyqKIBC9rAkvpydzhkT0pk8YgANzd5WV1VDCwUV9ewpr2d3eR01ja1ERwpRERGIQFVDCxX1LVTWN7O/upHGFs8hsQxMiGbogDi27a/BozB+SBJfGj+YIQNiGZwYS3pyLMdlphw2/XhZbRN7yusYPyS5x2t1l9c28aeVu3j2w93UNbcd9vrotARmjkxl5KAEUuKjSU2IYcKQpLBcgMlfIrJWVXMOK3czcYjIfOBRIBL4k6o+0On1WOBZ4ASgHLhSVXeLyDzgASAGaAbuVNV3RCQB+BswDmgD/qmqdx8tjlBNHEt3LmXhhwtpbPvir9y4yDgWnrqwy+TR0uahuqHF7zUC6ppaaW71HPEv5r7k8SgbCip587P9vLmlmB2ldQCMTU8kNiqSrfuqAZg0LJkBcdG0qfcLcvbYNG6dO+Fgt9F//GUtb+eWsOzW0xk/JKnbc36YX8YdL2+grqmVG740hhu+NOaQL7OqhhbioiOOeOfw1n3V3PX3jWwsqGJEShyltU20tHn/X6Unx/LVmRlcdkImE4Ym9/jz6UhVKahoYGNBFRsLKql2vvQjI4SoCCEiQhAEj6rzl3clbZ4j/38fnhJHSnw0LW0eWj2KKs4XbTQDE2IYOiCW4SnxB8diRqUlHPycymqbeH1zMa9t8Las6jt9gU8cmszJYwfR0qZ8sqv84L8reL/Yp2ekkDN6IKeMSyN7SHKXS7GW1zbxbl4pBRUNRDnvs7iqkZdW76WxtY0Lpg/ny9npREdGEBkhJMVGMT0zhcFhumZGb+jzxCEikcA2YB5QAKwGrlbVzzrU+U/gOFX9johcBXxFVa8UkZnAflUtEpFpwHJVzXASx8mqukJEYoC3gZ+r6uvdxRKqieOcxeewr27fYeXDE4fz5mVvArC/upE3txTz/vYyVu0op7apla+dPIq75k/y6S+55VuKueeVTVQ3tPDVWRn8x5zxjBncN+sMqCrv5JawoaCK/VWN7K9pZOu+avZXNxEVIZw8dhBnTx7KWZOGHFz7YE95HW9sLmZlfhmtbUpEBDS3eli9u4JJw5J5+MoZ7Cyt47vPr+Ou+ZP4jznjfIqlobmNNlWSYo+t97a1zcOzq/aw9vMKRg9KICstkbHpicwYmUpUZHDcZ1vd2MKH+WXsKa93uuuiGBAXTcbAeEYNSujVS0/bu42KKhtYs6eCj3aWs2Z3BVGRwolZgzhpzCDGpSexbX8Nm5zEV1Tl/QNpYEI00zNTSUuMITUhmrjoSD7ZdYB1n1fQ+esqQuDiGRl898xxjB/Su4nZBCZxzAYWquq5zvY9AKr6iw51ljt1VolIFFAMpGuHoMTb+VgODFfVpk7neBTYrKp/7C6WYE0cjS1tNLV4iImK8HYPdPqCOe6Z43A6Gw4hCBuv28gnuw7w7WfXUNXQQubAeE6fkE50pPCXj/aQlhTLwgVTOX/6sC77b2saW7j/n5/xt7UFTBk+gFmjU/nbmgJa2jxccNwIFi6Y4urqZlX1Ldz7j028tnEfIjA4KZahA2IZnZbI3ElDmDtpKCkJvndhrMgt4b//vpHK+mbioiPJSkvk1f88NWi+tI03uYpIl92GAHsP1PPxrgN8tLOcvOIaKuqbqaxvobaplekZKcyd7P29mDw8GY9Cq8dDhIjda+GiIyUONwfHM4C9HbYLgJOPVEdVWzJFvOoAABBXSURBVEWkCkgDyjrUuRRY10XSSAUW4O0KO4yI3ATcBDBq1Khjfxe9qM2jvL55H6t3HWDd55Vs3VdNa4eug4SYSKaOGMD0jFSGDohFW1MhquKw4wxLHMZrG4u446UNZA6K56WbTzlkUPLyE0Zyz6sb+e7z68gcGE/O6IGcMHogQwfEsb2klq37qvlk1wHKapv47pnjuG1uNjFREdw2N5snV+7izx/sYv3eCp667sSD3SsNzW089K883ttWyrwpQ7nqxFHHPMX0RzvLueOl9ZTUNHHnuRO56YyxRPfwC/7MSUNYfvsZ3PvqJt7bVsr/XH6cJY0gc7R/j5GDEhg5KIHLTsg8pNzj0S67rmJsxqSAcbPFcRkwX1W/5Wx/A2830y0d6mx26hQ42zucOmXO9lRgCXCOqu7osF8U8E+8XViPHC2WYGlx/PS1z3hy5S7ioyM5fmQKs0YNJC0pluZWDy1tHsprm9hcVM2WoioaWzyMycqjJvEFmjxfjHGoJ5qM1mvJ2zGBE7MG8sdrc0hNOHxsorXNw+K1Bby/vZQ1uysoqfki72YOjGfy8AHcfMZYcrq4BHH93kq+9cwamlra+N01s4iNiuCuv29kd3k9x49MZVNBJR6F0ycM5hunjObs1veJeOd+qCqAlEyYex8cd8Vhxy2sbOCRf21j8boCstISeeTKGa4MUHZ1Ka0xxn8h11UlIpnAO8A3VfWDTsd+CqhV1Vt9iSUYEscbm4v5zl/W8o1TRvPjBVO6/eurtc1DYWUDGanxLN/z+iFXVY2WS/nX6kwumD6cX19xvE/N9PZB1NLaJsYPSWJA3NG7gAorG7jx6dUHr5YZNSiBBy6dzqnjBrOvqoGXVxfw4urPObHmLX4V8yRxfJGYWiLiWDLqLgpHLiAjNZ7hqXG8s7WEZz/aAwrXzh7Nf83LJvEYxxOMMX0jEIkjCu/g+FygEO/g+NdUdUuHOt8FpncYHP+qql7hdEO9B/xEVV/pdNxFwGTgclU99NrAI+jrxNHY0nbIF/qe8jou/N+VjB2cyMvfmd2jv4ZVlbz9NUe88qQ31Ta1ct//bSYtMYb/mpdNQsyhX/StbR6aH5xKQkPRYfsW6mBOa/rNwe0IgUtnZXL7vGwyUuNdjdsY0zsCdTnu+cAjeC/HfUpVfyYi9wNrVHWJiMQBzwEzgQPAVaq6U0R+CNwDbO9wuHPwXp67F8iFg3/i/lZV/9RdHH2ZODYVVHHpHz5kfHoSl+dkct604Xzr2dV8Xl7P0ltP739LTy5MhS4G8BWh6d5yiiq9N7xlDkzos6u1jDG9IyCJI1j0VeLweJSvPPYhBQfqyRgYz8aCqoOv/fHaHOZNOXxqi5D38DSo2nt4ecpI+K/NfR+PMabXBOKqqrDz4uq9bNhbycNXHs9XZmaSW1zNK+sKyUiN759JA7wD4f+8FVoaviiLjveWG2P6JUscveRAXTO/Wp7LyWMGccmMDAAmDRvA/zt/QIAjc1n71VNvH/2qKmNM/2CJo5f86o1cahpb+ekl08JvwrTjrrBEYUwYsTtoesG6zyt4cfVebjgti+xeno/IGGOCjSWOXvDCx58zIC6K287ODnQoxhjjOkscvWDb/hqmZaQc8wR5xhgTSixx9JDHo2wvqbUuKmNM2LDE0UOFlQ3UN7dZ4jDGhA1LHD20bX8NABOHdb9YkDHG9BeWOHooz0kctoiMMSZcWOLooe37aw8uuWmMMeHAEkcP5RXX9Ppa0sYYE8wscfRAm0fZUVrLxKE2vmGMCR+WOHrg8wP1NLV6rMVhjAkrljh6IK/YuaLKEocxJoxY4uiB7QevqLKuKmNM+LDE0QN5+2sYOSje1s42xoQVSxw9sH1/Ldl2/4YxJsxY4jhGLW0edpbVkj3MEocxJrxY4jhGu8vqaGlTsu1SXGNMmLHEcYzapxqxyQ2NMeHGEscx2ra/lgiBcenW4jDGhBdLHN349Zt5PPfRni5f21ZcQ1ZaInHRkX0clTHGBJYljm68v72M1zft6/K1bSU1TLDxDWNMGLLE0Y0JQ5LIL6k9rLyxpY095fU2vmGMCUuWOLoxYUgSJTVNVNW3HFK+o7SWNo8y0S7FNcaEIVcTh4jMF5E8EckXkbu7eD1WRF5yXv9YRLKc8nkislZENjk/z+qwz89EZK+IHN4U6GXtXVH5pTWHlLfPUTXJEocxJgy5ljhEJBL4HXAeMAW4WkSmdKp2I1ChquOBh4FfOuVlwAJVnQ5cBzzXYZ9/Aie5FXdH49O9iWH7/kNzVN7+GmIiIxidltgXYRhjTFBxs8VxEpCvqjtVtRl4Ebi4U52LgWec54uBuSIiqvqpqhY55VuAeBGJBVDVj1S16xHrXpYxMJ646IjDxjnyimsYNySJ6Ejr6TPGhB83v/kygL0dtgucsi7rqGorUAWkdapzKbBOVZtcivOIIiOEcelJbO+UOLYV19jiTcaYsBXUfzKLyFS83Vc3H8O+N4nIGhFZU1paeswxjO90ZVVVQwtFVY1MHDbgmI9pjDGhzM3EUQiM7LCd6ZR1WUdEooAUoNzZzgReBa5V1R3+nlxVn1DVHFXNSU9PP4bwvSYMSaKwsoG6plbgizU4Jg6zFocxJjy5mThWAxNEZIyIxABXAUs61VmCd/Ab4DLgHVVVEUkFlgJ3q+oHLsZ4VOOdadN3lHpbHbntq/5Zi8MYE6ZcSxzOmMUtwHJgK/Cyqm4RkftF5CKn2pNAmojkA3cA7Zfs3gKMB+4TkfXOYwiAiPxKRAqABBEpEJGFbr0H+GJ1v/Yrq7btryE5NooRKXFuntYYY4KWq0vXqeoyYFmnsvs6PG8ELu9iv0XAoiMc87+B/+7dSI9sdFoC0ZFycIA8t7iG7GHJiEhfhWCMMUElqAfHg0F0ZARjBieSX1KLqrJtf41NNWKMCWuWOHwwYUgy+SU1lNQ0UVnfYneMG2PCmiUOH4wbksTnB+rZsLcSsMWbjDHhzRKHDyYMScKj8MaWYgCb3NAYE9YscfigfbLDf23ZT3pyLIMSYwIckTHGBI4lDh+MGZxIhEBNU6uNbxhjwp4lDh/ERkUenAnXxjeMMeHOEoeP2m8EtPENY0y4s8ThownticNaHMaYMOfqneP9ybwpQ9lcVG0tDmNM2LPE4aOZowby7A19svCgMcYENeuqMsYY4xdLHMYYY/xiicMYY4xfLHEYY4zxiyUOY4wxfrHEYYwxxi+WOIwxxvjFEocxxhi/iKoGOgbXiUgpsAdIAaqc4qM9b/85GCjz85Qdj+fra53LgzXWo5V1F59bcfoaqy+fcTDGGkz//qEUq/2u9izWMgBVnX/YK6oaNg/gCV+fd/i5pifn8fW1zuXBGuvRyo4Snytx+hqrL59xMMYaTP/+oRSr/a72PNYjPcKtq+qffjzvWNaT8/j6WufyYI31aGXdxedWnEd6vbvPtPN2MMcaTP/+XZUHa6z2u3p0x7RvWHRV9YSIrFHVnEDH4YtQiTVU4gSL1S2hEmuoxAl9G2u4tTiOxROBDsAPoRJrqMQJFqtbQiXWUIkT+jBWa3EYY4zxi7U4jDHG+MUShzHGGL9Y4jDGGOMXSxw9ICKni8gfRORPIvJhoOM5EhGJEJGficj/ish1gY6nOyIyR0T+7XyucwIdz9GISKKIrBGRCwMdS3dEZLLzmS4Wkf8IdDxHIiKXiMgfReQlETkn0PF0R0TGisiTIrI40LF0xfndfMb5PK/pzWOHbeIQkadEpERENncqny8ieSKSLyJ3d3cMVf23qn4HeA14JljjBC4GMoEWoMCNOHsxVgVqgbgQiBXgLuBld6I8GFNv/K5udX5XrwBOC+I4/6Gq3wa+A1zpRpy9GOtOVb3RrRi74mfcXwUWO5/nRb0ayLHcNdgfHsAZwCxgc4eySGAHMBaIATYAU4DpeJNDx8eQDvu9DCQHa5zA3cDNzr6Lg/kzBSKc/YYCfw3yWOcBVwHXAxcGc6zOPhcBrwNfC+Y4nf1+DcwK9s/U7f9TPYz7HmCGU+f53owjijClqu+LSFan4pOAfFXdCSAiLwIXq+ovgC67IkRkFFClqjXBGqeIFADNzmabG3H2VqwdVACxbsQJvfa5zgES8f4nbRCRZarqCcZYneMsAZaIyFLg+WCMU0QEeAB4XVXX9XaMvRlrIPgTN94Weyawnl7uXQrbxHEEGcDeDtsFwMlH2edG4M+uRdQ1f+N8BfhfETkdeN/NwLrgV6wi8lXgXCAV+K27oR3Gr1hV9V4AEbkeKHMjaXTD3891Dt6ui1hgmauRHcrf39XvAWcDKSIyXlX/4GZwnfj7maYBPwNmisg9ToIJhCPF/RvgtyJyAT2bluQwljh6SFV/HOgYjkZV6/EmuKCnqq/gTXQhQ1WfDnQMR6Oq7wLvBjiMo1LV3+D9wgt6qlqOdywmKKlqHfBNN44dtoPjR1AIjOywnemUBZtQiRMsVreESqyhEieEVqwd9XncljgOtRqYICJjRCQG78DnkgDH1JVQiRMsVreESqyhEieEVqwd9X3cfXU1QLA9gBeAfXxxieqNTvn5wDa8Vynca3FarIF+hEqsoRJnqMUajHHbJIfGGGP8Yl1Vxhhj/GKJwxhjjF8scRhjjPGLJQ5jjDF+scRhjDHGL5Y4jDHG+MUShwlLIlLbx+frlfVaxLteSZWIrBeRXBF50Id9LhGRKb1xfmPAEocxvUJEup33TVVP7cXT/VtVZwAzgQtF5Gjra1yCdwZfY3qFJQ5jHCIyTkTeEJG14l2FcJJTvkBEPhaRT0XkLREZ6pQvFJHnROQD4Dln+ykReVdEdorIrR2OXev8nOO8vthpMfzVmUocETnfKVsrIr8Rkde6i1dVG/BOmZ3h7P9tEVktIhtE5O8ikiAip+Jdh+N/nFbKuCO9T2N8ZYnDmC88AXxPVU8AfgD83ilfCZyiqjOBF4H/7rDPFOBsVb3a2Z6Ed1r4k4Afi0h0F+eZCdzu7DsWOE1E4oDHgfOc86cfLVgRGQhM4Iup8l9R1RNV9XhgK97pKD7EO2/Rnao6Q1V3dPM+jfGJTatuDCAiScCpwN+cBgB8sZBUJvCSiAzHu8Larg67LnH+8m+3VFWbgCYRKcG7kmHnJXA/UdUC57zrgSy8y+XuVNX2Y78A3HSEcE8XkQ14k8YjqlrslE8TkUV41zJJApb7+T6N8YklDmO8IoBKZ+ygs/8FHlLVJc6CSAs7vFbXqW5Th+dtdP1/zJc63fm3ql4oImOAj0TkZVVdDzwNXKKqG5zFpeZ0sW9379MYn1hXlTGAqlYDu0TkcvAuYSoixzsvp/DF+gbXuRRCHjC2w7KgVx5tB6d18gBwl1OUDOxzuseu6VC1xnntaO/TGJ9Y4jDhKkFECjo87sD7ZXuj0w20Be+6zeBtYfxNRNYCZW4E43R3/SfwhnOeGqDKh13/AJzhJJwfAR8DHwC5Heq8CNzpDO6P48jv0xif2LTqxgQJEUlS1VrnKqvfAdtV9eFAx2VMZ9biMCZ4fNsZLN+Ct3vs8QDHY0yXrMVhjDHGL9biMMYY4xdLHMYYY/xiicMYY4xfLHEYY4zxiyUOY4wxfrHEYYwxxi//H0cH9fFlpIyzAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lr_min, lr_steep = learn.lr_find(suggest_funcs=(minimum, steep))\n", "lr_min, lr_steep" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 389 }, "id": "5g4RLQWMDS6Z", "outputId": "3b17450e-8b97-4096-d77e-b2bc31071aee" }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 0.00% [0/1 00:00<00:00]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracy_multitime

\n", "\n", "

\n", " \n", " \n", " 2.68% [8/299 01:10<42:49 0.0230]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "ename": "KeyboardInterrupt", "evalue": "ignored", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfine_tune\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1e-2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/callback/schedule.py\u001b[0m in \u001b[0;36mfine_tune\u001b[0;34m(self, epochs, base_lr, freeze_epochs, lr_mult, pct_start, div, **kwargs)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;34m\"Fine tune with `Learner.freeze` for `freeze_epochs`, then with `Learner.unfreeze` for `epochs`, using discriminative LR.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfreeze\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 161\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit_one_cycle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfreeze_epochs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbase_lr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpct_start\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.99\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 162\u001b[0m \u001b[0mbase_lr\u001b[0m \u001b[0;34m/=\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munfreeze\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/callback/schedule.py\u001b[0m in \u001b[0;36mfit_one_cycle\u001b[0;34m(self, n_epoch, lr_max, div, div_final, pct_start, wd, moms, cbs, reset_opt)\u001b[0m\n\u001b[1;32m 114\u001b[0m scheds = {'lr': combined_cos(pct_start, lr_max/div, lr_max, lr_max/div_final),\n\u001b[1;32m 115\u001b[0m 'mom': combined_cos(pct_start, *(self.moms if moms is None else moms))}\n\u001b[0;32m--> 116\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_epoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcbs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mParamScheduler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscheds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mL\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcbs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreset_opt\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreset_opt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 117\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[0;31m# Cell\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, n_epoch, lr, wd, cbs, reset_opt)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_hypers\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlr\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlr\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mlr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 220\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_epoch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mn_epoch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 221\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_with_events\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_fit\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'fit'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCancelFitException\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_end_cleanup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 222\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_end_cleanup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxb\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0myb\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36m_with_events\u001b[0;34m(self, f, event_type, ex, final)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_with_events\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevent_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnoop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'before_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'after_cancel_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'after_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36m_do_fit\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 210\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mepoch\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_epoch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 212\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_with_events\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_epoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'epoch'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCancelEpochException\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 213\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_epoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcbs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreset_opt\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36m_with_events\u001b[0;34m(self, f, event_type, ex, final)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_with_events\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevent_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnoop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'before_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'after_cancel_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'after_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36m_do_epoch\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_epoch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_epoch_train\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 207\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_epoch_validate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36m_do_epoch_train\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 196\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_epoch_train\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 198\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_with_events\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall_batches\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'train'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCancelTrainException\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 199\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_epoch_validate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mds_idx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36m_with_events\u001b[0;34m(self, f, event_type, ex, final)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_with_events\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevent_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnoop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'before_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'after_cancel_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'after_{event_type}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/learner.py\u001b[0m in \u001b[0;36mall_batches\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mall_batches\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_iter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 169\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mone_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 170\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 171\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_one_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/fastai/data/load.py\u001b[0m in \u001b[0;36m__iter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbefore_iter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__idxs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_idxs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# called in context of main process (not workers/subprocesses)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 109\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mb\u001b[0m \u001b[0;32min\u001b[0m \u001b[0m_loaders\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfake_l\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_workers\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfake_l\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 110\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mto_device\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mafter_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 519\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sampler_iter\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 520\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 521\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_next_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 522\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_num_yielded\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 523\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dataset_kind\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0m_DatasetKind\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIterable\u001b[0m \u001b[0;32mand\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_next_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1185\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_shutdown\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tasks_outstanding\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1186\u001b[0;31m \u001b[0midx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1187\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tasks_outstanding\u001b[0m \u001b[0;34m-=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dataset_kind\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0m_DatasetKind\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIterable\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_get_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1150\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1151\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1152\u001b[0;31m \u001b[0msuccess\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_try_get_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1153\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msuccess\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1154\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_try_get_data\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 988\u001b[0m \u001b[0;31m# (bool: whether successfully get data, any: data if successful else None)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 989\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 990\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data_queue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 991\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 992\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.7/multiprocessing/queues.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, block, timeout)\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdeadline\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmonotonic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 104\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_poll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 105\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mEmpty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_poll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.7/multiprocessing/connection.py\u001b[0m in \u001b[0;36mpoll\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_check_closed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_check_readable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 257\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_poll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 258\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.7/multiprocessing/connection.py\u001b[0m in \u001b[0;36m_poll\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 412\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_poll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 414\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 415\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbool\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 416\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.7/multiprocessing/connection.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(object_list, timeout)\u001b[0m\n\u001b[1;32m 919\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 920\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 921\u001b[0;31m \u001b[0mready\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mselector\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 922\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mready\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 923\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfileobj\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevents\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mready\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.7/selectors.py\u001b[0m in \u001b[0;36mselect\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0mready\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 415\u001b[0;31m \u001b[0mfd_event_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_selector\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpoll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 416\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mInterruptedError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 417\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mready\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "learn.fit_one_cycle(2, lr_max=slice(1e-2,))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "_maS0v37OnoT" }, "outputs": [], "source": [ "with open('classes.txt', 'w+') as f:\n", " for item in dls.vocab:\n", " f.write(item+'\\n')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "rDMN6hCfOqlj" }, "outputs": [], "source": [ "" ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [ "JnxH6gchOXj9", "nSdXLF0XSQtl", "Ftnca652XccJ", "4SHmbjNVXj3e", "Sla41MkM3KC_", "OxIeWLpMAUcS" ], "machine_shape": "hm", "name": "Anime Image Labeller.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }