From 489c6b9005600aade786026fa02350c128c0dd26 Mon Sep 17 00:00:00 2001 From: bhfxwangshida Date: Mon, 3 Apr 2023 18:12:01 -0700 Subject: [PATCH 1/5] Create dataloader.ipynb To load different dataset into pytorch's dataloader --- torchts/utils/dataloader.ipynb | 155 +++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 torchts/utils/dataloader.ipynb diff --git a/torchts/utils/dataloader.ipynb b/torchts/utils/dataloader.ipynb new file mode 100644 index 00000000..4a871474 --- /dev/null +++ b/torchts/utils/dataloader.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 24, + "id": "32a96ebf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([4388, 3, 54])\n", + "torch.Size([4388, 2, 23])\n", + "Epoch 1 loss: 7224.3987\n", + "Epoch 2 loss: 7292.3802\n", + "Epoch 3 loss: 7197.8602\n", + "Epoch 4 loss: 7199.7444\n", + "Epoch 5 loss: 7190.8045\n", + "Epoch 6 loss: 7194.3698\n", + "Epoch 7 loss: 7206.4779\n", + "Epoch 8 loss: 7220.1123\n", + "Epoch 9 loss: 7249.8706\n", + "Epoch 10 loss: 7214.2600\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import torch\n", + "from torch.utils.data import Dataset, DataLoader\n", + "import scipy.io\n", + "\n", + "# Load the .mat file\n", + "mat = scipy.io.loadmat('bike/Codes/Codes/Check-out Proportion/fea_pro.mat')\n", + "\n", + "# Define PyTorch dataset class\n", + "class BikeDataset(Dataset):\n", + " def __init__(self,H,P):\n", + " \"\"\"\n", + " H: amount of historical timestamp\n", + " P: amount of predicted timestamp\n", + " X: historical data with shape \n", + " (number of samples, number of historical timestamp, entire traffic + check-out across 23 clusters + check-out proportion across 23 clusters + 7 features)\n", + " Y: future data with shape\n", + " (number of samples, number of futur timestamp,check-out across 23 clusters)\n", + " \"\"\"\n", + " \n", + " # Get the 2D matrix\n", + " fea = mat['fea']\n", + " m_o = mat['m_o']\n", + " m_O = mat['m_O']\n", + " rho = mat['rho']\n", + " \n", + " # Split the data into input and output features\n", + " fea_H = []\n", + " m_o_H = []\n", + " m_o_P = []\n", + " m_O_H = []\n", + " rho_H = []\n", + " for i in range(H, len(fea) - P + 1):\n", + " fea_H.append(fea[i-H:i])\n", + " m_o_H.append(m_o[i-H:i])\n", + " m_o_P.append(m_o[i:i+P])\n", + " m_O_H.append(m_O[0][i-H:i])\n", + " rho_H.append(rho[i-H:i])\n", + " fea_H = torch.tensor(fea_H, dtype=torch.float32)\n", + " m_o_H = torch.tensor(m_o_H, dtype=torch.float32)\n", + " m_O_H = torch.tensor(m_O_H, dtype=torch.float32)\n", + " m_O_H = m_O_H.unsqueeze(-1)\n", + " rho_H = torch.tensor(rho_H, dtype=torch.float32)\n", + " \n", + " # Concetenate four tensors\n", + " X = torch.cat([m_O_H, m_o_H, rho_H, fea_H], dim=2)\n", + " \n", + " #print(X.shape)\n", + " self.x = X\n", + " self.y = torch.tensor(m_o_P, dtype=torch.float32)\n", + "\n", + " def __len__(self):\n", + " return len(self.x)\n", + "\n", + " def __getitem__(self, idx):\n", + " return self.x[idx], self.y[idx]\n", + "\n", + "# Create PyTorch dataset and data loader\n", + "dataset = BikeDataset(3,2)\n", + "print(dataset.x.size())\n", + "print(dataset.y.size())\n", + "dataloader = DataLoader(dataset, batch_size=32, shuffle=True)\n", + "\n", + "# define neural network model\n", + "class BikeModel(torch.nn.Module):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.fc1 = torch.nn.Linear(3*(7+23+1+23), 128)\n", + " self.fc2 = torch.nn.Linear(128, 64)\n", + " self.fc3 = torch.nn.Linear(64, 2*23)\n", + " \n", + " def forward(self, x):\n", + " x = x.view(x.shape[0], -1) # flatten the input tensor\n", + " x = torch.relu(self.fc1(x))\n", + " x = torch.relu(self.fc2(x))\n", + " x = self.fc3(x)\n", + " return x.view(x.shape[0], 2, 23) # reshape the output tensor\n", + "\n", + "# define loss function and optimizer\n", + "criterion = torch.nn.MSELoss()\n", + "optimizer = torch.optim.Adam(BikeModel().parameters())\n", + "\n", + "# train the model\n", + "num_epochs = 10\n", + "for epoch in range(num_epochs):\n", + " epoch_loss = 100.0\n", + " for batch_idx, (data, target) in enumerate(dataloader):\n", + " optimizer.zero_grad()\n", + " output = BikeModel()(data)\n", + " loss = criterion(output, target)\n", + " loss.backward()\n", + " optimizer.step()\n", + " epoch_loss += loss.item()\n", + " print(f\"Epoch {epoch+1} loss: {epoch_loss/len(dataloader):.4f}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0cde0727", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 497d139170c5b9a9151dfde825f7b0017eb83507 Mon Sep 17 00:00:00 2001 From: bhfxwangshida Date: Sun, 7 May 2023 21:45:58 -0700 Subject: [PATCH 2/5] add seq2seq dataloader --- ...esla T4, Train 25mins)_newDataLoader.ipynb | 5520 +++++++++++++++++ torchts/utils/dataloader.py | 257 + 2 files changed, 5777 insertions(+) create mode 100644 examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb create mode 100644 torchts/utils/dataloader.py diff --git a/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb b/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb new file mode 100644 index 00000000..03f158e0 --- /dev/null +++ b/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb @@ -0,0 +1,5520 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 20, + "id": "1f060813", + "metadata": { + "id": "1f060813" + }, + "outputs": [], + "source": [ + "import sqlalchemy as sal\n", + "import pandas as pd\n", + "from os.path import join\n", + "import numpy as np\n", + "import torch\n", + "import os\n", + "\n", + "os.chdir(\"G:/github repo/torchTS\")\n", + "from torchts.utils import dataloader" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "82bc8d0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(521160, 3)\n", + "Number of stations 10\n", + "1\n", + "2\n", + "3\n", + "avg_speed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "G:\\github repo\\torchTS\\torchts\\utils\\dataloader.py:138: FutureWarning: Dropping of nuisance columns in rolling operations is deprecated; in a future version this will raise TypeError. Select only valid columns before calling the operation. Dropped columns were Index(['timestamp'], dtype='object')\n", + " df_query_cleaned = df_query_raw.fillna(df_query_raw.rolling(window=6,min_periods=1).mean())\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n", + "fin\n", + "torch.Size([520920, 24, 1])\n", + "torch.Size([520920, 12, 1]) torch.Size([520920, 12, 1])\n", + "Total number of samples: 520920\n", + "Percentage for train: 70.00\n", + "Percentage for val: 10.00\n", + "Percentage for test: 20.00\n", + "torch.Size([364644, 12, 1]) torch.Size([364644, 12, 1])\n", + "torch.Size([52092, 12, 1]) torch.Size([52092, 12, 1])\n", + "torch.Size([104184, 12, 1]) torch.Size([104184, 12, 1])\n", + "train x: torch.Size([364644, 12, 1]) y: torch.Size([364644, 12, 1])\n", + "val x: torch.Size([52092, 12, 1]) y: torch.Size([52092, 12, 1])\n", + "test x: torch.Size([104184, 12, 1]) y: torch.Size([104184, 12, 1])\n" + ] + } + ], + "source": [ + "dataset = dataloader.seq2seq(root = \"G:/github repo/torchTS/examples/seq2seq\",horizon=12, window=1, features=['avg_speed'],test_ratio = 0.2,train_ratio = 0.7)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "bba877d9", + "metadata": { + "id": "bba877d9" + }, + "source": [ + "# Define Seq2Seq Model" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "955c5a6c", + "metadata": { + "id": "955c5a6c" + }, + "outputs": [], + "source": [ + "from torchts.utils import data as DATA\n", + "from torchts.nn.models.seq2seq import Encoder, Decoder, Seq2Seq \n", + "\n", + "import time\n", + "from pytorch_lightning import Trainer\n", + "from pytorch_lightning import loggers as pl_loggers" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "7cf5a23a", + "metadata": { + "id": "7cf5a23a" + }, + "outputs": [], + "source": [ + "dataset_dir = 'G:/github repo/torchTS/examples/seq2seq'\n", + "\n", + "# define hyper-parameters\n", + "# learning_rate = 0.01 # this parameter is currently hard coded in the optimizer\n", + "dropout_rate = 0.8\n", + "num_layers = 1\n", + "hidden_dim = 64\n", + "input_dim = 1\n", + "output_dim = 1\n", + "horizon = 12\n", + "batch_size = 64" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "630518b3", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "630518b3", + "outputId": "0c82cffd-48d9-4156-d2b8-cf9bd4f96217" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wall time: 200 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "dict_keys(['x_train', 'y_train', 'x_val', 'y_val', 'x_test', 'y_test', 'train_loader', 'val_loader', 'test_loader', 'scaler'])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "# load train, val and test NPZ files\n", + "data = DATA.load_dataset(dataset_dir, batch_size=batch_size, test_batch_size=batch_size)\n", + "\n", + "data.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4d5c6331", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4d5c6331", + "outputId": "56b88854-e816-41cd-c537-76868ccbc9ec" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Felix\\anaconda3\\lib\\site-packages\\torch\\nn\\modules\\rnn.py:62: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.8 and num_layers=1\n", + " warnings.warn(\"dropout option adds dropout after all but last \"\n" + ] + }, + { + "ename": "TypeError", + "evalue": "__init__() missing 1 required positional argument: 'optimizer'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_26316\\4290002247.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mdecoder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDecoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutput_dim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhidden_dim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum_layers\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdropout_rate\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mmodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSeq2Seq\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mencoder\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutput_dim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhorizon\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mG:\\github repo\\torchTS\\torchts\\nn\\models\\seq2seq.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, encoder, decoder, output_dim, horizon, **kwargs)\u001b[0m\n\u001b[0;32m 81\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mDecoder\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 82\u001b[0m \"\"\"\n\u001b[1;32m---> 83\u001b[1;33m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 84\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mencoder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 85\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdecoder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: __init__() missing 1 required positional argument: 'optimizer'" + ] + } + ], + "source": [ + "# instantiate seq2seq model\n", + "encoder = Encoder(input_dim, hidden_dim, num_layers, dropout_rate)\n", + "decoder = Decoder(output_dim, hidden_dim, num_layers, dropout_rate)\n", + "\n", + "model = Seq2Seq(encoder, decoder, output_dim, horizon)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "10602d26", + "metadata": { + "id": "10602d26" + }, + "source": [ + "# Train Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "090cc092", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "090cc092", + "outputId": "b0976b68-23f6-4db3-9578-c87d366217a0" + }, + "outputs": [], + "source": [ + "# define lightning logger and trainner objects\n", + "tb_logger = pl_loggers.TensorBoardLogger('logs/')\n", + "trainer = Trainer(max_epochs=15, logger=tb_logger, gpus = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ff0f083c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 319, + "referenced_widgets": [ + "fa87fd408ee84de4a94cec29cde49485", + "2deba6727b3a4a28911c2eb2af140fda", + "2dc93287e67944be9523261022be0f06", + "a46aa200af2f48ada249a8c0a9380205", + "c5e3e3e4b67a4ca8ae80cde8465fffed", + "dfbd49c6d9ef471ab1a91ca1a0847139", + "46ca8a205e9b41d6afd398a6f898864b", + "f66fa30edfb746c891ad989ddc8f9e15", + "51f0041f55c044689dcab5cb2c11ebb2", + "082771f804ab49a7aa475f6289bcb61f", + "ee5f1017a2d14e1f864f428e06d8b33f", + "be96fab63d5447a9bbf88b7a99f4fad2", + "2e547b5f16b74c41bef1b970927d777e", + "c62a024be94344b695846f68f3fac540", + "5247081348524a8b91bb1ff8ae586482", + "3f0523cee0d041a58133f1c40672ef9d", + "c13e823905564498a5806cfc1a39033b", + "13eeebc16ce540c7ba988792c25b6ea7", + "e24a21790adb47609e740edd04e36fa4", + "2be500b075714be6b76615ed3704f75a", + "f41fd75496ba46c487c64f5009a8d2fb", + "182b0a8756ed498db9edf8b4e700fb75", + "577b865b28d0474caa8d9e00ac844d72", + "b5fda28c73d3444dae7235d062b34461", + "fe73910360764c61b468fd87b77c309a", + "16327b62db414d37bcf734f2396432f6", + "b54faac9cb314f4c81a8faf814617d94", + "1ed3e8a311654836845f7f5a748ad3a7", + "9eecf54225e340bb8c90b5f995d4b373", + "dae8edb336f8424d8f894d8f699829fa", + "a666e6038aca4b71b4e17dd1af4d0d56", + "eeb206ca26294e34b50cff435414e1ce", + "fe9e6634158e465cbe17bf2fa9169cd1", + "72a0ae95558b4232b323625cd67d1371", + "0f8b6484127a4b5e8230118797d4990b", + "e67b74ad0d92413087e9775b9b09dc99", + "87d6f67c8abf447eb6355085228ebe59", + "223edc37249846cc84f772ac6a58459b", + "6352b59b4c8a4ec08433ea844cb2de0e", + "b7c841aca42647f0b02e98e240a788da", + "d4fdaa5283cb43cea3a7763936108e73", + "3621fcf487aa4962806e4822067e32fc", + "d5f874faa0424292a79f255758dbcb56", + "ba90bd7d0d8c498cbe35a841d30ea7df", + "46e4179889ea4fee9a3c7355cdedef62", + "319a9b7130d94b808cf0b172986f74cb", + "5d6d209b56214f48a820161cd7fee006", + "f03195cd5dcd46c790f94d35af74a1b7", + "455c1f2ffea14e4d9ce41ef7695e4be2", + "0f224ee8a7924fa49e1dd0bf58f9d523", + "63d6801c46ad4a71990b26162050d2bd", + "ac5ccfb5768a46a08ddd9e5546015bc8", + "92824308befe4d1bbc21b89d9d1f96f0", + "172f6d1e25b5408695356e981355a47f", + "9555b5c85714428183d52747b6be8801", + "6b1b65a198eb43309653094ae31a8c97", + "390681fe3f7d4e49acb03ceb4880e170", + "ab2580695cd643368a705edeb10b962b", + "f1c8a715035f478d881eabd7caa810b7", + "4e3722e09bf8420f993cfda2b410ed25", + "a83ec39e41f74a24bcf57e4237c14f78", + "626b4b8fa5284fa293c690ba30cdaf21", + "88f2d427cd3149a2aeedc1b1315fb786", + "e163374f9f844d719e82bcf1c22d5c8f", + "c19e59c50d174655b942e1146bec38ae", + "8999fc282d544821a7494ee8034a2ae6", + "398ecbff4e0d4c7b931f5deedf5c5f32", + "507da262dc6449fda43f7fbc90e9629a", + "f5c377bf987a4f08a6e4aae27b08ad37", + "de8f1fe7041c43d2a1ec80f498540b9a", + "4a0cf4c7f45a432684fb9d1ecedfc431", + "2325070f50e44c9093a96b9188acac24", + "16d92181c8bf42ef8f706dd6a8787807", + "8fddbfdf7e56453698229d8749b9fd6c", + "3aaca1e15b5a40abaa5b0fb0e60b5499", + "4cabbd13da63444c86b1b2b9a75699be", + "e6e18150f0384f3a9f67e06303713795", + "d8c7fd308e3a42b7bf9faa23276d915d", + "49d853097daa401fa906edae1f6fdcab", + "7ea06b7704d54cfbbd4e99a5d33683e5", + "7feee72119f64c05a64a668156b229e7", + "176ae7a8b3e94bb88b432d50aec2eb3d", + "1147429cba254e3aaed9b97112cc45d6", + "45cef3513ba442dc9e9e701de3c9e464", + "856e866b93594573856a676a6de89693", + "2fa3514bda94447baa9d3602d1b7b118", + "a057f607dafc40b7b79b9e18f39eb7e6", + "147b6d12bfc948a998e2ac90856efe4a", + "737926a4af4745d6a75e28d914b4f35a", + "a52482471c264b20ab21b77b7c28fbda", + "61dc9510fb6b4ae2a26acee95b7f1684", + "ce7d0486dd0c48b38ed4624fbb7ca98e", + "10d7c619862644e9adbab7be4e0e3930", + "6e5050bd92a44ec7932d1a90e3df146b", + "d59a114d1a6749f58498d7277c792c20", + "14dc6a1294b640d9b62eac720f25d930", + "aacfc3076f5943b59c596c3ce909204e", + "8444eded3fec4895982cff64b9fae053", + "4a750d53517b4eafbc0270584e3f135b", + "89a0071585ff48cf87d2fcf88904d690", + "864069b4613640a6b3e04d4e0438e767", + "c31238ea84b44640a96d20ce3e96d5d8", + "b1db6f47be624615bb4a451418509bf7", + "2d968a48194345238f5ba6391e2b292a", + "99f2be68dbe849a999cd41c9148c6565", + "41ebf6318a7a468f8aeb9f8d4573ae00", + "beb5ce78323642ea9150b21809bfc9c2", + "72a00d6e953948049fde1df7a96efe23", + "1ca245e2973246d0b87afd03e199ef8a", + "41ad344c945f4a38bc16194a6f90e12d", + "4df2d57ed4594b178aa469aadff50c46", + "e9116975af6e42faa575e3cffb3f530b", + "3714bbabc6be4827b7ea8b3cdfd7f9d6", + "b20bd1bb9696470c8c1d1046009cd825", + "3dc99518f2474db6ae912f1b6e37260d", + "be77a878680543bb86ce93db203a84e6", + "f07a68baf91e4d168df9a9037633e7e4", + "3bb4fdda064a40de8b4ccee4de574428", + "aefb6c32d3bf464fbaa7f1d101d6272b", + "91c33ce6ac1141dfbc15e60f8969268c", + "46fbf541888d448abd8ad96b23214c88", + "d434a091abc340aab5ba5d45516ab704", + "08d994ca5c3945e1a4ca93b8aa1059f8", + "958d75102d6540538b242edc3acabb2a", + "518f39642b0e473495c4b5409d11b1c6", + "e2e4f4d5063c4a97bf5e49e89181253d", + "02f7a461b3364307974a1a44a554f8c5", + "d73c13c532af4330b2402182160dc956", + "02ccabfc18ec4594a360f396644a0e95", + "0bdf1501f9d54814a0402d7243a17547", + "2643e699b88445229666893745745a48", + "06c76452ac364282879bc329451ff4a8", + "e26e9454d5c646669334f0caf5bdb768", + "cbdcc54cf91b4c10a5602ffea7acf2e4", + "1a3fa41f05dd4f379e37143b0d6e6f64", + "ee52bc3386854ea5bbae2156d4ada495" + ] + }, + "id": "ff0f083c", + "outputId": "41a1e712-34f6-4bf0-b4f5-b9202b2fbad5" + }, + "outputs": [], + "source": [ + "# train\n", + "start = time.time()\n", + "trainer.fit(model, data[\"train_loader\"], data[\"val_loader\"])\n", + "\n", + "print(\"Training time taken %f\"%(time.time() - start), flush=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "UMs72xQp3-gA", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 253, + "referenced_widgets": [ + "30cde32fba2b48939e8e0917bf847109", + "30192d7faa164599a9db6ad17535c0b8", + "361a0e629f85447984c365b6e68bcf4c", + "fd7f8d753c5f453187abda2222c3da42", + "c76192651a5b41b68756c034c5902857", + "540afe682e9c403e9c51424382c71af2", + "fbc3e8e9053d417b835bdb4a0758a44b", + "7ef8e07c6b4d435d883309f94c129a3a", + "1a490640c9fb4a1eb4772fda9a087f4b", + "a72b06cc9c6e4cdaa186e2c0427d19d8", + "e87518a5e5604f9bb593f165f657f5fe", + "be5c32f1a4ad417db91208bb15c58a9d", + "4c20a52b42624c68b9126c273b471158", + "6911d13b276149c78d82b4a51f85350a", + "d066712b2af74806a38bd26e036000cb", + "cdb5baa28a7e451bb6b2c77b510e7ed3" + ] + }, + "id": "UMs72xQp3-gA", + "outputId": "c8e93034-8944-45c9-9608-1efb27270e0a" + }, + "outputs": [], + "source": [ + "# see performance for validation dataset\n", + "trainer.validate(model, data[\"val_loader\"])\n", + "\n", + "# see performance for test dataset\n", + "trainer.test(model, data[\"test_loader\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "lVAnb0SCY0XQ", + "metadata": { + "id": "lVAnb0SCY0XQ" + }, + "outputs": [], + "source": [ + "# save torch pth model to file\n", + "torch.save(model, 'saved_model.pth')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8e7eea37", + "metadata": { + "id": "8e7eea37" + }, + "source": [ + "# Predict on Test" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "vQs9YWTI_wP7", + "metadata": { + "id": "vQs9YWTI_wP7" + }, + "source": [ + "### Use Checkpoint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "PuzBoXbbzwPq", + "metadata": { + "id": "PuzBoXbbzwPq" + }, + "outputs": [], + "source": [ + "# load model checkpoints and predict from here\n", + "\n", + "# define empty model\n", + "encoder = Encoder(input_dim, hidden_dim, num_layers, dropout_rate)\n", + "decoder = Decoder(output_dim, hidden_dim, num_layers, dropout_rate)\n", + "model = Seq2Seq(encoder, decoder, output_dim, horizon)\n", + "\n", + "# load model object, used local machine because of low RAM memory on Google Colab\n", + "model_obj = torch.load('saved_model.pth', map_location=torch.device('cpu'))\n", + "model.load_state_dict(model_obj.state_dict())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25f0faaf", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 392 + }, + "id": "25f0faaf", + "outputId": "bbff82a4-b5dc-4e24-f9a1-802100e34d4c" + }, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "# get predictions for the test dataset\n", + "input_tensor = torch.tensor(data['x_test']).float()\n", + "target_tensor = torch.tensor(data['y_test']).float()\n", + "\n", + "preds = model(input_tensor, target_tensor).reshape(target_tensor.shape).detach().numpy()\n", + "\n", + "print(preds.shape)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "0478a9ad", + "metadata": { + "id": "0478a9ad" + }, + "source": [ + "# Visualize Test Predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6cdfc085", + "metadata": { + "id": "6cdfc085" + }, + "outputs": [], + "source": [ + "# # find padding\n", + "# batch_size=64\n", + "\n", + "# num_padding_train = (batch_size - len(data[\"y_train\"]) % batch_size) % batch_size\n", + "# num_padding_val = (batch_size - len(data[\"y_val\"]) % batch_size) % batch_size\n", + "# num_padding_test = (batch_size - len(data[\"y_test\"]) % batch_size) % batch_size\n", + "\n", + "# print('Total Padding No: train {}, val {}, test {}'.format(num_padding_train, num_padding_val, num_padding_test))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70aeb83e", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "70aeb83e", + "outputId": "9e1a3255-bda8-4f81-de44-b0a0c07fee59" + }, + "outputs": [], + "source": [ + "# get float values for unscaling values\n", + "avg = float(x_test.mean())\n", + "std = float(x_test.std())\n", + "\n", + "print(avg, std)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8c94992", + "metadata": { + "id": "c8c94992" + }, + "outputs": [], + "source": [ + "def unscale_data(arr, avg, std):\n", + " return arr*std+avg" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de3bddf4", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "de3bddf4", + "outputId": "960b1fa1-ba34-4b6f-cad8-2865ea941d24" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'data' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_27624\\1134408256.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# get unscaled y vectors\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0my_true\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0munscale_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"y_test\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mavg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstd\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0my_pred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0munscale_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpreds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mavg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstd\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'data' is not defined" + ] + } + ], + "source": [ + "# get unscaled y vectors\n", + "y_true = unscale_data(data[\"y_test\"], avg, std)\n", + "y_pred = unscale_data(preds, avg, std)\n", + "\n", + "print(y_true.shape)\n", + "print(y_pred.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "719f0702", + "metadata": { + "id": "719f0702" + }, + "outputs": [], + "source": [ + "def masked_mae_loss(y_pred, y_true):\n", + " mask = (y_true != 0).float()\n", + " mask /= mask.mean()\n", + "\n", + " loss = torch.abs(y_pred - y_true)\n", + " loss = loss * mask\n", + " loss[torch.isnan(loss)] = 0\n", + "\n", + " return loss.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e69bc765", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "e69bc765", + "outputId": "13146eb4-ff84-4fe3-8042-80b3f5531381" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'y_pred' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_27624\\2730477196.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# find masked MAE\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmasked_mae\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmasked_mae_loss\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_numpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_numpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Masked MAE: {:.2f}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmasked_mae\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'y_pred' is not defined" + ] + } + ], + "source": [ + "# find masked MAE\n", + "masked_mae = masked_mae_loss(torch.from_numpy(y_pred), torch.from_numpy(y_true))\n", + "print('Masked MAE: {:.2f}'.format(masked_mae))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "78053aef", + "metadata": { + "id": "78053aef" + }, + "source": [ + "## Single Sequences" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3839aa5", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 468 + }, + "id": "c3839aa5", + "outputId": "6792fd32-d2bb-4630-932d-230c74b87f5c" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'y_pred' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_27624\\644103389.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[0msequence_index_to_plot\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m29607\u001b[0m \u001b[1;31m# specify sequence index\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 11\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msequence_index_to_plot\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 12\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msequence_index_to_plot\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'y_pred' is not defined" + ] + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import os\n", + "\n", + "os.environ['KMP_DUPLICATE_LIB_OK']='True'\n", + "\n", + "plt.figure(figsize=(20,7))\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "sequence_index_to_plot = 29607 # specify sequence index \n", + "\n", + "plt.plot(y_pred[sequence_index_to_plot, :, 0])\n", + "plt.plot(y_true[sequence_index_to_plot, :, 0])\n", + "\n", + "plt.legend(['Predictions (Y pred)', 'Actual (Y true)'], loc='upper right', bbox_to_anchor=(1.27, 1))\n", + "\n", + "plt.title('Traffic Sequence Index No. {}, 12 pts Horizon (1hr)'.format(sequence_index_to_plot))\n", + "plt.xlabel('Ordered Time Series Points (5 mins intervals)')\n", + "plt.ylabel('Average Speed (MPH)')\n", + "\n", + "axes = plt.gca()\n", + "# axes.set_xlim([xmin,xmax])\n", + "axes.set_ylim([50,80])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "33a25e5f", + "metadata": { + "id": "33a25e5f" + }, + "source": [ + "## Multiple Sequences with Single Horizon" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70ec1a29", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 468 + }, + "id": "70ec1a29", + "outputId": "eb99699b-2111-472a-c5f3-c0ef2f745a8a" + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(20,7))\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "min_sequence_index_to_plot = 10400 # min limit for x-axis\n", + "max_sequence_index_to_plot = 11000 # max limit for x-axis\n", + "horizon = 5 # select horizon, integer from 1 to 12\n", + "\n", + "plt.plot(y_pred[horizon+min_sequence_index_to_plot:max_sequence_index_to_plot+horizon, horizon-1, 0])\n", + "plt.plot(y_true[min_sequence_index_to_plot:max_sequence_index_to_plot, horizon-1, 0])\n", + "\n", + "plt.legend(['Predictions (Y pred)', 'Actual (Y true)'], loc='upper right', bbox_to_anchor=(1.27, 1))\n", + "\n", + "plt.title(\"\"\"Traffic Timeseries with Horizon {} (or {} mins), \\\n", + "Subset from Index No. {} to {}\"\"\".format(horizon,\n", + " horizon*5,\n", + " min_sequence_index_to_plot,\n", + " max_sequence_index_to_plot))\n", + "plt.xlabel('Ordered Time Series Points (5 mins intervals)')\n", + "plt.ylabel('Average Speed (MPH)')\n", + "\n", + "axes = plt.gca()\n", + "# axes.set_xlim([xmin,xmax])\n", + "axes.set_ylim([0,80])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec2f8e34", + "metadata": { + "id": "ec2f8e34" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "Traffic Data Seq2seq boiler plate.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "341.333px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "02ccabfc18ec4594a360f396644a0e95": { + "model_module": "@jupyter-widgets/controls", + "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_2643e699b88445229666893745745a48", + "IPY_MODEL_06c76452ac364282879bc329451ff4a8" + ], + "layout": "IPY_MODEL_0bdf1501f9d54814a0402d7243a17547" + } + }, + "02f7a461b3364307974a1a44a554f8c5": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "06c76452ac364282879bc329451ff4a8": { + "model_module": "@jupyter-widgets/controls", + "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_ee52bc3386854ea5bbae2156d4ada495", + "placeholder": "​", + "style": "IPY_MODEL_1a3fa41f05dd4f379e37143b0d6e6f64", + "value": " 814/814 [00:05<00:00, 161.74it/s]" + } + }, + "082771f804ab49a7aa475f6289bcb61f": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "08d994ca5c3945e1a4ca93b8aa1059f8": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_e2e4f4d5063c4a97bf5e49e89181253d", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_518f39642b0e473495c4b5409d11b1c6", + "value": 814 + } + }, + "0bdf1501f9d54814a0402d7243a17547": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "0f224ee8a7924fa49e1dd0bf58f9d523": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "0f8b6484127a4b5e8230118797d4990b": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_223edc37249846cc84f772ac6a58459b", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_87d6f67c8abf447eb6355085228ebe59", + "value": 814 + } + }, + "10d7c619862644e9adbab7be4e0e3930": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "1147429cba254e3aaed9b97112cc45d6": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_2fa3514bda94447baa9d3602d1b7b118", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_856e866b93594573856a676a6de89693", + "value": 814 + } + }, + "13eeebc16ce540c7ba988792c25b6ea7": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "147b6d12bfc948a998e2ac90856efe4a": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "14dc6a1294b640d9b62eac720f25d930": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "16327b62db414d37bcf734f2396432f6": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "16d92181c8bf42ef8f706dd6a8787807": { + "model_module": "@jupyter-widgets/controls", + "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_3aaca1e15b5a40abaa5b0fb0e60b5499", + "IPY_MODEL_4cabbd13da63444c86b1b2b9a75699be" + ], + "layout": "IPY_MODEL_8fddbfdf7e56453698229d8749b9fd6c" + } + }, + "172f6d1e25b5408695356e981355a47f": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "176ae7a8b3e94bb88b432d50aec2eb3d": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "182b0a8756ed498db9edf8b4e700fb75": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "1a3fa41f05dd4f379e37143b0d6e6f64": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "1a490640c9fb4a1eb4772fda9a087f4b": { + "model_module": "@jupyter-widgets/controls", + "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_e87518a5e5604f9bb593f165f657f5fe", + "IPY_MODEL_be5c32f1a4ad417db91208bb15c58a9d" + ], + "layout": "IPY_MODEL_a72b06cc9c6e4cdaa186e2c0427d19d8" + } + }, + "1ca245e2973246d0b87afd03e199ef8a": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "1ed3e8a311654836845f7f5a748ad3a7": { + "model_module": "@jupyter-widgets/controls", + "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_eeb206ca26294e34b50cff435414e1ce", + "placeholder": "​", + "style": "IPY_MODEL_a666e6038aca4b71b4e17dd1af4d0d56", + "value": " 814/814 [00:05<00:00, 159.04it/s]" + } + }, + "223edc37249846cc84f772ac6a58459b": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "2325070f50e44c9093a96b9188acac24": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "2643e699b88445229666893745745a48": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_cbdcc54cf91b4c10a5602ffea7acf2e4", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e26e9454d5c646669334f0caf5bdb768", + "value": 814 + } + }, + "2be500b075714be6b76615ed3704f75a": { + "model_module": "@jupyter-widgets/controls", + "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_b5fda28c73d3444dae7235d062b34461", + "placeholder": "​", + "style": "IPY_MODEL_577b865b28d0474caa8d9e00ac844d72", + "value": " 814/814 [00:04<00:00, 163.25it/s]" + } + }, + "2d968a48194345238f5ba6391e2b292a": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "2dc93287e67944be9523261022be0f06": { + "model_module": "@jupyter-widgets/controls", + "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": "danger", + "description": "Validation sanity check: 0%", + "description_tooltip": null, + "layout": "IPY_MODEL_dfbd49c6d9ef471ab1a91ca1a0847139", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c5e3e3e4b67a4ca8ae80cde8465fffed", + "value": 0 + } + }, + "2deba6727b3a4a28911c2eb2af140fda": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "2e547b5f16b74c41bef1b970927d777e": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "2fa3514bda94447baa9d3602d1b7b118": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "30192d7faa164599a9db6ad17535c0b8": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "30cde32fba2b48939e8e0917bf847109": { + "model_module": "@jupyter-widgets/controls", + "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_361a0e629f85447984c365b6e68bcf4c", + "IPY_MODEL_fd7f8d753c5f453187abda2222c3da42" + ], + "layout": "IPY_MODEL_30192d7faa164599a9db6ad17535c0b8" + } + }, + "319a9b7130d94b808cf0b172986f74cb": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "361a0e629f85447984c365b6e68bcf4c": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_540afe682e9c403e9c51424382c71af2", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c76192651a5b41b68756c034c5902857", + "value": 814 + } + }, + "3621fcf487aa4962806e4822067e32fc": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "3714bbabc6be4827b7ea8b3cdfd7f9d6": { + "model_module": "@jupyter-widgets/controls", + "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_3dc99518f2474db6ae912f1b6e37260d", + "IPY_MODEL_be77a878680543bb86ce93db203a84e6" + ], + "layout": "IPY_MODEL_b20bd1bb9696470c8c1d1046009cd825" + } + }, + "390681fe3f7d4e49acb03ceb4880e170": { + "model_module": "@jupyter-widgets/controls", + "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_f1c8a715035f478d881eabd7caa810b7", + "IPY_MODEL_4e3722e09bf8420f993cfda2b410ed25" + ], + "layout": "IPY_MODEL_ab2580695cd643368a705edeb10b962b" + } + }, + "398ecbff4e0d4c7b931f5deedf5c5f32": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_de8f1fe7041c43d2a1ec80f498540b9a", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f5c377bf987a4f08a6e4aae27b08ad37", + "value": 814 + } + }, + "3aaca1e15b5a40abaa5b0fb0e60b5499": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_d8c7fd308e3a42b7bf9faa23276d915d", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e6e18150f0384f3a9f67e06303713795", + "value": 814 + } + }, + "3bb4fdda064a40de8b4ccee4de574428": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "3dc99518f2474db6ae912f1b6e37260d": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_3bb4fdda064a40de8b4ccee4de574428", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f07a68baf91e4d168df9a9037633e7e4", + "value": 814 + } + }, + "3f0523cee0d041a58133f1c40672ef9d": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "41ad344c945f4a38bc16194a6f90e12d": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "41ebf6318a7a468f8aeb9f8d4573ae00": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "455c1f2ffea14e4d9ce41ef7695e4be2": { + "model_module": "@jupyter-widgets/controls", + "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_63d6801c46ad4a71990b26162050d2bd", + "IPY_MODEL_ac5ccfb5768a46a08ddd9e5546015bc8" + ], + "layout": "IPY_MODEL_0f224ee8a7924fa49e1dd0bf58f9d523" + } + }, + "45cef3513ba442dc9e9e701de3c9e464": { + "model_module": "@jupyter-widgets/controls", + "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_147b6d12bfc948a998e2ac90856efe4a", + "placeholder": "​", + "style": "IPY_MODEL_a057f607dafc40b7b79b9e18f39eb7e6", + "value": " 814/814 [00:05<00:00, 164.98it/s]" + } + }, + "46ca8a205e9b41d6afd398a6f898864b": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "46e4179889ea4fee9a3c7355cdedef62": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "46fbf541888d448abd8ad96b23214c88": { + "model_module": "@jupyter-widgets/controls", + "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_08d994ca5c3945e1a4ca93b8aa1059f8", + "IPY_MODEL_958d75102d6540538b242edc3acabb2a" + ], + "layout": "IPY_MODEL_d434a091abc340aab5ba5d45516ab704" + } + }, + "49d853097daa401fa906edae1f6fdcab": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "4a0cf4c7f45a432684fb9d1ecedfc431": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "4a750d53517b4eafbc0270584e3f135b": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_c31238ea84b44640a96d20ce3e96d5d8", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_864069b4613640a6b3e04d4e0438e767", + "value": 814 + } + }, + "4c20a52b42624c68b9126c273b471158": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "4cabbd13da63444c86b1b2b9a75699be": { + "model_module": "@jupyter-widgets/controls", + "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_7ea06b7704d54cfbbd4e99a5d33683e5", + "placeholder": "​", + "style": "IPY_MODEL_49d853097daa401fa906edae1f6fdcab", + "value": " 814/814 [00:05<00:00, 166.34it/s]" + } + }, + "4df2d57ed4594b178aa469aadff50c46": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "4e3722e09bf8420f993cfda2b410ed25": { + "model_module": "@jupyter-widgets/controls", + "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_e163374f9f844d719e82bcf1c22d5c8f", + "placeholder": "​", + "style": "IPY_MODEL_88f2d427cd3149a2aeedc1b1315fb786", + "value": " 814/814 [00:05<00:00, 162.65it/s]" + } + }, + "507da262dc6449fda43f7fbc90e9629a": { + "model_module": "@jupyter-widgets/controls", + "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_2325070f50e44c9093a96b9188acac24", + "placeholder": "​", + "style": "IPY_MODEL_4a0cf4c7f45a432684fb9d1ecedfc431", + "value": " 814/814 [00:05<00:00, 160.47it/s]" + } + }, + "518f39642b0e473495c4b5409d11b1c6": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "51f0041f55c044689dcab5cb2c11ebb2": { + "model_module": "@jupyter-widgets/controls", + "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_ee5f1017a2d14e1f864f428e06d8b33f", + "IPY_MODEL_be96fab63d5447a9bbf88b7a99f4fad2" + ], + "layout": "IPY_MODEL_082771f804ab49a7aa475f6289bcb61f" + } + }, + "5247081348524a8b91bb1ff8ae586482": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "540afe682e9c403e9c51424382c71af2": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "577b865b28d0474caa8d9e00ac844d72": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "5d6d209b56214f48a820161cd7fee006": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "61dc9510fb6b4ae2a26acee95b7f1684": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_6e5050bd92a44ec7932d1a90e3df146b", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_10d7c619862644e9adbab7be4e0e3930", + "value": 814 + } + }, + "626b4b8fa5284fa293c690ba30cdaf21": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "6352b59b4c8a4ec08433ea844cb2de0e": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "63d6801c46ad4a71990b26162050d2bd": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_172f6d1e25b5408695356e981355a47f", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_92824308befe4d1bbc21b89d9d1f96f0", + "value": 814 + } + }, + "6911d13b276149c78d82b4a51f85350a": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "6b1b65a198eb43309653094ae31a8c97": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "6e5050bd92a44ec7932d1a90e3df146b": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "72a00d6e953948049fde1df7a96efe23": { + "model_module": "@jupyter-widgets/controls", + "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_e9116975af6e42faa575e3cffb3f530b", + "placeholder": "​", + "style": "IPY_MODEL_4df2d57ed4594b178aa469aadff50c46", + "value": " 814/814 [00:05<00:00, 159.85it/s]" + } + }, + "72a0ae95558b4232b323625cd67d1371": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "737926a4af4745d6a75e28d914b4f35a": { + "model_module": "@jupyter-widgets/controls", + "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_61dc9510fb6b4ae2a26acee95b7f1684", + "IPY_MODEL_ce7d0486dd0c48b38ed4624fbb7ca98e" + ], + "layout": "IPY_MODEL_a52482471c264b20ab21b77b7c28fbda" + } + }, + "7ea06b7704d54cfbbd4e99a5d33683e5": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "7ef8e07c6b4d435d883309f94c129a3a": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "7feee72119f64c05a64a668156b229e7": { + "model_module": "@jupyter-widgets/controls", + "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_1147429cba254e3aaed9b97112cc45d6", + "IPY_MODEL_45cef3513ba442dc9e9e701de3c9e464" + ], + "layout": "IPY_MODEL_176ae7a8b3e94bb88b432d50aec2eb3d" + } + }, + "8444eded3fec4895982cff64b9fae053": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "856e866b93594573856a676a6de89693": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "864069b4613640a6b3e04d4e0438e767": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "87d6f67c8abf447eb6355085228ebe59": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "88f2d427cd3149a2aeedc1b1315fb786": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "8999fc282d544821a7494ee8034a2ae6": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "89a0071585ff48cf87d2fcf88904d690": { + "model_module": "@jupyter-widgets/controls", + "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_2d968a48194345238f5ba6391e2b292a", + "placeholder": "​", + "style": "IPY_MODEL_b1db6f47be624615bb4a451418509bf7", + "value": " 814/814 [00:05<00:00, 163.49it/s]" + } + }, + "8fddbfdf7e56453698229d8749b9fd6c": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "91c33ce6ac1141dfbc15e60f8969268c": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "92824308befe4d1bbc21b89d9d1f96f0": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "9555b5c85714428183d52747b6be8801": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "958d75102d6540538b242edc3acabb2a": { + "model_module": "@jupyter-widgets/controls", + "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_d73c13c532af4330b2402182160dc956", + "placeholder": "​", + "style": "IPY_MODEL_02f7a461b3364307974a1a44a554f8c5", + "value": " 814/814 [00:05<00:00, 160.41it/s]" + } + }, + "99f2be68dbe849a999cd41c9148c6565": { + "model_module": "@jupyter-widgets/controls", + "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_beb5ce78323642ea9150b21809bfc9c2", + "IPY_MODEL_72a00d6e953948049fde1df7a96efe23" + ], + "layout": "IPY_MODEL_41ebf6318a7a468f8aeb9f8d4573ae00" + } + }, + "9eecf54225e340bb8c90b5f995d4b373": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "a057f607dafc40b7b79b9e18f39eb7e6": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "a46aa200af2f48ada249a8c0a9380205": { + "model_module": "@jupyter-widgets/controls", + "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_f66fa30edfb746c891ad989ddc8f9e15", + "placeholder": "​", + "style": "IPY_MODEL_46ca8a205e9b41d6afd398a6f898864b", + "value": " 0/2 [02:23<?, ?it/s]" + } + }, + "a52482471c264b20ab21b77b7c28fbda": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "a666e6038aca4b71b4e17dd1af4d0d56": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "a72b06cc9c6e4cdaa186e2c0427d19d8": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "a83ec39e41f74a24bcf57e4237c14f78": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "aacfc3076f5943b59c596c3ce909204e": { + "model_module": "@jupyter-widgets/controls", + "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_4a750d53517b4eafbc0270584e3f135b", + "IPY_MODEL_89a0071585ff48cf87d2fcf88904d690" + ], + "layout": "IPY_MODEL_8444eded3fec4895982cff64b9fae053" + } + }, + "ab2580695cd643368a705edeb10b962b": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "ac5ccfb5768a46a08ddd9e5546015bc8": { + "model_module": "@jupyter-widgets/controls", + "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_6b1b65a198eb43309653094ae31a8c97", + "placeholder": "​", + "style": "IPY_MODEL_9555b5c85714428183d52747b6be8801", + "value": " 814/814 [00:05<00:00, 157.03it/s]" + } + }, + "aefb6c32d3bf464fbaa7f1d101d6272b": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "b1db6f47be624615bb4a451418509bf7": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "b20bd1bb9696470c8c1d1046009cd825": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "b54faac9cb314f4c81a8faf814617d94": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_dae8edb336f8424d8f894d8f699829fa", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9eecf54225e340bb8c90b5f995d4b373", + "value": 814 + } + }, + "b5fda28c73d3444dae7235d062b34461": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "b7c841aca42647f0b02e98e240a788da": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "ba90bd7d0d8c498cbe35a841d30ea7df": { + "model_module": "@jupyter-widgets/controls", + "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_f03195cd5dcd46c790f94d35af74a1b7", + "placeholder": "​", + "style": "IPY_MODEL_5d6d209b56214f48a820161cd7fee006", + "value": " 814/814 [00:05<00:00, 159.71it/s]" + } + }, + "be5c32f1a4ad417db91208bb15c58a9d": { + "model_module": "@jupyter-widgets/controls", + "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_cdb5baa28a7e451bb6b2c77b510e7ed3", + "placeholder": "​", + "style": "IPY_MODEL_d066712b2af74806a38bd26e036000cb", + "value": " 1628/1628 [00:09<00:00, 176.67it/s]" + } + }, + "be77a878680543bb86ce93db203a84e6": { + "model_module": "@jupyter-widgets/controls", + "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_91c33ce6ac1141dfbc15e60f8969268c", + "placeholder": "​", + "style": "IPY_MODEL_aefb6c32d3bf464fbaa7f1d101d6272b", + "value": " 814/814 [00:05<00:00, 159.91it/s]" + } + }, + "be96fab63d5447a9bbf88b7a99f4fad2": { + "model_module": "@jupyter-widgets/controls", + "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_3f0523cee0d041a58133f1c40672ef9d", + "placeholder": "​", + "style": "IPY_MODEL_5247081348524a8b91bb1ff8ae586482", + "value": " 6512/6512 [01:40<00:00, 64.85it/s, loss=0.267, v_num=4, train_loss_step=0.294, train_loss_epoch=0.246]" + } + }, + "beb5ce78323642ea9150b21809bfc9c2": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_41ad344c945f4a38bc16194a6f90e12d", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1ca245e2973246d0b87afd03e199ef8a", + "value": 814 + } + }, + "c13e823905564498a5806cfc1a39033b": { + "model_module": "@jupyter-widgets/controls", + "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_e24a21790adb47609e740edd04e36fa4", + "IPY_MODEL_2be500b075714be6b76615ed3704f75a" + ], + "layout": "IPY_MODEL_13eeebc16ce540c7ba988792c25b6ea7" + } + }, + "c19e59c50d174655b942e1146bec38ae": { + "model_module": "@jupyter-widgets/controls", + "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_398ecbff4e0d4c7b931f5deedf5c5f32", + "IPY_MODEL_507da262dc6449fda43f7fbc90e9629a" + ], + "layout": "IPY_MODEL_8999fc282d544821a7494ee8034a2ae6" + } + }, + "c31238ea84b44640a96d20ce3e96d5d8": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "c5e3e3e4b67a4ca8ae80cde8465fffed": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "c62a024be94344b695846f68f3fac540": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "c76192651a5b41b68756c034c5902857": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "cbdcc54cf91b4c10a5602ffea7acf2e4": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "cdb5baa28a7e451bb6b2c77b510e7ed3": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "ce7d0486dd0c48b38ed4624fbb7ca98e": { + "model_module": "@jupyter-widgets/controls", + "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_14dc6a1294b640d9b62eac720f25d930", + "placeholder": "​", + "style": "IPY_MODEL_d59a114d1a6749f58498d7277c792c20", + "value": " 814/814 [00:05<00:00, 162.95it/s]" + } + }, + "d066712b2af74806a38bd26e036000cb": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "d434a091abc340aab5ba5d45516ab704": { + "model_module": "@jupyter-widgets/base", + "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": "inline-flex", + "flex": null, + "flex_flow": "row wrap", + "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": "100%" + } + }, + "d4fdaa5283cb43cea3a7763936108e73": { + "model_module": "@jupyter-widgets/controls", + "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_d5f874faa0424292a79f255758dbcb56", + "IPY_MODEL_ba90bd7d0d8c498cbe35a841d30ea7df" + ], + "layout": "IPY_MODEL_3621fcf487aa4962806e4822067e32fc" + } + }, + "d59a114d1a6749f58498d7277c792c20": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "d5f874faa0424292a79f255758dbcb56": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_319a9b7130d94b808cf0b172986f74cb", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_46e4179889ea4fee9a3c7355cdedef62", + "value": 814 + } + }, + "d73c13c532af4330b2402182160dc956": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "d8c7fd308e3a42b7bf9faa23276d915d": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "dae8edb336f8424d8f894d8f699829fa": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "de8f1fe7041c43d2a1ec80f498540b9a": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "dfbd49c6d9ef471ab1a91ca1a0847139": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "e163374f9f844d719e82bcf1c22d5c8f": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "e24a21790adb47609e740edd04e36fa4": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_182b0a8756ed498db9edf8b4e700fb75", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f41fd75496ba46c487c64f5009a8d2fb", + "value": 814 + } + }, + "e26e9454d5c646669334f0caf5bdb768": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "e2e4f4d5063c4a97bf5e49e89181253d": { + "model_module": "@jupyter-widgets/base", + "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": "2", + "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 + } + }, + "e67b74ad0d92413087e9775b9b09dc99": { + "model_module": "@jupyter-widgets/controls", + "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_b7c841aca42647f0b02e98e240a788da", + "placeholder": "​", + "style": "IPY_MODEL_6352b59b4c8a4ec08433ea844cb2de0e", + "value": " 814/814 [00:05<00:00, 155.59it/s]" + } + }, + "e6e18150f0384f3a9f67e06303713795": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "e87518a5e5604f9bb593f165f657f5fe": { + "model_module": "@jupyter-widgets/controls", + "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": "Testing: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_6911d13b276149c78d82b4a51f85350a", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4c20a52b42624c68b9126c273b471158", + "value": 1 + } + }, + "e9116975af6e42faa575e3cffb3f530b": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "ee52bc3386854ea5bbae2156d4ada495": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "ee5f1017a2d14e1f864f428e06d8b33f": { + "model_module": "@jupyter-widgets/controls", + "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": "Epoch 14: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_c62a024be94344b695846f68f3fac540", + "max": 6512, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2e547b5f16b74c41bef1b970927d777e", + "value": 6512 + } + }, + "eeb206ca26294e34b50cff435414e1ce": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "f03195cd5dcd46c790f94d35af74a1b7": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "f07a68baf91e4d168df9a9037633e7e4": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "f1c8a715035f478d881eabd7caa810b7": { + "model_module": "@jupyter-widgets/controls", + "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": "info", + "description": "Validating: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_626b4b8fa5284fa293c690ba30cdaf21", + "max": 814, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a83ec39e41f74a24bcf57e4237c14f78", + "value": 814 + } + }, + "f41fd75496ba46c487c64f5009a8d2fb": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "f5c377bf987a4f08a6e4aae27b08ad37": { + "model_module": "@jupyter-widgets/controls", + "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": "initial" + } + }, + "f66fa30edfb746c891ad989ddc8f9e15": { + "model_module": "@jupyter-widgets/base", + "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 + } + }, + "fa87fd408ee84de4a94cec29cde49485": { + "model_module": "@jupyter-widgets/controls", + "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_2dc93287e67944be9523261022be0f06", + "IPY_MODEL_a46aa200af2f48ada249a8c0a9380205" + ], + "layout": "IPY_MODEL_2deba6727b3a4a28911c2eb2af140fda" + } + }, + "fbc3e8e9053d417b835bdb4a0758a44b": { + "model_module": "@jupyter-widgets/controls", + "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": "" + } + }, + "fd7f8d753c5f453187abda2222c3da42": { + "model_module": "@jupyter-widgets/controls", + "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_7ef8e07c6b4d435d883309f94c129a3a", + "placeholder": "​", + "style": "IPY_MODEL_fbc3e8e9053d417b835bdb4a0758a44b", + "value": " 814/814 [00:04<00:00, 175.74it/s]" + } + }, + "fe73910360764c61b468fd87b77c309a": { + "model_module": "@jupyter-widgets/controls", + "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_b54faac9cb314f4c81a8faf814617d94", + "IPY_MODEL_1ed3e8a311654836845f7f5a748ad3a7" + ], + "layout": "IPY_MODEL_16327b62db414d37bcf734f2396432f6" + } + }, + "fe9e6634158e465cbe17bf2fa9169cd1": { + "model_module": "@jupyter-widgets/controls", + "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_0f8b6484127a4b5e8230118797d4990b", + "IPY_MODEL_e67b74ad0d92413087e9775b9b09dc99" + ], + "layout": "IPY_MODEL_72a0ae95558b4232b323625cd67d1371" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/torchts/utils/dataloader.py b/torchts/utils/dataloader.py new file mode 100644 index 00000000..3f0fb364 --- /dev/null +++ b/torchts/utils/dataloader.py @@ -0,0 +1,257 @@ +#!/usr/bin/env python +# coding: utf-8 + +# In[ ]: + + +import pandas as pd +import torch +from torch.utils.data import Dataset, DataLoader +import scipy.io +import urllib.request +import zipfile +from pandas import HDFStore +import numpy as np +from os.path import join + +# Define PyTorch dataset class +class BikeDataset(Dataset): + # URL of the zip file to download + url = "https://www.microsoft.com/en-us/research/uploads/prod/2016/02/Codes.zip" + + # Destination folder to extract the zip file + destination_folder = "bike_sharing_dataset" + + def __init__( + self, + root:str, + H:int, + P:int, + download: bool = False + ): + """ + H (int): amount of historical timestamp + P (int): amount of predicted timestamp + download (bool, optional): If true, downloads the dataset from the internet and + puts it in root directory. If dataset is already downloaded, it is not + downloaded again. + root (string): Root directory of dataset where directory + ``cifar-10-batches-py`` exists or will be saved to if download is set to True. + + X: historical data with shape + (number of samples, number of historical timestamp, entire traffic + check-out across 23 clusters + check-out proportion across 23 clusters + 7 features) + Y: future data with shape + (number of samples, number of futur timestamp,check-out across 23 clusters) + """ + + if download: + # Download the zip file from the URL + urllib.request.urlretrieve(self.url, "Codes.zip") + + # Extract the zip file to the destination folder + with zipfile.ZipFile("Codes.zip", 'r') as zip_ref: + zip_ref.extractall(root+"/"+self.destination_folder) + + print("Zip file downloaded and extracted successfully in "+root+"/"+self.destination_folder) + + # Load the .mat file + mat = scipy.io.loadmat(root+"/"+self.destination_folder+'/Codes/Check-out Proportion/fea_pro.mat') + else: + # Load the .mat file + mat = scipy.io.loadmat(root+'/Codes/Check-out Proportion/fea_pro.mat') + + # Get the 2D matrix + fea = mat['fea'] + m_o = mat['m_o'] + m_O = mat['m_O'] + rho = mat['rho'] + + # Split the data into input and output features + fea_H = [] + m_o_H = [] + m_o_P = [] + m_O_H = [] + rho_H = [] + for i in range(H, len(fea) - P + 1): + fea_H.append(fea[i-H:i]) + m_o_H.append(m_o[i-H:i]) + m_o_P.append(m_o[i:i+P]) + m_O_H.append(m_O[0][i-H:i]) + rho_H.append(rho[i-H:i]) + fea_H = torch.tensor(fea_H, dtype=torch.float32) + m_o_H = torch.tensor(m_o_H, dtype=torch.float32) + m_O_H = torch.tensor(m_O_H, dtype=torch.float32) + m_O_H = m_O_H.unsqueeze(-1) + rho_H = torch.tensor(rho_H, dtype=torch.float32) + + # Concetenate four tensors + X = torch.cat([m_O_H, m_o_H, rho_H, fea_H], dim=2) + + #print(X.shape) + self.x = X + self.y = torch.tensor(m_o_P, dtype=torch.float32) + + def __len__(self): + return len(self.x) + + def __getitem__(self, idx): + return self.x[idx], self.y[idx] + +class seq2seq: + # URL of the zip file to download + # url = "https://drive.google.com/drive/folders/10FOTa6HXPqX8Pf5WRoRwcFnW9BrNZEIX" + + def __init__( + self, + root:str, + horizon=12, + window=1, + features=['avg_speed'],#['avg_speed', 'total_flow'] + test_ratio = 0.2, + train_ratio = 0.7, + ): + """ + """ + filename = root+"/pems-bay.h5" + + # read store for HDFS + store = HDFStore(filename) + store + + # select a fraction from all stations + denom = 30 # (i.e. 1/30) + df_query_raw = store.speed.stack( + ).reset_index(name='avg_speed' + ).rename(columns={"level_0": "timestamp", + "sensor_id": "station"}) + df_query_raw = store.speed.loc[:, df_query_raw.station.unique()[:len(df_query_raw.station.unique())//denom]].stack( + ).reset_index(name='avg_speed' + ).rename(columns={"level_0": "timestamp", + "sensor_id": "station"}) + print(df_query_raw.shape) + print('Number of stations {}'.format(len(df_query_raw.station.unique()))) + df_query_raw.head() + print("1") + #clean Data + df_query_raw.isna().sum() # check for na values + # fill na values with rolling mean + df_query_cleaned = df_query_raw.fillna(df_query_raw.rolling(window=6,min_periods=1).mean()) + df_query_cleaned.isna().sum() # verify na values are not present + print("2") + #Generate Seq2Seq Sequences + idx_cols = ['station','timestamp'] + + df_query_cleaned = df_query_cleaned.set_index(idx_cols).sort_values(by=idx_cols) + print("3") + features_tensor_list = [] + for f in features: + print(f) + + ts_seq_list = [] + for s in df_query_cleaned.index.unique(level=0): # concatenate stations next to each other + # print(s) + values = df_query_cleaned.loc[s][f].values + + for i in range(len(values)-horizon*2): + arr = np.array(values[i:i+horizon*2]) + ts_seq_list.append(torch.from_numpy(arr.reshape(horizon*2,1))) + + sequence_tensor = torch.stack(ts_seq_list, dim=0) + + features_tensor_list.append(sequence_tensor) + print("4") + data_seq2seq = torch.cat(features_tensor_list, dim=2) + print("fin") + print(data_seq2seq.shape) + + # generate x and y vectors + x = data_seq2seq[:, :12, :] + y = data_seq2seq[:, 12:, :] + + print(x.shape, y.shape) + + # define split ratio for train, val and test + num_samples = x.shape[0] + num_test = round(num_samples * test_ratio)#test ratio + num_train = round(num_samples * train_ratio)#train ratio + num_val = num_samples - num_test - num_train + + print('Total number of samples: {}'.format(num_samples)) + print('Percentage for train: {:.2f}'.format(100*num_train/num_samples)) + print('Percentage for val: {:.2f}'.format(100*num_val/num_samples)) + print('Percentage for test: {:.2f}'.format(100*num_test/num_samples)) + + # train + x_train = x[:num_train] + y_train = y[:num_train] + + # val + x_val = x[num_train: num_train + num_val] + y_val = y[num_train: num_train + num_val] + + # test + x_test = x[-num_test:] + y_test = y[-num_test:] + + print(x_train.shape, y_train.shape) + print(x_val.shape, y_val.shape) + print(x_test.shape, y_test.shape) + + # output train, val, and test NPZ files + output_dir = root + + for cat in ["train", "val", "test"]: + + _x = locals()["x_" + cat] + _y = locals()["y_" + cat] + + print(cat, "x: ", _x.shape, "y:", _y.shape) + + np.savez_compressed( + join(output_dir, "%s.npz" % cat), + x=_x, + y=_y + ) + + +# # Create PyTorch dataset and data loader +# dataset = BikeDataset(root = "C:/Users/Felix/Documents/Spatiotemporal_Data_Repository/bike_test",H = 3,P = 2,download = True) +# +# print(dataset.x.size()) +# print(dataset.y.size()) +# dataloader = DataLoader(dataset, batch_size=32, shuffle=True) +# +# # define neural network model +# class BikeModel(torch.nn.Module): +# def __init__(self): +# super().__init__() +# self.fc1 = torch.nn.Linear(3*(7+23+1+23), 128) +# self.fc2 = torch.nn.Linear(128, 64) +# self.fc3 = torch.nn.Linear(64, 2*23) +# +# def forward(self, x): +# x = x.view(x.shape[0], -1) # flatten the input tensor +# x = torch.relu(self.fc1(x)) +# x = torch.relu(self.fc2(x)) +# x = self.fc3(x) +# return x.view(x.shape[0], 2, 23) # reshape the output tensor +# +# # define loss function and optimizer +# criterion = torch.nn.MSELoss() +# optimizer = torch.optim.Adam(BikeModel().parameters()) +# +# # train the model +# num_epochs = 10 +# for epoch in range(num_epochs): +# epoch_loss = 100.0 +# for batch_idx, (data, target) in enumerate(dataloader): +# optimizer.zero_grad() +# output = BikeModel()(data) +# loss = criterion(output, target) +# loss.backward() +# optimizer.step() +# epoch_loss += loss.item() +# print(f"Epoch {epoch+1} loss: {epoch_loss/len(dataloader):.4f}") +# + +# dataset = seq2seq(root = ".",horizon=12, window=1, features=['avg_speed'],test_ratio = 0.2,train_ratio = 0.7) From e30b3b37ed866dd69f4a77212c0aaffbed293920 Mon Sep 17 00:00:00 2001 From: bhfxwangshida Date: Sun, 7 May 2023 21:48:32 -0700 Subject: [PATCH 3/5] change dataloader_v0.3 --- torchts/utils/dataloader_v0.3.py | 264 +++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 torchts/utils/dataloader_v0.3.py diff --git a/torchts/utils/dataloader_v0.3.py b/torchts/utils/dataloader_v0.3.py new file mode 100644 index 00000000..21b89105 --- /dev/null +++ b/torchts/utils/dataloader_v0.3.py @@ -0,0 +1,264 @@ +#!/usr/bin/env python +# coding: utf-8 + +import pandas as pd +import torch +from torch.utils.data import Dataset, DataLoader +import scipy.io +import urllib.request +import zipfile +from pandas import HDFStore +import numpy as np +from os.path import join + +# Define PyTorch dataset class +class BikeDataset(Dataset): + # URL of the zip file to download + url = "https://www.microsoft.com/en-us/research/uploads/prod/2016/02/Codes.zip" + + # Destination folder to extract the zip file + destination_folder = "bike_sharing_dataset" + + def __init__( + self, + root:str, + H:int, + P:int, + download: bool = False + ): + """ + H (int): amount of historical timestamp + P (int): amount of predicted timestamp + download (bool, optional): If true, downloads the dataset from the internet and + puts it in root directory. If dataset is already downloaded, it is not + downloaded again. + root (string): Root directory of dataset where directory + ``cifar-10-batches-py`` exists or will be saved to if download is set to True. + + X: historical data with shape + (number of samples, number of historical timestamp, entire traffic + check-out across 23 clusters + check-out proportion across 23 clusters + 7 features) + Y: future data with shape + (number of samples, number of futur timestamp,check-out across 23 clusters) + """ + + if download: + # Download the zip file from the URL + urllib.request.urlretrieve(self.url, "Codes.zip") + + # Extract the zip file to the destination folder + with zipfile.ZipFile("Codes.zip", 'r') as zip_ref: + zip_ref.extractall(root+"/"+self.destination_folder) + + print("Zip file downloaded and extracted successfully in "+root+"/"+self.destination_folder) + + # Load the .mat file + mat = scipy.io.loadmat(root+"/"+self.destination_folder+'/Codes/Check-out Proportion/fea_pro.mat') + else: + # Load the .mat file + mat = scipy.io.loadmat(root+'/Codes/Check-out Proportion/fea_pro.mat') + + # Get the 2D matrix + fea = mat['fea'] + m_o = mat['m_o'] + m_O = mat['m_O'] + rho = mat['rho'] + + # Split the data into input and output features + fea_H = [] + m_o_H = [] + m_o_P = [] + m_O_H = [] + rho_H = [] + for i in range(H, len(fea) - P + 1): + fea_H.append(fea[i-H:i]) + m_o_H.append(m_o[i-H:i]) + m_o_P.append(m_o[i:i+P]) + m_O_H.append(m_O[0][i-H:i]) + rho_H.append(rho[i-H:i]) + fea_H = torch.tensor(fea_H, dtype=torch.float32) + m_o_H = torch.tensor(m_o_H, dtype=torch.float32) + m_O_H = torch.tensor(m_O_H, dtype=torch.float32) + m_O_H = m_O_H.unsqueeze(-1) + rho_H = torch.tensor(rho_H, dtype=torch.float32) + + # Concetenate four tensors + X = torch.cat([m_O_H, m_o_H, rho_H, fea_H], dim=2) + + #print(X.shape) + self.x = X + self.y = torch.tensor(m_o_P, dtype=torch.float32) + + def __len__(self): + return len(self.x) + + def __getitem__(self, idx): + return self.x[idx], self.y[idx] + +class seq2seq: + # URL of the zip file to download + # url = "https://drive.google.com/drive/folders/10FOTa6HXPqX8Pf5WRoRwcFnW9BrNZEIX" + + def __init__( + self, + root:str, + horizon=12, + window=1, + features=['avg_speed'],#['avg_speed', 'total_flow'] + test_ratio = 0.2, + train_ratio = 0.7, + ): + """ + """ + filename = root+"/pems-bay.h5" + + # read store for HDFS + store = HDFStore(filename) + store + + # select a fraction from all stations + denom = 30 # (i.e. 1/30) + df_query_raw = store.speed.stack( + ).reset_index(name='avg_speed' + ).rename(columns={"level_0": "timestamp", + "sensor_id": "station"}) + df_query_raw = store.speed.loc[:, df_query_raw.station.unique()[:len(df_query_raw.station.unique())//denom]].stack( + ).reset_index(name='avg_speed' + ).rename(columns={"level_0": "timestamp", + "sensor_id": "station"}) + print(df_query_raw.shape) + print('Number of stations {}'.format(len(df_query_raw.station.unique()))) + df_query_raw.head() + print("1") + #clean Data + df_query_raw.isna().sum() # check for na values + # fill na values with rolling mean + df_query_cleaned = df_query_raw.fillna(df_query_raw.rolling(window=6,min_periods=1).mean()) + df_query_cleaned.isna().sum() # verify na values are not present + print("2") + #Generate Seq2Seq Sequences + idx_cols = ['station','timestamp'] + + df_query_cleaned = df_query_cleaned.set_index(idx_cols).sort_values(by=idx_cols) + print("3") + features_tensor_list = [] + for f in features: + print(f) + + ts_seq_list = [] + for s in df_query_cleaned.index.unique(level=0): # concatenate stations next to each other + # print(s) + values = df_query_cleaned.loc[s][f].values + + for i in range(len(values)-horizon*2): + arr = np.array(values[i:i+horizon*2]) + ts_seq_list.append(torch.from_numpy(arr.reshape(horizon*2,1))) + + sequence_tensor = torch.stack(ts_seq_list, dim=0) + + features_tensor_list.append(sequence_tensor) + print("4") + data_seq2seq = torch.cat(features_tensor_list, dim=2) + print("fin") + print(data_seq2seq.shape) + + # generate x and y vectors + x = data_seq2seq[:, :12, :] + y = data_seq2seq[:, 12:, :] + + print(x.shape, y.shape) + + # define split ratio for train, val and test + num_samples = x.shape[0] + num_test = round(num_samples * test_ratio)#test ratio + num_train = round(num_samples * train_ratio)#train ratio + num_val = num_samples - num_test - num_train + + print('Total number of samples: {}'.format(num_samples)) + print('Percentage for train: {:.2f}'.format(100*num_train/num_samples)) + print('Percentage for val: {:.2f}'.format(100*num_val/num_samples)) + print('Percentage for test: {:.2f}'.format(100*num_test/num_samples)) + + # train + x_train = x[:num_train] + y_train = y[:num_train] + + # val + x_val = x[num_train: num_train + num_val] + y_val = y[num_train: num_train + num_val] + + # test + x_test = x[-num_test:] + y_test = y[-num_test:] + + print(x_train.shape, y_train.shape) + print(x_val.shape, y_val.shape) + print(x_test.shape, y_test.shape) + + # output train, val, and test NPZ files + output_dir = root + + for cat in ["train", "val", "test"]: + + _x = locals()["x_" + cat] + _y = locals()["y_" + cat] + + print(cat, "x: ", _x.shape, "y:", _y.shape) + + np.savez_compressed( + join(output_dir, "%s.npz" % cat), + x=_x, + y=_y + ) + + +# # Create PyTorch dataset and data loader +# dataset = BikeDataset(root = "C:/Users/Felix/Documents/Spatiotemporal_Data_Repository/bike_test",H = 3,P = 2,download = True) +# +# print(dataset.x.size()) +# print(dataset.y.size()) +# dataloader = DataLoader(dataset, batch_size=32, shuffle=True) +# +# # define neural network model +# class BikeModel(torch.nn.Module): +# def __init__(self): +# super().__init__() +# self.fc1 = torch.nn.Linear(3*(7+23+1+23), 128) +# self.fc2 = torch.nn.Linear(128, 64) +# self.fc3 = torch.nn.Linear(64, 2*23) +# +# def forward(self, x): +# x = x.view(x.shape[0], -1) # flatten the input tensor +# x = torch.relu(self.fc1(x)) +# x = torch.relu(self.fc2(x)) +# x = self.fc3(x) +# return x.view(x.shape[0], 2, 23) # reshape the output tensor +# +# # define loss function and optimizer +# criterion = torch.nn.MSELoss() +# optimizer = torch.optim.Adam(BikeModel().parameters()) +# +# # train the model +# num_epochs = 10 +# for epoch in range(num_epochs): +# epoch_loss = 100.0 +# for batch_idx, (data, target) in enumerate(dataloader): +# optimizer.zero_grad() +# output = BikeModel()(data) +# loss = criterion(output, target) +# loss.backward() +# optimizer.step() +# epoch_loss += loss.item() +# print(f"Epoch {epoch+1} loss: {epoch_loss/len(dataloader):.4f}") +# + +# In[2]: + + +dataset = seq2seq(root = ".",horizon=12, window=1, features=['avg_speed'],test_ratio = 0.2,train_ratio = 0.7) + + +# In[ ]: + + + + From 5ec5ebec933ef8b6a1b7941275fa29f38a11359a Mon Sep 17 00:00:00 2001 From: bhfxwangshida Date: Fri, 7 Jul 2023 22:07:02 -0700 Subject: [PATCH 4/5] delete additional dataloader files --- torchts/utils/dataloader.ipynb | 155 ------------------ torchts/utils/dataloader_v0.3.py | 264 ------------------------------- 2 files changed, 419 deletions(-) delete mode 100644 torchts/utils/dataloader.ipynb delete mode 100644 torchts/utils/dataloader_v0.3.py diff --git a/torchts/utils/dataloader.ipynb b/torchts/utils/dataloader.ipynb deleted file mode 100644 index 4a871474..00000000 --- a/torchts/utils/dataloader.ipynb +++ /dev/null @@ -1,155 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 24, - "id": "32a96ebf", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "torch.Size([4388, 3, 54])\n", - "torch.Size([4388, 2, 23])\n", - "Epoch 1 loss: 7224.3987\n", - "Epoch 2 loss: 7292.3802\n", - "Epoch 3 loss: 7197.8602\n", - "Epoch 4 loss: 7199.7444\n", - "Epoch 5 loss: 7190.8045\n", - "Epoch 6 loss: 7194.3698\n", - "Epoch 7 loss: 7206.4779\n", - "Epoch 8 loss: 7220.1123\n", - "Epoch 9 loss: 7249.8706\n", - "Epoch 10 loss: 7214.2600\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "import torch\n", - "from torch.utils.data import Dataset, DataLoader\n", - "import scipy.io\n", - "\n", - "# Load the .mat file\n", - "mat = scipy.io.loadmat('bike/Codes/Codes/Check-out Proportion/fea_pro.mat')\n", - "\n", - "# Define PyTorch dataset class\n", - "class BikeDataset(Dataset):\n", - " def __init__(self,H,P):\n", - " \"\"\"\n", - " H: amount of historical timestamp\n", - " P: amount of predicted timestamp\n", - " X: historical data with shape \n", - " (number of samples, number of historical timestamp, entire traffic + check-out across 23 clusters + check-out proportion across 23 clusters + 7 features)\n", - " Y: future data with shape\n", - " (number of samples, number of futur timestamp,check-out across 23 clusters)\n", - " \"\"\"\n", - " \n", - " # Get the 2D matrix\n", - " fea = mat['fea']\n", - " m_o = mat['m_o']\n", - " m_O = mat['m_O']\n", - " rho = mat['rho']\n", - " \n", - " # Split the data into input and output features\n", - " fea_H = []\n", - " m_o_H = []\n", - " m_o_P = []\n", - " m_O_H = []\n", - " rho_H = []\n", - " for i in range(H, len(fea) - P + 1):\n", - " fea_H.append(fea[i-H:i])\n", - " m_o_H.append(m_o[i-H:i])\n", - " m_o_P.append(m_o[i:i+P])\n", - " m_O_H.append(m_O[0][i-H:i])\n", - " rho_H.append(rho[i-H:i])\n", - " fea_H = torch.tensor(fea_H, dtype=torch.float32)\n", - " m_o_H = torch.tensor(m_o_H, dtype=torch.float32)\n", - " m_O_H = torch.tensor(m_O_H, dtype=torch.float32)\n", - " m_O_H = m_O_H.unsqueeze(-1)\n", - " rho_H = torch.tensor(rho_H, dtype=torch.float32)\n", - " \n", - " # Concetenate four tensors\n", - " X = torch.cat([m_O_H, m_o_H, rho_H, fea_H], dim=2)\n", - " \n", - " #print(X.shape)\n", - " self.x = X\n", - " self.y = torch.tensor(m_o_P, dtype=torch.float32)\n", - "\n", - " def __len__(self):\n", - " return len(self.x)\n", - "\n", - " def __getitem__(self, idx):\n", - " return self.x[idx], self.y[idx]\n", - "\n", - "# Create PyTorch dataset and data loader\n", - "dataset = BikeDataset(3,2)\n", - "print(dataset.x.size())\n", - "print(dataset.y.size())\n", - "dataloader = DataLoader(dataset, batch_size=32, shuffle=True)\n", - "\n", - "# define neural network model\n", - "class BikeModel(torch.nn.Module):\n", - " def __init__(self):\n", - " super().__init__()\n", - " self.fc1 = torch.nn.Linear(3*(7+23+1+23), 128)\n", - " self.fc2 = torch.nn.Linear(128, 64)\n", - " self.fc3 = torch.nn.Linear(64, 2*23)\n", - " \n", - " def forward(self, x):\n", - " x = x.view(x.shape[0], -1) # flatten the input tensor\n", - " x = torch.relu(self.fc1(x))\n", - " x = torch.relu(self.fc2(x))\n", - " x = self.fc3(x)\n", - " return x.view(x.shape[0], 2, 23) # reshape the output tensor\n", - "\n", - "# define loss function and optimizer\n", - "criterion = torch.nn.MSELoss()\n", - "optimizer = torch.optim.Adam(BikeModel().parameters())\n", - "\n", - "# train the model\n", - "num_epochs = 10\n", - "for epoch in range(num_epochs):\n", - " epoch_loss = 100.0\n", - " for batch_idx, (data, target) in enumerate(dataloader):\n", - " optimizer.zero_grad()\n", - " output = BikeModel()(data)\n", - " loss = criterion(output, target)\n", - " loss.backward()\n", - " optimizer.step()\n", - " epoch_loss += loss.item()\n", - " print(f\"Epoch {epoch+1} loss: {epoch_loss/len(dataloader):.4f}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0cde0727", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/torchts/utils/dataloader_v0.3.py b/torchts/utils/dataloader_v0.3.py deleted file mode 100644 index 21b89105..00000000 --- a/torchts/utils/dataloader_v0.3.py +++ /dev/null @@ -1,264 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -import pandas as pd -import torch -from torch.utils.data import Dataset, DataLoader -import scipy.io -import urllib.request -import zipfile -from pandas import HDFStore -import numpy as np -from os.path import join - -# Define PyTorch dataset class -class BikeDataset(Dataset): - # URL of the zip file to download - url = "https://www.microsoft.com/en-us/research/uploads/prod/2016/02/Codes.zip" - - # Destination folder to extract the zip file - destination_folder = "bike_sharing_dataset" - - def __init__( - self, - root:str, - H:int, - P:int, - download: bool = False - ): - """ - H (int): amount of historical timestamp - P (int): amount of predicted timestamp - download (bool, optional): If true, downloads the dataset from the internet and - puts it in root directory. If dataset is already downloaded, it is not - downloaded again. - root (string): Root directory of dataset where directory - ``cifar-10-batches-py`` exists or will be saved to if download is set to True. - - X: historical data with shape - (number of samples, number of historical timestamp, entire traffic + check-out across 23 clusters + check-out proportion across 23 clusters + 7 features) - Y: future data with shape - (number of samples, number of futur timestamp,check-out across 23 clusters) - """ - - if download: - # Download the zip file from the URL - urllib.request.urlretrieve(self.url, "Codes.zip") - - # Extract the zip file to the destination folder - with zipfile.ZipFile("Codes.zip", 'r') as zip_ref: - zip_ref.extractall(root+"/"+self.destination_folder) - - print("Zip file downloaded and extracted successfully in "+root+"/"+self.destination_folder) - - # Load the .mat file - mat = scipy.io.loadmat(root+"/"+self.destination_folder+'/Codes/Check-out Proportion/fea_pro.mat') - else: - # Load the .mat file - mat = scipy.io.loadmat(root+'/Codes/Check-out Proportion/fea_pro.mat') - - # Get the 2D matrix - fea = mat['fea'] - m_o = mat['m_o'] - m_O = mat['m_O'] - rho = mat['rho'] - - # Split the data into input and output features - fea_H = [] - m_o_H = [] - m_o_P = [] - m_O_H = [] - rho_H = [] - for i in range(H, len(fea) - P + 1): - fea_H.append(fea[i-H:i]) - m_o_H.append(m_o[i-H:i]) - m_o_P.append(m_o[i:i+P]) - m_O_H.append(m_O[0][i-H:i]) - rho_H.append(rho[i-H:i]) - fea_H = torch.tensor(fea_H, dtype=torch.float32) - m_o_H = torch.tensor(m_o_H, dtype=torch.float32) - m_O_H = torch.tensor(m_O_H, dtype=torch.float32) - m_O_H = m_O_H.unsqueeze(-1) - rho_H = torch.tensor(rho_H, dtype=torch.float32) - - # Concetenate four tensors - X = torch.cat([m_O_H, m_o_H, rho_H, fea_H], dim=2) - - #print(X.shape) - self.x = X - self.y = torch.tensor(m_o_P, dtype=torch.float32) - - def __len__(self): - return len(self.x) - - def __getitem__(self, idx): - return self.x[idx], self.y[idx] - -class seq2seq: - # URL of the zip file to download - # url = "https://drive.google.com/drive/folders/10FOTa6HXPqX8Pf5WRoRwcFnW9BrNZEIX" - - def __init__( - self, - root:str, - horizon=12, - window=1, - features=['avg_speed'],#['avg_speed', 'total_flow'] - test_ratio = 0.2, - train_ratio = 0.7, - ): - """ - """ - filename = root+"/pems-bay.h5" - - # read store for HDFS - store = HDFStore(filename) - store - - # select a fraction from all stations - denom = 30 # (i.e. 1/30) - df_query_raw = store.speed.stack( - ).reset_index(name='avg_speed' - ).rename(columns={"level_0": "timestamp", - "sensor_id": "station"}) - df_query_raw = store.speed.loc[:, df_query_raw.station.unique()[:len(df_query_raw.station.unique())//denom]].stack( - ).reset_index(name='avg_speed' - ).rename(columns={"level_0": "timestamp", - "sensor_id": "station"}) - print(df_query_raw.shape) - print('Number of stations {}'.format(len(df_query_raw.station.unique()))) - df_query_raw.head() - print("1") - #clean Data - df_query_raw.isna().sum() # check for na values - # fill na values with rolling mean - df_query_cleaned = df_query_raw.fillna(df_query_raw.rolling(window=6,min_periods=1).mean()) - df_query_cleaned.isna().sum() # verify na values are not present - print("2") - #Generate Seq2Seq Sequences - idx_cols = ['station','timestamp'] - - df_query_cleaned = df_query_cleaned.set_index(idx_cols).sort_values(by=idx_cols) - print("3") - features_tensor_list = [] - for f in features: - print(f) - - ts_seq_list = [] - for s in df_query_cleaned.index.unique(level=0): # concatenate stations next to each other - # print(s) - values = df_query_cleaned.loc[s][f].values - - for i in range(len(values)-horizon*2): - arr = np.array(values[i:i+horizon*2]) - ts_seq_list.append(torch.from_numpy(arr.reshape(horizon*2,1))) - - sequence_tensor = torch.stack(ts_seq_list, dim=0) - - features_tensor_list.append(sequence_tensor) - print("4") - data_seq2seq = torch.cat(features_tensor_list, dim=2) - print("fin") - print(data_seq2seq.shape) - - # generate x and y vectors - x = data_seq2seq[:, :12, :] - y = data_seq2seq[:, 12:, :] - - print(x.shape, y.shape) - - # define split ratio for train, val and test - num_samples = x.shape[0] - num_test = round(num_samples * test_ratio)#test ratio - num_train = round(num_samples * train_ratio)#train ratio - num_val = num_samples - num_test - num_train - - print('Total number of samples: {}'.format(num_samples)) - print('Percentage for train: {:.2f}'.format(100*num_train/num_samples)) - print('Percentage for val: {:.2f}'.format(100*num_val/num_samples)) - print('Percentage for test: {:.2f}'.format(100*num_test/num_samples)) - - # train - x_train = x[:num_train] - y_train = y[:num_train] - - # val - x_val = x[num_train: num_train + num_val] - y_val = y[num_train: num_train + num_val] - - # test - x_test = x[-num_test:] - y_test = y[-num_test:] - - print(x_train.shape, y_train.shape) - print(x_val.shape, y_val.shape) - print(x_test.shape, y_test.shape) - - # output train, val, and test NPZ files - output_dir = root - - for cat in ["train", "val", "test"]: - - _x = locals()["x_" + cat] - _y = locals()["y_" + cat] - - print(cat, "x: ", _x.shape, "y:", _y.shape) - - np.savez_compressed( - join(output_dir, "%s.npz" % cat), - x=_x, - y=_y - ) - - -# # Create PyTorch dataset and data loader -# dataset = BikeDataset(root = "C:/Users/Felix/Documents/Spatiotemporal_Data_Repository/bike_test",H = 3,P = 2,download = True) -# -# print(dataset.x.size()) -# print(dataset.y.size()) -# dataloader = DataLoader(dataset, batch_size=32, shuffle=True) -# -# # define neural network model -# class BikeModel(torch.nn.Module): -# def __init__(self): -# super().__init__() -# self.fc1 = torch.nn.Linear(3*(7+23+1+23), 128) -# self.fc2 = torch.nn.Linear(128, 64) -# self.fc3 = torch.nn.Linear(64, 2*23) -# -# def forward(self, x): -# x = x.view(x.shape[0], -1) # flatten the input tensor -# x = torch.relu(self.fc1(x)) -# x = torch.relu(self.fc2(x)) -# x = self.fc3(x) -# return x.view(x.shape[0], 2, 23) # reshape the output tensor -# -# # define loss function and optimizer -# criterion = torch.nn.MSELoss() -# optimizer = torch.optim.Adam(BikeModel().parameters()) -# -# # train the model -# num_epochs = 10 -# for epoch in range(num_epochs): -# epoch_loss = 100.0 -# for batch_idx, (data, target) in enumerate(dataloader): -# optimizer.zero_grad() -# output = BikeModel()(data) -# loss = criterion(output, target) -# loss.backward() -# optimizer.step() -# epoch_loss += loss.item() -# print(f"Epoch {epoch+1} loss: {epoch_loss/len(dataloader):.4f}") -# - -# In[2]: - - -dataset = seq2seq(root = ".",horizon=12, window=1, features=['avg_speed'],test_ratio = 0.2,train_ratio = 0.7) - - -# In[ ]: - - - - From a6cef60b93aaeb2bf53b31d5040cbb9824b110b6 Mon Sep 17 00:00:00 2001 From: bhfxwangshida Date: Fri, 7 Jul 2023 22:10:33 -0700 Subject: [PATCH 5/5] Update End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb --- ...esla T4, Train 25mins)_newDataLoader.ipynb | 219 +++++++++++------- 1 file changed, 130 insertions(+), 89 deletions(-) diff --git a/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb b/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb index 03f158e0..c6935e91 100644 --- a/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb +++ b/examples/seq2seq/End2end pipeline with traffic dataset (GPU Tesla T4, Train 25mins)_newDataLoader.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 20, + "execution_count": 1, "id": "1f060813", "metadata": { "id": "1f060813" @@ -16,13 +16,17 @@ "import torch\n", "import os\n", "\n", - "os.chdir(\"G:/github repo/torchTS\")\n", - "from torchts.utils import dataloader" + "try:\n", + " from torchts.utils import dataloader\n", + "except:\n", + " import sys\n", + " sys.path.append('C:\\\\Users\\\\Felix\\\\Documents\\\\Spatiotemporal_Data_Repository\\\\torchTS')\n", + " from torchts.utils import dataloader" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 2, "id": "82bc8d0c", "metadata": {}, "outputs": [ @@ -42,7 +46,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "G:\\github repo\\torchTS\\torchts\\utils\\dataloader.py:138: FutureWarning: Dropping of nuisance columns in rolling operations is deprecated; in a future version this will raise TypeError. Select only valid columns before calling the operation. Dropped columns were Index(['timestamp'], dtype='object')\n", + "C:\\Users\\Felix\\Documents\\Spatiotemporal_Data_Repository\\torchTS\\torchts\\utils\\dataloader.py:138: FutureWarning: Dropping of nuisance columns in rolling operations is deprecated; in a future version this will raise TypeError. Select only valid columns before calling the operation. Dropped columns were Index(['timestamp'], dtype='object')\n", " df_query_cleaned = df_query_raw.fillna(df_query_raw.rolling(window=6,min_periods=1).mean())\n" ] }, @@ -68,11 +72,10 @@ } ], "source": [ - "dataset = dataloader.seq2seq(root = \"G:/github repo/torchTS/examples/seq2seq\",horizon=12, window=1, features=['avg_speed'],test_ratio = 0.2,train_ratio = 0.7)" + "dataset = dataloader.seq2seq(root = \"C:/Users/Felix/Documents/Spatiotemporal_Data_Repository/torchTS/examples/seq2seq\",horizon=12, window=1, features=['avg_speed'],test_ratio = 0.2,train_ratio = 0.7)" ] }, { - "attachments": {}, "cell_type": "markdown", "id": "bba877d9", "metadata": { @@ -84,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 3, "id": "955c5a6c", "metadata": { "id": "955c5a6c" @@ -96,19 +99,21 @@ "\n", "import time\n", "from pytorch_lightning import Trainer\n", - "from pytorch_lightning import loggers as pl_loggers" + "from pytorch_lightning import loggers as pl_loggers\n", + "\n", + "import torch.optim as optim" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 4, "id": "7cf5a23a", "metadata": { "id": "7cf5a23a" }, "outputs": [], "source": [ - "dataset_dir = 'G:/github repo/torchTS/examples/seq2seq'\n", + "dataset_dir = 'C:/Users/Felix/Documents/Spatiotemporal_Data_Repository/torchTS/examples/seq2seq'\n", "\n", "# define hyper-parameters\n", "# learning_rate = 0.01 # this parameter is currently hard coded in the optimizer\n", @@ -118,12 +123,12 @@ "input_dim = 1\n", "output_dim = 1\n", "horizon = 12\n", - "batch_size = 64" + "batch_size = 64\n" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 5, "id": "630518b3", "metadata": { "colab": { @@ -137,7 +142,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Wall time: 200 ms\n" + "Wall time: 196 ms\n" ] }, { @@ -146,7 +151,7 @@ "dict_keys(['x_train', 'y_train', 'x_val', 'y_val', 'x_test', 'y_test', 'train_loader', 'val_loader', 'test_loader', 'scaler'])" ] }, - "execution_count": 24, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -161,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 6, "id": "4d5c6331", "metadata": { "colab": { @@ -175,21 +180,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "c:\\Users\\Felix\\anaconda3\\lib\\site-packages\\torch\\nn\\modules\\rnn.py:62: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.8 and num_layers=1\n", + "C:\\Users\\Felix\\anaconda3\\lib\\site-packages\\torch\\nn\\modules\\rnn.py:71: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.8 and num_layers=1\n", " warnings.warn(\"dropout option adds dropout after all but last \"\n" ] - }, - { - "ename": "TypeError", - "evalue": "__init__() missing 1 required positional argument: 'optimizer'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_26316\\4290002247.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mdecoder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDecoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutput_dim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhidden_dim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum_layers\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdropout_rate\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mmodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSeq2Seq\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mencoder\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutput_dim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhorizon\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mG:\\github repo\\torchTS\\torchts\\nn\\models\\seq2seq.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, encoder, decoder, output_dim, horizon, **kwargs)\u001b[0m\n\u001b[0;32m 81\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mDecoder\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 82\u001b[0m \"\"\"\n\u001b[1;32m---> 83\u001b[1;33m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 84\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mencoder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 85\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdecoder\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mTypeError\u001b[0m: __init__() missing 1 required positional argument: 'optimizer'" - ] } ], "source": [ @@ -197,11 +190,10 @@ "encoder = Encoder(input_dim, hidden_dim, num_layers, dropout_rate)\n", "decoder = Decoder(output_dim, hidden_dim, num_layers, dropout_rate)\n", "\n", - "model = Seq2Seq(encoder, decoder, output_dim, horizon)" + "model = Seq2Seq(encoder, decoder, output_dim, horizon, optimizer = torch.optim.Adam)" ] }, { - "attachments": {}, "cell_type": "markdown", "id": "10602d26", "metadata": { @@ -213,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "090cc092", "metadata": { "colab": { @@ -222,16 +214,47 @@ "id": "090cc092", "outputId": "b0976b68-23f6-4db3-9578-c87d366217a0" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True, used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n" + ] + } + ], "source": [ "# define lightning logger and trainner objects\n", "tb_logger = pl_loggers.TensorBoardLogger('logs/')\n", - "trainer = Trainer(max_epochs=15, logger=tb_logger, gpus = 1)" + "trainer = Trainer(max_epochs=15, logger=tb_logger, accelerator='gpu', devices=1)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, + "id": "72238b7e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data['val_loader']" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "id": "ff0f083c", "metadata": { "colab": { @@ -379,7 +402,75 @@ "id": "ff0f083c", "outputId": "41a1e712-34f6-4bf0-b4f5-b9202b2fbad5" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", + "\n", + " | Name | Type | Params\n", + "------------------------------------\n", + "0 | encoder | Encoder | 34.3 K\n", + "1 | decoder | Decoder | 67.2 K\n", + "------------------------------------\n", + "101 K Trainable params\n", + "0 Non-trainable params\n", + "101 K Total params\n", + "0.406 Total estimated model params size (MB)\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9ab7f8e550bd422ebe8be307004d7306", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation sanity check: 0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Felix\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\data_loading.py:110: UserWarning: The dataloader, val_dataloader 0, does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` (try 24 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.\n", + " rank_zero_warn(\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'Trainer' object has no attribute 'val_dataloader'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_4304\\3844137096.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# train\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mstart\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"train_loader\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"val_loader\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Training time taken %f\"\u001b[0m\u001b[1;33m%\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mstart\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflush\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, model, train_dataloaders, val_dataloaders, datamodule, train_dataloader, ckpt_path)\u001b[0m\n\u001b[0;32m 733\u001b[0m )\n\u001b[0;32m 734\u001b[0m \u001b[0mtrain_dataloaders\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtrain_dataloader\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 735\u001b[1;33m self._call_and_handle_interrupt(\n\u001b[0m\u001b[0;32m 736\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_fit_impl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrain_dataloaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval_dataloaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdatamodule\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mckpt_path\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 737\u001b[0m )\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36m_call_and_handle_interrupt\u001b[1;34m(self, trainer_fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 680\u001b[0m \"\"\"\n\u001b[0;32m 681\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 682\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mtrainer_fn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 683\u001b[0m \u001b[1;31m# TODO: treat KeyboardInterrupt as BaseException (delete the code below) in v1.7\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 684\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexception\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36m_fit_impl\u001b[1;34m(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)\u001b[0m\n\u001b[0;32m 768\u001b[0m \u001b[1;31m# TODO: ckpt_path only in v1.7\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 769\u001b[0m \u001b[0mckpt_path\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mckpt_path\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresume_from_checkpoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 770\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mckpt_path\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mckpt_path\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 771\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 772\u001b[0m \u001b[1;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstopped\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36m_run\u001b[1;34m(self, model, ckpt_path)\u001b[0m\n\u001b[0;32m 1191\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1192\u001b[0m \u001b[1;31m# dispatch `start_training` or `start_evaluating` or `start_predicting`\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1193\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1194\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1195\u001b[0m \u001b[1;31m# plugin will finalized fitting (e.g. ddp_spawn will load trained model)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36m_dispatch\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1270\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtraining_type_plugin\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstart_predicting\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1271\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1272\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtraining_type_plugin\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstart_training\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1273\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1274\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mrun_stage\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\plugins\\training_type\\training_type_plugin.py\u001b[0m in \u001b[0;36mstart_training\u001b[1;34m(self, trainer)\u001b[0m\n\u001b[0;32m 200\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mstart_training\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m\"pl.Trainer\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[1;31m# double dispatch to initiate the training loop\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 202\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_results\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_stage\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 203\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 204\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mstart_evaluating\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m\"pl.Trainer\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36mrun_stage\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1280\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredicting\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1281\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_predict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1282\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_train\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1283\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1284\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_pre_training_routine\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36m_run_train\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1302\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprogress_bar_callback\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdisable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1303\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1304\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run_sanity_check\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlightning_module\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1305\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1306\u001b[0m \u001b[1;31m# enable train mode\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py\u001b[0m in \u001b[0;36m_run_sanity_check\u001b[1;34m(self, ref_model)\u001b[0m\n\u001b[0;32m 1366\u001b[0m \u001b[1;31m# run eval step\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1367\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mno_grad\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1368\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_evaluation_loop\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1369\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1370\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcall_hook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"on_sanity_check_end\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\loops\\base.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 143\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 144\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mon_advance_start\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 145\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madvance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 146\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mon_advance_end\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrestarting\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\loops\\dataloader\\evaluation_loop.py\u001b[0m in \u001b[0;36madvance\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 107\u001b[0m \u001b[0mdl_max_batches\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_max_batches\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdataloader_idx\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 108\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 109\u001b[1;33m \u001b[0mdl_outputs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mepoch_loop\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdataloader\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataloader_idx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdl_max_batches\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnum_dataloaders\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 110\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 111\u001b[0m \u001b[1;31m# store batch level output per dataloader\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\loops\\base.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 143\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 144\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mon_advance_start\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 145\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madvance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 146\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mon_advance_end\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrestarting\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\loops\\epoch\\evaluation_epoch_loop.py\u001b[0m in \u001b[0;36madvance\u001b[1;34m(self, data_fetcher, dataloader_idx, dl_max_batches, num_dataloaders)\u001b[0m\n\u001b[0;32m 121\u001b[0m \u001b[1;31m# lightning module methods\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 122\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprofiler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprofile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"evaluation_step_and_end\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 123\u001b[1;33m \u001b[0moutput\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_evaluation_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbatch_idx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataloader_idx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 124\u001b[0m \u001b[0moutput\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_evaluation_step_end\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutput\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 125\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\loops\\epoch\\evaluation_epoch_loop.py\u001b[0m in \u001b[0;36m_evaluation_step\u001b[1;34m(self, batch, batch_idx, dataloader_idx)\u001b[0m\n\u001b[0;32m 213\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlightning_module\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_current_fx_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"validation_step\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 214\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprofiler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprofile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"validation_step\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 215\u001b[1;33m \u001b[0moutput\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maccelerator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalidation_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstep_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 216\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 217\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0moutput\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\accelerators\\accelerator.py\u001b[0m in \u001b[0;36mvalidation_step\u001b[1;34m(self, step_kwargs)\u001b[0m\n\u001b[0;32m 234\u001b[0m \"\"\"\n\u001b[0;32m 235\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprecision_plugin\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mval_step_context\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 236\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtraining_type_plugin\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalidation_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mstep_kwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 237\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 238\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mtest_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstep_kwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mUnion\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mAny\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mSTEP_OUTPUT\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pytorch_lightning\\plugins\\training_type\\training_type_plugin.py\u001b[0m in \u001b[0;36mvalidation_step\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 218\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mvalidation_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 219\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalidation_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 220\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 221\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mtest_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Documents\\Spatiotemporal_Data_Repository\\torchTS\\torchts\\nn\\model.py\u001b[0m in \u001b[0;36mvalidation_step\u001b[1;34m(self, batch, batch_idx)\u001b[0m\n\u001b[0;32m 117\u001b[0m \u001b[0mbatch_idx\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mInteger\u001b[0m \u001b[0mdisplaying\u001b[0m \u001b[0mindex\u001b[0m \u001b[0mof\u001b[0m \u001b[0mthis\u001b[0m \u001b[0mbatch\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 118\u001b[0m \"\"\"\n\u001b[1;32m--> 119\u001b[1;33m \u001b[0mval_loss\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_step\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbatch_idx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mval_dataloader\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 120\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"val_loss\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval_loss\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 121\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mval_loss\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'Trainer' object has no attribute 'val_dataloader'" + ] + } + ], "source": [ "# train\n", "start = time.time()\n", @@ -441,7 +532,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "8e7eea37", "metadata": { @@ -452,7 +542,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "vQs9YWTI_wP7", "metadata": { @@ -509,7 +598,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "0478a9ad", "metadata": { @@ -582,19 +670,7 @@ "id": "de3bddf4", "outputId": "960b1fa1-ba34-4b6f-cad8-2865ea941d24" }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'data' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_27624\\1134408256.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# get unscaled y vectors\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0my_true\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0munscale_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"y_test\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mavg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstd\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0my_pred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0munscale_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpreds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mavg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstd\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'data' is not defined" - ] - } - ], + "outputs": [], "source": [ "# get unscaled y vectors\n", "y_true = unscale_data(data[\"y_test\"], avg, std)\n", @@ -635,19 +711,7 @@ "id": "e69bc765", "outputId": "13146eb4-ff84-4fe3-8042-80b3f5531381" }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'y_pred' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_27624\\2730477196.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# find masked MAE\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmasked_mae\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmasked_mae_loss\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_numpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_numpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Masked MAE: {:.2f}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmasked_mae\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'y_pred' is not defined" - ] - } - ], + "outputs": [], "source": [ "# find masked MAE\n", "masked_mae = masked_mae_loss(torch.from_numpy(y_pred), torch.from_numpy(y_true))\n", @@ -655,7 +719,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "78053aef", "metadata": { @@ -677,28 +740,7 @@ "id": "c3839aa5", "outputId": "6792fd32-d2bb-4630-932d-230c74b87f5c" }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'y_pred' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_27624\\644103389.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[0msequence_index_to_plot\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m29607\u001b[0m \u001b[1;31m# specify sequence index\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 11\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msequence_index_to_plot\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 12\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msequence_index_to_plot\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'y_pred' is not defined" - ] - }, - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import os\n", @@ -725,7 +767,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "id": "33a25e5f", "metadata": {