From a9df511a89b141ff1ba10dbfd41fa9eb2a066173 Mon Sep 17 00:00:00 2001 From: John Carter <jac202@ic.ac.uk> Date: Wed, 20 Apr 2022 16:37:32 +0100 Subject: [PATCH] early stop v fixed epochs, GPU added to UCB1 --- MetaAugment/Baseline_JC.ipynb | 3326 +++------------------------------ MetaAugment/UCB1_JC.ipynb | 353 ++-- 2 files changed, 406 insertions(+), 3273 deletions(-) diff --git a/MetaAugment/Baseline_JC.ipynb b/MetaAugment/Baseline_JC.ipynb index 69d10a94..f1783cd5 100644 --- a/MetaAugment/Baseline_JC.ipynb +++ b/MetaAugment/Baseline_JC.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "id": "U_ZJ2LqDiu_v" }, @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "4ksS_duLFADW" }, @@ -63,11 +63,6 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "ukf2-C94UWzs" - }, - "outputs": [], "source": [ "\"\"\"Define internal NN module that trains on the dataset\"\"\"\n", "class EasyNet(nn.Module):\n", @@ -85,15 +80,15 @@ " y = self.fc2(y)\n", " y = self.relu2(y)\n", " return y" - ] + ], + "metadata": { + "id": "ukf2-C94UWzs" + }, + "execution_count": null, + "outputs": [] }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "Fd9_36R3zx5B" - }, - "outputs": [], "source": [ "\"\"\"Define internal NN module that trains on the dataset\"\"\"\n", "class SimpleNet(nn.Module):\n", @@ -107,11 +102,16 @@ " y = self.fc1(y)\n", " y = self.relu1(y)\n", " return y" - ] + ], + "metadata": { + "id": "Fd9_36R3zx5B" + }, + "execution_count": null, + "outputs": [] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "xujQtvVWBgMH" }, @@ -142,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "vu_4I4qkbx73" }, @@ -207,7 +207,7 @@ " # train model\n", " model.train()\n", " for idx, (train_x, train_label) in enumerate(train_loader):\n", - " train_x, train_label = train_x.to(device), train_label.to(device)\n", + " train_x, train_label = train_x.to(device), train_label.to(device) # new code\n", " label_np = np.zeros((train_label.shape[0], num_labels))\n", " sgd.zero_grad()\n", " predict_y = model(train_x.float())\n", @@ -254,426 +254,403 @@ }, { "cell_type": "code", - "execution_count": 7, + "source": [ + "%%time\n", + "\n", + "batch_size = 32 # size of batch the inner NN is trained with\n", + "learning_rate = 1e-1 # fix learning rate\n", + "ds = \"CIFAR10\" # pick dataset (MNIST, KMNIST, FashionMNIST, CIFAR10, CIFAR100)\n", + "toy_size = 1 # total propeortion of training and test set we use\n", + "max_epochs = 100 # max number of epochs that is run if early stopping is not hit\n", + "early_stop_num = 10 # max number of worse validation scores before early stopping is triggered\n", + "early_stop_flag = True # implement early stopping or not\n", + "average_validation = [15,25] # if not implementing early stopping, what epochs are we averaging over\n", + "num_iterations = 10 # how many iterations are we averaging over\n", + "IsLeNet = \"LeNet\" # using LeNet or EasyNet or SimpleNet\n", + "\n", + "# run using early stopping\n", + "best_accuracies_1 = []\n", + "for baselines in trange(num_iterations):\n", + " best_acc = run_baseline(batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, early_stop_flag, average_validation, IsLeNet)\n", + " best_accuracies_1.append(best_acc)\n", + " if baselines % 10 == 0:\n", + " print(\"{}\\tBest accuracy: {:.2f}%\".format(baselines, best_acc*100))\n", + "print(\"Average best accuracy: {:.2f}%\\n\".format(np.mean(best_accuracies_1)*100))\n", + "\n", + "file = open(f\"{ds}_v1.txt\", \"w\")\n", + "content = ','.join(str(e) for e in best_accuracies_1)\n", + "file.write(content)\n", + "file.close()\n", + "\n", + "# run using average validation losses\n", + "early_stop_flag = False\n", + "best_accuracies_2 = []\n", + "for baselines in trange(num_iterations):\n", + " best_acc = run_baseline(batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, early_stop_flag, average_validation, IsLeNet)\n", + " best_accuracies_2.append(best_acc)\n", + " if baselines % 10 == 0:\n", + " print(\"{}\\tBest accuracy: {:.2f}%\".format(baselines, best_acc*100))\n", + "print(\"Average average accuracy: {:.2f}%\\n\".format(np.mean(best_accuracies_2)*100))\n", + "\n", + "file = open(f\"{ds}_v2.txt\", \"w\")\n", + "content = ','.join(str(e) for e in best_accuracies_2)\n", + "file.write(content)\n", + "file.close()" + ], "metadata": { "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000, - "referenced_widgets": [ - "bcbc913a6c3642dbb96dff550f5d66e6", - "0873bab106ce479da9fb7206f4801a47", - "64c3533fd61a400a9d30997e636f1471", - "7f6c45b22f3845378b7b847ce21f1962", - "812dc9c854ad4daea90212cd0d7a3579", - "ae57ccefa11b4838915518fd22c57524", - "b584e1cf0edd49bdbfb86b8b97bf5008", - "3ace12a047d4488a89db04dcad69d83f", - "351212c398dc4c9a8503f86833a9ba60", - "9bf5a1834e3044929bdb0f692913e155", - "ee4a5af70d2744568c6dee1dd92729a9", - "ec2cbf2353b14d688e177602f0165abd", - "57a850849ce14d5f9149ff89300c7742", - "52711f55ef6b40c19a7b41bbffabae01", - "7c85312986244bd5a5269afba7c7e955", - "c99c620876a745bf91ecdab525e7ad5f", - "3822da4fea3e432a923d13c334e9c3d9", - "b6961533b2214282973b00768cf20c74", - "1ce285474d20428582179d53b185b092", - "330e1a0f579c47619693773177a17ac4", - "cca1dfae30984e099493396e86ab9919", - "cfc55c07a999409f813b182b760256df", - "2e161aa0ca2349bf8dbe65649fb4ca56", - "c541261978184fce8c4de8e2d9be943e", - "15f2530f03da48f785c41aa8083df8bb", - "22f800b9ce1e4d478863267239d81a08", - "25e9d0cc377f47d2adaba6c5dbbf678e", - "76520d31b93e476b880eb388e00f3ce2", - "9069d655a97f488d8f96b530dd622658", - "7703f2d19f2246ac89d9df1e49d42669", - "3d5cb16ec36e4c68842197aa70fc6c9b", - "f69ce5bc13654dc18f4a5f71b906ef8f", - "4eccb6179fa84955b78a255a32ede8e4", - "f0bd92d5abbf4dbb9a90d131eb5bf4b1", - "2e307a3fb1a74f89a3589e6d6656fac8", - "65e5d46ba544477f881093b1f713e8de", - "1bb4eea06db646d782fbdae2af869762", - "840bc851bd9d402b8f21d6c86a28bc03", - "361122cefe0843f6899ebb4596789eaf", - "3ef04926ce2c4a83a83042f0290a2022", - "6b8cc1d945924ecea395e9f098888197", - "c7b0e2052b1b4cbab02242b59cd374ca", - "954eb16e03e648d789990fb567579741", - "a1c3f9ca859c46b3a3b848a709735f27", - "0396266d973248bdad617b8781e5d275", - "ebe7ef1c0cd44014a792fe42c89bcc0f", - "d623753cff4e4c9390d4b1544e97ac7e", - "23a8175537344bf69c1939f0ded70034", - "cee302836f8140438e4d2ac1b416280f", - "c904e3fadc274f31bb15c21d5f430502", - "3b006c2184c746609b9e1f20fc07e42e", - "32f8b1395ecd43ebb783de565b04b73e", - "c5e4cb9aca3b47d381e74c124145e06e", - "cd2033d0559f4f1bb7489b37386f8f10", - "c2fbf4b2fe4647f39908ed98a4f3a232", - "8286d534cbe14527a46aa7a0be632661", - "7e559ac323bc4e64a53a3f18eb2dd3f6", - "cde2cac15c3c4c609c6352dd9b683a1b", - "74293a4d7260461787feb360532db189", - "4bcb760c69004efea83701eefe67713e", - "fd47d886e13d42cd8c2993146e81e653", - "ec1bb88dd3cd4dffa2a9f1b38bf13379", - "2a90c00af7434eb8899c1d01fd6cb9b6", - "7e75ef6894814ba189289fd4ee093a04", - "46783cc1e2f241ed9a1a0f3160b03198", - "b7d88f42a0224666857714f7982426d6", - "10213db38b8246a3822f24c33415df5e", - "3d018be847f444e39bb92e5b8a7ca0f2", - "4dce522f9a644e95b6a5239c5b6650c4", - "9f8ec848584e45ab8401fb5908ef7c75", - "6634fe0857ca4145ac87ff553b6ecadf", - "b4e4fcdb66fb4eeeb40eebef09225cea", - "89f20579729a49f38267f0db4602141f", - "4f3a6394ee1b460886eda95d9f1371a7", - "b2c666a3a59c4fe98b353e8e9b828f2f", - "5b564189f0fd46b7b156aeea0ca348c2", - "d77598565b8b4e0e9cd1ef3017e5a51c", - "8f2cc891f97b4458b550a053fe817f9c", - "e7c3e2849a304c2681151edac0fc49e9", - "1448e0cb5b424ae1af3e86ed7121dae4", - "aca8d3c965d046738d232d6faf1900b6", - "b8f0be601a9e44c1b6f31cb144a36c02", - "ae6e789ca53548b8838743d478ad72ce", - "910fd81c41884aad985b210c653c5b63", - "0359ced0ae6241b698a2683e52a647f2", - "7eefb17bb4864694a456d191759a131c", - "a343b8c6fc824410a9a8d32103a8383f", - "2073c333f53043fe938e3ac22c919624" - ] + "base_uri": "https://localhost:8080/" }, "id": "KVhYheLfBP33", - "outputId": "acd383d5-52f4-43bd-a36e-103bc70f54cc" + "outputId": "4858df7d-ee29-4e3b-ac2f-e33a9a4bbf32" }, + "execution_count": null, "outputs": [ { - "name": "stderr", "output_type": "stream", + "name": "stderr", "text": [ "\r 0%| | 0/10 [00:00<?, ?it/s]" ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./MetaAugment/train/MNIST/raw/train-images-idx3-ubyte.gz\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "bcbc913a6c3642dbb96dff550f5d66e6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/9912422 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 10%|█ | 1/10 [07:27<1:07:04, 447.20s/it]" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Extracting ./MetaAugment/train/MNIST/raw/train-images-idx3-ubyte.gz to ./MetaAugment/train/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./MetaAugment/train/MNIST/raw/train-labels-idx1-ubyte.gz\n" + "0\tBest accuracy: 54.32%\n", + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ec2cbf2353b14d688e177602f0165abd", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/28881 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 20%|██ | 2/10 [12:32<48:32, 364.01s/it] " + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Extracting ./MetaAugment/train/MNIST/raw/train-labels-idx1-ubyte.gz to ./MetaAugment/train/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./MetaAugment/train/MNIST/raw/t10k-images-idx3-ubyte.gz\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2e161aa0ca2349bf8dbe65649fb4ca56", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1648877 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 30%|███ | 3/10 [17:55<40:16, 345.25s/it]" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Extracting ./MetaAugment/train/MNIST/raw/t10k-images-idx3-ubyte.gz to ./MetaAugment/train/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./MetaAugment/train/MNIST/raw/t10k-labels-idx1-ubyte.gz\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f0bd92d5abbf4dbb9a90d131eb5bf4b1", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/4542 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 40%|████ | 4/10 [23:17<33:35, 335.87s/it]" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Extracting ./MetaAugment/train/MNIST/raw/t10k-labels-idx1-ubyte.gz to ./MetaAugment/train/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./MetaAugment/test/MNIST/raw/train-images-idx3-ubyte.gz\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0396266d973248bdad617b8781e5d275", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/9912422 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 50%|█████ | 5/10 [27:43<25:53, 310.76s/it]" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Extracting ./MetaAugment/test/MNIST/raw/train-images-idx3-ubyte.gz to ./MetaAugment/test/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./MetaAugment/test/MNIST/raw/train-labels-idx1-ubyte.gz\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8286d534cbe14527a46aa7a0be632661", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/28881 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 60%|██████ | 6/10 [32:27<20:06, 301.69s/it]" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Extracting ./MetaAugment/test/MNIST/raw/train-labels-idx1-ubyte.gz to ./MetaAugment/test/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./MetaAugment/test/MNIST/raw/t10k-images-idx3-ubyte.gz\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "10213db38b8246a3822f24c33415df5e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/1648877 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 70%|███████ | 7/10 [38:03<15:38, 312.93s/it]" + ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "Extracting ./MetaAugment/test/MNIST/raw/t10k-images-idx3-ubyte.gz to ./MetaAugment/test/MNIST/raw\n", - "\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\n", - "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./MetaAugment/test/MNIST/raw/t10k-labels-idx1-ubyte.gz\n" + "\r 80%|████████ | 8/10 [46:02<12:11, 365.57s/it]" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8f2cc891f97b4458b550a053fe817f9c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/4542 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 90%|█████████ | 9/10 [51:08<05:47, 347.04s/it]" + ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "Extracting ./MetaAugment/test/MNIST/raw/t10k-labels-idx1-ubyte.gz to ./MetaAugment/test/MNIST/raw\n", + "100%|██████████| 10/10 [57:26<00:00, 344.66s/it]\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average best accuracy: 55.38%\n", "\n" ] }, { - "name": "stderr", "output_type": "stream", + "name": "stderr", "text": [ - "\r 10%|█ | 1/10 [00:17<02:34, 17.17s/it]" + "\r 0%| | 0/10 [00:00<?, ?it/s]" ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "0\tBest accuracy: 62.00%\n" + "\r 10%|█ | 1/10 [07:50<1:10:35, 470.60s/it]" ] }, { + "output_type": "stream", + "name": "stdout", + "text": [ + "0\tBest accuracy: 52.04%\n", + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { + "output_type": "stream", "name": "stderr", + "text": [ + "\r 20%|██ | 2/10 [15:37<1:02:27, 468.42s/it]" + ] + }, + { "output_type": "stream", + "name": "stdout", "text": [ - "100%|██████████| 10/10 [01:13<00:00, 7.40s/it]\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 30%|███ | 3/10 [23:15<54:05, 463.58s/it] " + ] + }, + { + "output_type": "stream", "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "Average best accuracy: 78.95%\n", - "\n" + "\r 40%|████ | 4/10 [30:56<46:16, 462.78s/it]" ] }, { + "output_type": "stream", + "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { + "output_type": "stream", "name": "stderr", + "text": [ + "\r 50%|█████ | 5/10 [38:38<38:31, 462.39s/it]" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - " 10%|█ | 1/10 [00:07<01:03, 7.02s/it]" + "\r 60%|██████ | 6/10 [46:18<30:46, 461.53s/it]" ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", + "text": [ + "\r 70%|███████ | 7/10 [53:57<23:02, 460.88s/it]" + ] + }, + { + "output_type": "stream", + "name": "stdout", "text": [ - "0\tAverage accuracy: 84.05%\n" + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" ] }, { + "output_type": "stream", "name": "stderr", + "text": [ + "\r 80%|████████ | 8/10 [1:01:38<15:21, 460.87s/it]" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "100%|██████████| 10/10 [01:09<00:00, 6.95s/it]" + "\r 90%|█████████ | 9/10 [1:09:19<07:40, 460.77s/it]" ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Files already downloaded and verified\n", + "Files already downloaded and verified\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "Average average accuracy: 81.36%\n", + "100%|██████████| 10/10 [1:16:55<00:00, 461.54s/it]" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Average average accuracy: 52.48%\n", "\n", - "CPU times: user 2min 12s, sys: 3.91 s, total: 2min 16s\n", - "Wall time: 2min 23s\n" + "CPU times: user 2h 12min 17s, sys: 2min 26s, total: 2h 14min 43s\n", + "Wall time: 2h 14min 22s\n" ] }, { - "name": "stderr", "output_type": "stream", + "name": "stderr", "text": [ "\n" ] } - ], - "source": [ - "%%time\n", - "\n", - "batch_size = 32 # size of batch the inner NN is trained with\n", - "learning_rate = 1e-1 # fix learning rate\n", - "ds = \"FashionMNIST\" # pick dataset (MNIST, KMNIST, FashionMNIST, CIFAR10,...)\n", - "toy_size = 1 # total propeortion of training and test set we use\n", - "max_epochs = 100 # max number of epochs that is run if early stopping is not hit\n", - "early_stop_num = 10 # max number of worse validation scores before early stopping is triggered\n", - "early_stop_flag = True # implement early stopping or not\n", - "average_validation = [15,25] # if not implementing early stopping, what epochs are we averaging over\n", - "num_iterations = 10 # how many iterations are we averaging over\n", - "IsLeNet = \"SimpleNet\" # using LeNet or EasyNet or SimpleNet\n", - "\n", - "# run using early stopping\n", - "best_accuracies_1 = []\n", - "for baselines in trange(num_iterations):\n", - " best_acc = run_baseline(batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, early_stop_flag, average_validation, IsLeNet)\n", - " best_accuracies_1.append(best_acc)\n", - " if baselines % 10 == 0:\n", - " print(\"{}\\tBest accuracy: {:.2f}%\".format(baselines, best_acc*100))\n", - "print(\"Average best accuracy: {:.2f}%\\n\".format(np.mean(best_accuracies_1)*100))\n", - "\n", - "file = open(f\"{ds}_v1.txt\", \"w\")\n", - "content = ','.join(str(e) for e in best_accuracies_1)\n", - "file.write(content)\n", - "file.close()\n", - "\n", - "# run using average validation losses\n", - "early_stop_flag = False\n", - "best_accuracies_2 = []\n", - "for baselines in trange(num_iterations):\n", - " best_acc = run_baseline(batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, early_stop_flag, average_validation, IsLeNet)\n", - " best_accuracies_2.append(best_acc)\n", - " if baselines % 10 == 0:\n", - " print(\"{}\\tBest accuracy: {:.2f}%\".format(baselines, best_acc*100))\n", - "print(\"Average average accuracy: {:.2f}%\\n\".format(np.mean(best_accuracies_2)*100))\n", - "\n", - "file = open(f\"{ds}_v2.txt\", \"w\")\n", - "content = ','.join(str(e) for e in best_accuracies_2)\n", - "file.write(content)\n", - "file.close()\n" ] } ], "metadata": { - "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "Baseline.ipynb", @@ -696,2747 +673,8 @@ "pygments_lexer": "ipython3", "version": "3.7.7" }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "0359ced0ae6241b698a2683e52a647f2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0396266d973248bdad617b8781e5d275": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ebe7ef1c0cd44014a792fe42c89bcc0f", - "IPY_MODEL_d623753cff4e4c9390d4b1544e97ac7e", - "IPY_MODEL_23a8175537344bf69c1939f0ded70034" - ], - "layout": "IPY_MODEL_cee302836f8140438e4d2ac1b416280f" - } - }, - "0873bab106ce479da9fb7206f4801a47": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ae57ccefa11b4838915518fd22c57524", - "placeholder": "​", - "style": "IPY_MODEL_b584e1cf0edd49bdbfb86b8b97bf5008", - "value": "" - } - }, - "10213db38b8246a3822f24c33415df5e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_3d018be847f444e39bb92e5b8a7ca0f2", - "IPY_MODEL_4dce522f9a644e95b6a5239c5b6650c4", - "IPY_MODEL_9f8ec848584e45ab8401fb5908ef7c75" - ], - "layout": "IPY_MODEL_6634fe0857ca4145ac87ff553b6ecadf" - } - }, - "1448e0cb5b424ae1af3e86ed7121dae4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0359ced0ae6241b698a2683e52a647f2", - "max": 4542, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_7eefb17bb4864694a456d191759a131c", - "value": 4542 - } - }, - "15f2530f03da48f785c41aa8083df8bb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7703f2d19f2246ac89d9df1e49d42669", - "max": 1648877, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_3d5cb16ec36e4c68842197aa70fc6c9b", - "value": 1648877 - } - }, - "1bb4eea06db646d782fbdae2af869762": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_954eb16e03e648d789990fb567579741", - "placeholder": "​", - "style": "IPY_MODEL_a1c3f9ca859c46b3a3b848a709735f27", - "value": " 5120/? [00:00<00:00, 115844.75it/s]" - } - }, - "1ce285474d20428582179d53b185b092": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2073c333f53043fe938e3ac22c919624": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "22f800b9ce1e4d478863267239d81a08": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f69ce5bc13654dc18f4a5f71b906ef8f", - "placeholder": "​", - "style": "IPY_MODEL_4eccb6179fa84955b78a255a32ede8e4", - "value": " 1649664/? [00:00<00:00, 18286020.17it/s]" - } - }, - "23a8175537344bf69c1939f0ded70034": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_cd2033d0559f4f1bb7489b37386f8f10", - "placeholder": "​", - "style": "IPY_MODEL_c2fbf4b2fe4647f39908ed98a4f3a232", - "value": " 9913344/? [00:00<00:00, 29346538.60it/s]" - } - }, - "25e9d0cc377f47d2adaba6c5dbbf678e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2a90c00af7434eb8899c1d01fd6cb9b6": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2e161aa0ca2349bf8dbe65649fb4ca56": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c541261978184fce8c4de8e2d9be943e", - "IPY_MODEL_15f2530f03da48f785c41aa8083df8bb", - "IPY_MODEL_22f800b9ce1e4d478863267239d81a08" - ], - "layout": "IPY_MODEL_25e9d0cc377f47d2adaba6c5dbbf678e" - } - }, - "2e307a3fb1a74f89a3589e6d6656fac8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_361122cefe0843f6899ebb4596789eaf", - "placeholder": "​", - "style": "IPY_MODEL_3ef04926ce2c4a83a83042f0290a2022", - "value": "" - } - }, - "32f8b1395ecd43ebb783de565b04b73e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "330e1a0f579c47619693773177a17ac4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "351212c398dc4c9a8503f86833a9ba60": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "361122cefe0843f6899ebb4596789eaf": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3822da4fea3e432a923d13c334e9c3d9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3ace12a047d4488a89db04dcad69d83f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3b006c2184c746609b9e1f20fc07e42e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3d018be847f444e39bb92e5b8a7ca0f2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b4e4fcdb66fb4eeeb40eebef09225cea", - "placeholder": "​", - "style": "IPY_MODEL_89f20579729a49f38267f0db4602141f", - "value": "" - } - }, - "3d5cb16ec36e4c68842197aa70fc6c9b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "3ef04926ce2c4a83a83042f0290a2022": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "46783cc1e2f241ed9a1a0f3160b03198": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4bcb760c69004efea83701eefe67713e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4dce522f9a644e95b6a5239c5b6650c4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4f3a6394ee1b460886eda95d9f1371a7", - "max": 1648877, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_b2c666a3a59c4fe98b353e8e9b828f2f", - "value": 1648877 - } - }, - "4eccb6179fa84955b78a255a32ede8e4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "4f3a6394ee1b460886eda95d9f1371a7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "52711f55ef6b40c19a7b41bbffabae01": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1ce285474d20428582179d53b185b092", - "max": 28881, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_330e1a0f579c47619693773177a17ac4", - "value": 28881 - } - }, - "57a850849ce14d5f9149ff89300c7742": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_3822da4fea3e432a923d13c334e9c3d9", - "placeholder": "​", - "style": "IPY_MODEL_b6961533b2214282973b00768cf20c74", - "value": "" - } - }, - "5b564189f0fd46b7b156aeea0ca348c2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "64c3533fd61a400a9d30997e636f1471": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_3ace12a047d4488a89db04dcad69d83f", - "max": 9912422, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_351212c398dc4c9a8503f86833a9ba60", - "value": 9912422 - } - }, - "65e5d46ba544477f881093b1f713e8de": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_6b8cc1d945924ecea395e9f098888197", - "max": 4542, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c7b0e2052b1b4cbab02242b59cd374ca", - "value": 4542 - } - }, - "6634fe0857ca4145ac87ff553b6ecadf": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "6b8cc1d945924ecea395e9f098888197": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "74293a4d7260461787feb360532db189": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_46783cc1e2f241ed9a1a0f3160b03198", - "placeholder": "​", - "style": "IPY_MODEL_b7d88f42a0224666857714f7982426d6", - "value": " 29696/? [00:00<00:00, 778939.92it/s]" - } - }, - "76520d31b93e476b880eb388e00f3ce2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7703f2d19f2246ac89d9df1e49d42669": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7c85312986244bd5a5269afba7c7e955": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_cca1dfae30984e099493396e86ab9919", - "placeholder": "​", - "style": "IPY_MODEL_cfc55c07a999409f813b182b760256df", - "value": " 29696/? [00:00<00:00, 669976.83it/s]" - } - }, - "7e559ac323bc4e64a53a3f18eb2dd3f6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fd47d886e13d42cd8c2993146e81e653", - "placeholder": "​", - "style": "IPY_MODEL_ec1bb88dd3cd4dffa2a9f1b38bf13379", - "value": "" - } - }, - "7e75ef6894814ba189289fd4ee093a04": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "7eefb17bb4864694a456d191759a131c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "7f6c45b22f3845378b7b847ce21f1962": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9bf5a1834e3044929bdb0f692913e155", - "placeholder": "​", - "style": "IPY_MODEL_ee4a5af70d2744568c6dee1dd92729a9", - "value": " 9913344/? [00:00<00:00, 25523032.36it/s]" - } - }, - "812dc9c854ad4daea90212cd0d7a3579": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "8286d534cbe14527a46aa7a0be632661": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_7e559ac323bc4e64a53a3f18eb2dd3f6", - "IPY_MODEL_cde2cac15c3c4c609c6352dd9b683a1b", - "IPY_MODEL_74293a4d7260461787feb360532db189" - ], - "layout": "IPY_MODEL_4bcb760c69004efea83701eefe67713e" - } - }, - "840bc851bd9d402b8f21d6c86a28bc03": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "89f20579729a49f38267f0db4602141f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "8f2cc891f97b4458b550a053fe817f9c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_e7c3e2849a304c2681151edac0fc49e9", - "IPY_MODEL_1448e0cb5b424ae1af3e86ed7121dae4", - "IPY_MODEL_aca8d3c965d046738d232d6faf1900b6" - ], - "layout": "IPY_MODEL_b8f0be601a9e44c1b6f31cb144a36c02" - } - }, - "9069d655a97f488d8f96b530dd622658": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "910fd81c41884aad985b210c653c5b63": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "954eb16e03e648d789990fb567579741": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9bf5a1834e3044929bdb0f692913e155": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9f8ec848584e45ab8401fb5908ef7c75": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5b564189f0fd46b7b156aeea0ca348c2", - "placeholder": "​", - "style": "IPY_MODEL_d77598565b8b4e0e9cd1ef3017e5a51c", - "value": " 1649664/? [00:00<00:00, 4382609.24it/s]" - } - }, - "a1c3f9ca859c46b3a3b848a709735f27": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "a343b8c6fc824410a9a8d32103a8383f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "aca8d3c965d046738d232d6faf1900b6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a343b8c6fc824410a9a8d32103a8383f", - "placeholder": "​", - "style": "IPY_MODEL_2073c333f53043fe938e3ac22c919624", - "value": " 5120/? [00:00<00:00, 112235.67it/s]" - } - }, - "ae57ccefa11b4838915518fd22c57524": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ae6e789ca53548b8838743d478ad72ce": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b2c666a3a59c4fe98b353e8e9b828f2f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "b4e4fcdb66fb4eeeb40eebef09225cea": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b584e1cf0edd49bdbfb86b8b97bf5008": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b6961533b2214282973b00768cf20c74": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b7d88f42a0224666857714f7982426d6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b8f0be601a9e44c1b6f31cb144a36c02": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bcbc913a6c3642dbb96dff550f5d66e6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_0873bab106ce479da9fb7206f4801a47", - "IPY_MODEL_64c3533fd61a400a9d30997e636f1471", - "IPY_MODEL_7f6c45b22f3845378b7b847ce21f1962" - ], - "layout": "IPY_MODEL_812dc9c854ad4daea90212cd0d7a3579" - } - }, - "c2fbf4b2fe4647f39908ed98a4f3a232": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "c541261978184fce8c4de8e2d9be943e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_76520d31b93e476b880eb388e00f3ce2", - "placeholder": "​", - "style": "IPY_MODEL_9069d655a97f488d8f96b530dd622658", - "value": "" - } - }, - "c5e4cb9aca3b47d381e74c124145e06e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c7b0e2052b1b4cbab02242b59cd374ca": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c904e3fadc274f31bb15c21d5f430502": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c99c620876a745bf91ecdab525e7ad5f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "cca1dfae30984e099493396e86ab9919": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "cd2033d0559f4f1bb7489b37386f8f10": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "cde2cac15c3c4c609c6352dd9b683a1b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_2a90c00af7434eb8899c1d01fd6cb9b6", - "max": 28881, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_7e75ef6894814ba189289fd4ee093a04", - "value": 28881 - } - }, - "cee302836f8140438e4d2ac1b416280f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "cfc55c07a999409f813b182b760256df": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "d623753cff4e4c9390d4b1544e97ac7e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_32f8b1395ecd43ebb783de565b04b73e", - "max": 9912422, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c5e4cb9aca3b47d381e74c124145e06e", - "value": 9912422 - } - }, - "d77598565b8b4e0e9cd1ef3017e5a51c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "e7c3e2849a304c2681151edac0fc49e9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ae6e789ca53548b8838743d478ad72ce", - "placeholder": "​", - "style": "IPY_MODEL_910fd81c41884aad985b210c653c5b63", - "value": "" - } - }, - "ebe7ef1c0cd44014a792fe42c89bcc0f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c904e3fadc274f31bb15c21d5f430502", - "placeholder": "​", - "style": "IPY_MODEL_3b006c2184c746609b9e1f20fc07e42e", - "value": "" - } - }, - "ec1bb88dd3cd4dffa2a9f1b38bf13379": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "ec2cbf2353b14d688e177602f0165abd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_57a850849ce14d5f9149ff89300c7742", - "IPY_MODEL_52711f55ef6b40c19a7b41bbffabae01", - "IPY_MODEL_7c85312986244bd5a5269afba7c7e955" - ], - "layout": "IPY_MODEL_c99c620876a745bf91ecdab525e7ad5f" - } - }, - "ee4a5af70d2744568c6dee1dd92729a9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f0bd92d5abbf4dbb9a90d131eb5bf4b1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_2e307a3fb1a74f89a3589e6d6656fac8", - "IPY_MODEL_65e5d46ba544477f881093b1f713e8de", - "IPY_MODEL_1bb4eea06db646d782fbdae2af869762" - ], - "layout": "IPY_MODEL_840bc851bd9d402b8f21d6c86a28bc03" - } - }, - "f69ce5bc13654dc18f4a5f71b906ef8f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fd47d886e13d42cd8c2993146e81e653": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } - } + "accelerator": "GPU" }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file diff --git a/MetaAugment/UCB1_JC.ipynb b/MetaAugment/UCB1_JC.ipynb index aed95670..5710a128 100644 --- a/MetaAugment/UCB1_JC.ipynb +++ b/MetaAugment/UCB1_JC.ipynb @@ -1,12 +1,24 @@ { + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "UCB1.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU" + }, "cells": [ { "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "U_ZJ2LqDiu_v" - }, - "outputs": [], "source": [ "import numpy as np\n", "import torch\n", @@ -21,15 +33,15 @@ "from matplotlib import pyplot as plt\n", "from numpy import save, load\n", "from tqdm import trange" - ] + ], + "metadata": { + "id": "U_ZJ2LqDiu_v" + }, + "execution_count": 1, + "outputs": [] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "4ksS_duLFADW" - }, - "outputs": [], "source": [ "\"\"\"Define internal NN module that trains on the dataset\"\"\"\n", "class LeNet(nn.Module):\n", @@ -63,15 +75,15 @@ " y = self.fc3(y)\n", " y = self.relu5(y)\n", " return y" - ] + ], + "metadata": { + "id": "4ksS_duLFADW" + }, + "execution_count": 2, + "outputs": [] }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "LckxnUXGfxjW" - }, - "outputs": [], "source": [ "\"\"\"Define internal NN module that trains on the dataset\"\"\"\n", "class EasyNet(nn.Module):\n", @@ -89,15 +101,15 @@ " y = self.fc2(y)\n", " y = self.relu2(y)\n", " return y" - ] + ], + "metadata": { + "id": "LckxnUXGfxjW" + }, + "execution_count": 3, + "outputs": [] }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "enaD2xbw5hew" - }, - "outputs": [], "source": [ "\"\"\"Define internal NN module that trains on the dataset\"\"\"\n", "class SimpleNet(nn.Module):\n", @@ -111,15 +123,15 @@ " y = self.fc1(y)\n", " y = self.relu1(y)\n", " return y" - ] + ], + "metadata": { + "id": "enaD2xbw5hew" + }, + "execution_count": 4, + "outputs": [] }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "xujQtvVWBgMH" - }, - "outputs": [], "source": [ "\"\"\"Make toy dataset\"\"\"\n", "\n", @@ -142,15 +154,15 @@ " test_loader = torch.utils.data.DataLoader(reduced_test_dataset, batch_size=batch_size)\n", "\n", " return train_loader, test_loader" - ] + ], + "metadata": { + "id": "xujQtvVWBgMH" + }, + "execution_count": 5, + "outputs": [] }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "id": "Iql-c88jGGWy" - }, - "outputs": [], "source": [ "\"\"\"Randomly generate 10 policies\"\"\"\n", "\"\"\"Each policy has 5 sub-policies\"\"\"\n", @@ -181,15 +193,15 @@ " policies[policy, sub_policy, transformation + 4] = np.random.randint(5,15)/10\n", "\n", " return policies" - ] + ], + "metadata": { + "id": "Iql-c88jGGWy" + }, + "execution_count": 6, + "outputs": [] }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "QE2VWI8o731X" - }, - "outputs": [], "source": [ "\"\"\"Pick policy and sub-policy\"\"\"\n", "\"\"\"Each row of data should have a different sub-policy but for now, this will do\"\"\"\n", @@ -226,7 +238,12 @@ " scale = policies[policy, sub_policy][5]\n", "\n", " return degrees, shear, scale" - ] + ], + "metadata": { + "id": "QE2VWI8o731X" + }, + "execution_count": 7, + "outputs": [] }, { "cell_type": "code", @@ -237,7 +254,7 @@ "outputs": [], "source": [ "\"\"\"Sample policy, open and apply above transformations\"\"\"\n", - "def run_UCB1(policies, batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, iterations, IsLeNet):\n", + "def run_UCB1(policies, batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, early_stop_flag, average_validation, iterations, IsLeNet):\n", "\n", " # get number of policies and sub-policies\n", " num_policies = len(policies)\n", @@ -299,18 +316,20 @@ " train_loader, test_loader = create_toy(train_dataset, test_dataset, batch_size, toy_size)\n", "\n", " # create model\n", + " device = 'cuda' if torch.cuda.is_available() else 'cpu'\n", " if IsLeNet == \"LeNet\":\n", - " model = LeNet(img_height, img_width, num_labels, img_channels)\n", + " model = LeNet(img_height, img_width, num_labels, img_channels).to(device) # added .to(device)\n", " elif IsLeNet == \"EasyNet\":\n", - " model = EasyNet(img_height, img_width, num_labels, img_channels)\n", + " model = EasyNet(img_height, img_width, num_labels, img_channels).to(device) # added .to(device)\n", " else:\n", - " model = SimpleNet(img_height, img_width, num_labels, img_channels)\n", + " model = SimpleNet(img_height, img_width, num_labels, img_channels).to(device) # added .to(device)\n", " sgd = optim.SGD(model.parameters(), lr=1e-1)\n", " cost = nn.CrossEntropyLoss()\n", "\n", " # set variables for best validation accuracy and early stop count\n", " best_acc = 0\n", " early_stop_cnt = 0\n", + " total_val = 0\n", "\n", " # train model and check validation accuracy each epoch\n", " for _epoch in range(max_epochs):\n", @@ -318,6 +337,7 @@ " # train model\n", " model.train()\n", " for idx, (train_x, train_label) in enumerate(train_loader):\n", + " train_x, train_label = train_x.to(device), train_label.to(device) # new code\n", " label_np = np.zeros((train_label.shape[0], num_labels))\n", " sgd.zero_grad()\n", " predict_y = model(train_x.float())\n", @@ -330,23 +350,35 @@ " _sum = 0\n", " model.eval()\n", " for idx, (test_x, test_label) in enumerate(test_loader):\n", + " test_x, test_label = test_x.to(device), test_label.to(device) # new code\n", " predict_y = model(test_x.float()).detach()\n", - " predict_ys = np.argmax(predict_y, axis=-1)\n", - " label_np = test_label.numpy()\n", + " #predict_ys = np.argmax(predict_y, axis=-1)\n", + " predict_ys = torch.argmax(predict_y, axis=-1) # changed np to torch\n", + " #label_np = test_label.numpy()\n", " _ = predict_ys == test_label\n", - " correct += np.sum(_.numpy(), axis=-1)\n", + " #correct += np.sum(_.numpy(), axis=-1)\n", + " correct += np.sum(_.cpu().numpy(), axis=-1) # added .cpu()\n", " _sum += _.shape[0]\n", " \n", - " # update best validation accuracy if it was higher, otherwise increase early stop count\n", " acc = correct / _sum\n", + "\n", + " if average_validation[0] <= _epoch <= average_validation[1]:\n", + " total_val += acc\n", + "\n", + " # update best validation accuracy if it was higher, otherwise increase early stop count\n", " if acc > best_acc :\n", " best_acc = acc\n", " early_stop_cnt = 0\n", " else:\n", " early_stop_cnt += 1\n", "\n", - " # exit if validation gets worse over 10 runs\n", - " if early_stop_cnt >= early_stop_num:\n", + " # exit if validation gets worse over 10 runs and using early stopping\n", + " if early_stop_cnt >= early_stop_num and early_stop_flag:\n", + " break\n", + "\n", + " # exit if using fixed epoch length\n", + " if _epoch >= average_validation[1] and not early_stop_flag:\n", + " best_acc = total_val / (average_validation[1] - average_validation[0] + 1)\n", " break\n", "\n", " # update q_values\n", @@ -375,216 +407,79 @@ }, { "cell_type": "code", - "execution_count": 9, + "source": [ + "%%time\n", + "\n", + "batch_size = 32 # size of batch the inner NN is trained with\n", + "learning_rate = 1e-1 # fix learning rate\n", + "ds = \"MNIST\" # pick dataset (MNIST, KMNIST, FashionMNIST, CIFAR10, CIFAR100)\n", + "toy_size = 0.02 # total propeortion of training and test set we use\n", + "max_epochs = 100 # max number of epochs that is run if early stopping is not hit\n", + "early_stop_num = 10 # max number of worse validation scores before early stopping is triggered\n", + "early_stop_flag = True # implement early stopping or not\n", + "average_validation = [15,25] # if not implementing early stopping, what epochs are we averaging over\n", + "num_policies = 5 # fix number of policies\n", + "num_sub_policies = 5 # fix number of sub-policies in a policy\n", + "iterations = 100 # total iterations, should be more than the number of policies\n", + "IsLeNet = \"SimpleNet\" # using LeNet or EasyNet or SimpleNet\n", + "\n", + "# generate random policies at start\n", + "policies = generate_policies(num_policies, num_sub_policies)\n", + "\n", + "q_values, best_q_values = run_UCB1(policies, batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, early_stop_flag, average_validation, iterations, IsLeNet)\n", + "\n", + "plt.plot(best_q_values)\n", + "\n", + "best_q_values = np.array(best_q_values)\n", + "save('best_q_values_{}_{}percent_{}.npy'.format(IsLeNet, int(toy_size*100), ds), best_q_values)\n", + "#best_q_values = load('best_q_values_{}_{}percent_{}.npy'.format(IsLeNet, int(toy_size*100), ds), allow_pickle=True)" + ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 466 + "height": 342 }, "id": "doHUtJ_tEiA6", - "outputId": "3a7becf3-7b5d-4403-84d3-96e51bac8bf5" + "outputId": "8195ba17-c95f-4b75-d8dc-19c5d76d5e43" }, + "execution_count": 9, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - " 10%|█ | 10/100 [01:09<09:26, 6.29s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 10,\tQ-Values: [0.8, 0.71, 0.79, 0.86, 0.76], Best Policy: 0.86\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 20%|██ | 20/100 [02:18<09:03, 6.80s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 20,\tQ-Values: [0.77, 0.75, 0.81, 0.86, 0.78], Best Policy: 0.86\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 30%|███ | 30/100 [03:24<06:50, 5.87s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 30,\tQ-Values: [0.81, 0.71, 0.79, 0.8, 0.78], Best Policy: 0.81\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 40%|████ | 40/100 [04:34<06:14, 6.23s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 40,\tQ-Values: [0.8, 0.7, 0.76, 0.8, 0.78], Best Policy: 0.8\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 50%|█████ | 50/100 [05:49<06:04, 7.28s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 50,\tQ-Values: [0.79, 0.72, 0.76, 0.81, 0.74], Best Policy: 0.81\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 60%|██████ | 60/100 [06:55<04:32, 6.82s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 60,\tQ-Values: [0.79, 0.72, 0.77, 0.81, 0.76], Best Policy: 0.81\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 70%|███████ | 70/100 [08:29<04:16, 8.53s/it]" - ] - }, - { - "name": "stdout", "output_type": "stream", - "text": [ - "Iteration: 70,\tQ-Values: [0.78, 0.7, 0.78, 0.8, 0.76], Best Policy: 0.8\n" - ] - }, - { "name": "stderr", - "output_type": "stream", - "text": [ - " 80%|████████ | 80/100 [09:38<02:05, 6.27s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", "text": [ - "Iteration: 80,\tQ-Values: [0.79, 0.72, 0.78, 0.79, 0.77], Best Policy: 0.79\n" + "100%|██████████| 10/10 [01:28<00:00, 8.84s/it]" ] }, { - "name": "stderr", "output_type": "stream", - "text": [ - " 90%|█████████ | 90/100 [10:41<01:04, 6.47s/it]" - ] - }, - { "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 90,\tQ-Values: [0.79, 0.71, 0.78, 0.79, 0.77], Best Policy: 0.79\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", "text": [ - "100%|██████████| 100/100 [11:51<00:00, 7.11s/it]" + "Iteration: 10,\tQ-Values: [0.77, 0.74, 0.8, 0.72, 0.77], Best Policy: 0.8\n", + "CPU times: user 1min 21s, sys: 694 ms, total: 1min 22s\n", + "Wall time: 1min 28s\n" ] }, { - "name": "stdout", "output_type": "stream", - "text": [ - "Iteration: 100,\tQ-Values: [0.79, 0.72, 0.79, 0.79, 0.78], Best Policy: 0.79\n" - ] - }, - { "name": "stderr", - "output_type": "stream", "text": [ "\n" ] }, { + "output_type": "display_data", "data": { - "image/png": "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", "text/plain": [ "<Figure size 432x288 with 1 Axes>" - ] + ], + "image/png": "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\n" }, "metadata": { "needs_background": "light" - }, - "output_type": "display_data" + } } - ], - "source": [ - "batch_size = 32 # size of batch the inner NN is trained with\n", - "learning_rate = 1e-1 # fix learning rate\n", - "ds = \"MNIST\" # pick dataset (MNIST, KMNIST, FashionMNIST, CIFAR10, CIFAR100)\n", - "toy_size = 0.02 # total propeortion of training and test set we use\n", - "max_epochs = 100 # max number of epochs that is run if early stopping is not hit\n", - "early_stop_num = 10 # max number of worse validation scores before early stopping is triggered\n", - "num_policies = 5 # fix number of policies\n", - "num_sub_policies = 5 # fix number of sub-policies in a policy\n", - "iterations = 100 # total iterations, should be more than the number of policies\n", - "IsLeNet = \"SimpleNet\" # using LeNet or EasyNet or SimpleNet\n", - "\n", - "# generate random policies at start\n", - "policies = generate_policies(num_policies, num_sub_policies)\n", - "\n", - "q_values, best_q_values = run_UCB1(policies, batch_size, learning_rate, ds, toy_size, max_epochs, early_stop_num, iterations, IsLeNet)\n", - "\n", - "plt.plot(best_q_values)\n", - "\n", - "best_q_values = np.array(best_q_values)\n", - "save('best_q_values_{}_{}percent_{}.npy'.format(IsLeNet, int(toy_size*100), ds), best_q_values)\n", - "#best_q_values = load('best_q_values_{}_{}percent_{}.npy'.format(IsLeNet, int(toy_size*100), ds), allow_pickle=True)" ] } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [], - "name": "UCB1.ipynb", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} + ] +} \ No newline at end of file -- GitLab