Customising-your-models-wit.../Translation_Capstone_Projec...

7461 lines
357 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "vsX0L1sG1iZj"
},
"source": [
"# Capstone Project\n",
"## Neural translation model\n",
"### Instructions\n",
"\n",
"In this notebook, you will create a neural network that translates from English to German. You will use concepts from throughout this course, including building more flexible model architectures, freezing layers, data processing pipeline and sequence modelling.\n",
"\n",
"This project is peer-assessed. Within this notebook you will find instructions in each section for how to complete the project. Pay close attention to the instructions as the peer review will be carried out according to a grading rubric that checks key parts of the project instructions. Feel free to add extra cells into the notebook as required.\n",
"\n",
"### How to submit\n",
"\n",
"When you have completed the Capstone project notebook, you will submit a pdf of the notebook for peer review. First ensure that the notebook has been fully executed from beginning to end, and all of the cell outputs are visible. This is important, as the grading rubric depends on the reviewer being able to view the outputs of your notebook. Save the notebook as a pdf (you could download the notebook with File -> Download .ipynb, open the notebook locally, and then File -> Download as -> PDF via LaTeX), and then submit this pdf for review.\n",
"\n",
"### Let's get started!\n",
"\n",
"We'll start by running some imports, and loading the dataset. For this project you are free to make further imports throughout the notebook as you wish. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "2VyTvxPN1iZn"
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import tensorflow_hub as hub\n",
"import unicodedata\n",
"import re\n",
"from tensorflow.keras.preprocessing.text import Tokenizer\n",
"import numpy as np\n",
"from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
"from IPython.display import Image\n",
"from sklearn.model_selection import train_test_split\n",
"from tensorflow.keras.layers import Layer,Input,Masking,LSTM,Embedding,Dense\n",
"from tensorflow.keras import Model\n",
"import time\n",
"from tqdm import tqdm_notebook as tqdm\n",
"import warnings\n",
"warnings.simplefilter(\"ignore\")\n",
"from prettytable import PrettyTable\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "wuIi4lAR1iZt"
},
"source": [
"For the capstone project, you will use a language dataset from http://www.manythings.org/anki/ to build a neural translation model. This dataset consists of over 200,000 pairs of sentences in English and German. In order to make the training quicker, we will restrict to our dataset to 20,000 pairs. Feel free to change this if you wish - the size of the dataset used is not part of the grading rubric.\n",
"\n",
"Your goal is to develop a neural translation model from English to German, making use of a pre-trained English word embedding module."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "pi9Dq6vv3FVO"
},
"source": [
"#### Import the data\n",
"\n",
"The dataset is available for download as a zip file at the following link:\n",
"\n",
"https://drive.google.com/open?id=1KczOciG7sYY7SB9UlBeRP1T9659b121Q\n",
"\n",
"You should store the unzipped folder in Drive for use in this Colab notebook."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"colab_type": "code",
"id": "Nw99tEEQ3bKL",
"outputId": "8032cf5c-0d46-4cbc-e357-0a6f2a259c85"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drive already mounted at /content/gdrive; to attempt to forcibly remount, call drive.mount(\"/content/gdrive\", force_remount=True).\n"
]
}
],
"source": [
"# Run this cell to connect to your Drive folder\n",
"\n",
"from google.colab import drive\n",
"drive.mount('/content/gdrive')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "o8PetPpw1iZu"
},
"outputs": [],
"source": [
"# Run this cell to load the dataset\n",
"\n",
"NUM_EXAMPLES = 20000\n",
"data_examples = []\n",
"with open('/content/gdrive/My Drive/deu.txt', 'r', encoding='utf8') as f:\n",
" for line in f.readlines():\n",
" if len(data_examples) < NUM_EXAMPLES:\n",
" data_examples.append(line)\n",
" else:\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "JumLjJ631iZy"
},
"outputs": [],
"source": [
"# These functions preprocess English and German sentences\n",
"\n",
"def unicode_to_ascii(s):\n",
" return ''.join(c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')\n",
"\n",
"def preprocess_sentence(sentence):\n",
" sentence = sentence.lower().strip()\n",
" sentence = re.sub(r\"ü\", 'ue', sentence)\n",
" sentence = re.sub(r\"ä\", 'ae', sentence)\n",
" sentence = re.sub(r\"ö\", 'oe', sentence)\n",
" sentence = re.sub(r'ß', 'ss', sentence)\n",
" \n",
" sentence = unicode_to_ascii(sentence)\n",
" sentence = re.sub(r\"([?.!,])\", r\" \\1 \", sentence)\n",
" sentence = re.sub(r\"[^a-z?.!,']+\", \" \", sentence)\n",
" sentence = re.sub(r'[\" \"]+', \" \", sentence)\n",
" \n",
" return sentence.strip()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "XFJap-TW1iZ2"
},
"source": [
"#### The custom translation model\n",
"The following is a schematic of the custom translation model architecture you will develop in this project."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 648
},
"colab_type": "code",
"id": "gBF1K2JN4RFJ",
"outputId": "966a5049-6036-4a25-bc16-7ed1d61e845f"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 6,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"# Run this cell to download and view a schematic diagram for the neural translation model\n",
"\n",
"!wget -q -O neural_translation_model.png --no-check-certificate \"https://docs.google.com/uc?export=download&id=1XsS1VlXoaEo-RbYNilJ9jcscNZvsSPmd\"\n",
"Image(\"neural_translation_model.png\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "0fP7P-yK4RS7"
},
"source": [
"The custom model consists of an encoder RNN and a decoder RNN. The encoder takes words of an English sentence as input, and uses a pre-trained word embedding to embed the words into a 128-dimensional space. To indicate the end of the input sentence, a special end token (in the same 128-dimensional space) is passed in as an input. This token is a TensorFlow Variable that is learned in the training phase (unlike the pre-trained word embedding, which is frozen).\n",
"\n",
"The decoder RNN takes the internal state of the encoder network as its initial state. A start token is passed in as the first input, which is embedded using a learned German word embedding. The decoder RNN then makes a prediction for the next German word, which during inference is then passed in as the following input, and this process is repeated until the special `<end>` token is emitted from the decoder."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "z70nu6_01iZ3"
},
"source": [
"## 1. Text preprocessing\n",
"* Create separate lists of English and German sentences, and preprocess them using the `preprocess_sentence` function provided for you above.\n",
"* Add a special `\"<start>\"` and `\"<end>\"` token to the beginning and end of every German sentence.\n",
"* Use the Tokenizer class from the `tf.keras.preprocessing.text` module to tokenize the German sentences, ensuring that no character filters are applied. _Hint: use the Tokenizer's \"filter\" keyword argument._\n",
"* Print out at least 5 randomly chosen examples of (preprocessed) English and German sentence pairs. For the German sentence, print out the text (with start and end tokens) as well as the tokenized sequence.\n",
"* Pad the end of the tokenized German sequences with zeros, and batch the complete set of sequences into one numpy array."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "9G20C4bk1iZ4",
"scrolled": true
},
"outputs": [],
"source": [
"english_sent = [sentence.split('\\t')[0] for sentence in data_examples]\n",
"german_sent = [sentence.split('\\t')[1] for sentence in data_examples]\n",
"processed_english = []\n",
"processed_german = []\n",
"for sentence in english_sent:\n",
" processed_english.append(preprocess_sentence(sentence))\n",
"for sentence in german_sent:\n",
" processed_german.append(preprocess_sentence(sentence))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Sxwl-1rB1iZ8"
},
"outputs": [],
"source": [
"p_german_1 = [\"<start> \"+ sentence + \" <end>\" for sentence in processed_german]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "WnIdqZFk1iaA"
},
"outputs": [],
"source": [
"tokenizer = Tokenizer(num_words=None,filters = '',lower=False,char_level=False)\n",
"\n",
"tokenizer.fit_on_texts(p_german_1)\n",
"tokenizer_seq = tokenizer.texts_to_sequences(p_german_1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 381
},
"colab_type": "code",
"id": "5UlnBdIK1iaE",
"outputId": "3668d45e-80d9-449f-f3e9-6f56d4cfdc85"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"German Sentences :\n",
"<start> er ist noch in den anfangssemestern . <end>\n",
"<start> du fehlst mir auch . <end>\n",
"<start> halte mich auf dem laufenden . <end>\n",
"<start> ist sie verheiratet ? <end>\n",
"<start> tom ist betruegerisch . <end>\n",
"\n",
"Token sequences :\n",
"[1, 14, 6, 72, 46, 53, 5563, 3, 2]\n",
"[1, 13, 1104, 21, 112, 3, 2]\n",
"[1, 288, 22, 29, 118, 1408, 3, 2]\n",
"[1, 6, 8, 703, 7, 2]\n",
"[1, 5, 6, 5206, 3, 2]\n",
"\n",
"English Sentences :\n",
"he's an undergrad .\n",
"i miss you , too .\n",
"keep me posted .\n",
"is she married ?\n",
"tom is deceitful .\n"
]
}
],
"source": [
"num_of_sentences = len(p_german_1)\n",
"\n",
"random_ind = np.random.choice(num_of_sentences,5)\n",
"print('German Sentences :')\n",
"for ind in random_ind:\n",
" print(p_german_1[ind])\n",
"print()\n",
"print('Token sequences :')\n",
"for ind in random_ind:\n",
" print(tokenizer_seq[ind])\n",
"print()\n",
"print('English Sentences :')\n",
"for ind in random_ind:\n",
" print(processed_english[ind])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ZGTaqt1t1iaI"
},
"outputs": [],
"source": [
"padded_seq = pad_sequences(tokenizer_seq,maxlen = None,padding = \"post\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "foL7Ihs21iaP"
},
"source": [
"## 2. Prepare the data"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "-9rCEE4z1iaQ"
},
"source": [
"#### Load the embedding layer\n",
"As part of the dataset preproceessing for this project, you will use a pre-trained English word embedding module from TensorFlow Hub. The URL for the module is https://tfhub.dev/google/tf2-preview/nnlm-en-dim128-with-normalization/1.\n",
"\n",
"This embedding takes a batch of text tokens in a 1-D tensor of strings as input. It then embeds the separate tokens into a 128-dimensional space. \n",
"\n",
"The code to load and test the embedding layer is provided for you below.\n",
"\n",
"**NB:** this model can also be used as a sentence embedding module. The module will process each token by removing punctuation and splitting on spaces. It then averages the word embeddings over a sentence to give a single embedding vector. However, we will use it only as a word embedding module, and will pass each word in the input sentence as a separate token."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ywZgobCh1iaR"
},
"outputs": [],
"source": [
"# Load embedding module from Tensorflow Hub\n",
"\n",
"embedding_layer = hub.KerasLayer(\"https://tfhub.dev/google/tf2-preview/nnlm-en-dim128/1\", \n",
" output_shape=[128], input_shape=[], dtype=tf.string)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"colab_type": "code",
"id": "TiY8QEDp1iaV",
"outputId": "ec5b02c9-833b-494d-c6d4-852456d40c24"
},
"outputs": [
{
"data": {
"text/plain": [
"TensorShape([7, 128])"
]
},
"execution_count": 13,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"# Test the layer\n",
"\n",
"embedding_layer(tf.constant([\"these\", \"aren't\", \"the\", \"droids\", \"you're\", \"looking\", \"for\"])).shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "KjuzXc-z1iaY"
},
"source": [
"You should now prepare the training and validation Datasets.\n",
"\n",
"* Create a random training and validation set split of the data, reserving e.g. 20% of the data for validation (NB: each English dataset example is a single sentence string, and each German dataset example is a sequence of padded integer tokens).\n",
"* Load the training and validation sets into a tf.data.Dataset object, passing in a tuple of English and German data for both training and validation sets.\n",
"* Create a function to map over the datasets that splits each English sentence at spaces. Apply this function to both Dataset objects using the map method. _Hint: look at the tf.strings.split function._\n",
"* Create a function to map over the datasets that embeds each sequence of English words using the loaded embedding layer/model. Apply this function to both Dataset objects using the map method.\n",
"* Create a function to filter out dataset examples where the English sentence is greater than or equal to than 13 (embedded) tokens in length. Apply this function to both Dataset objects using the filter method.\n",
"* Create a function to map over the datasets that pads each English sequence of embeddings with some distinct padding value before the sequence, so that each sequence is length 13. Apply this function to both Dataset objects using the map method. _Hint: look at the tf.pad function. You can extract a Tensor shape using tf.shape; you might also find the tf.math.maximum function useful._\n",
"* Batch both training and validation Datasets with a batch size of 16.\n",
"* Print the `element_spec` property for the training and validation Datasets. \n",
"* Using the Dataset `.take(1)` method, print the shape of the English data example from the training Dataset.\n",
"* Using the Dataset `.take(1)` method, print the German data example Tensor from the validation Dataset."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Q-BUJOl_1iaZ"
},
"outputs": [],
"source": [
"x_train,x_valid,y_train,y_valid = train_test_split(processed_english,padded_seq,test_size = 0.20)\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "4w6rM8Bl1iad"
},
"outputs": [],
"source": [
"train_dataset = tf.data.Dataset.from_tensor_slices((x_train,y_train))\n",
"valid_dataset = tf.data.Dataset.from_tensor_slices((x_valid,y_valid))\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "D7bn3mRs1iaj"
},
"outputs": [],
"source": [
"def spliter(english,german):\n",
" \n",
" english = tf.strings.split(english,sep = \" \")\n",
"\n",
" return english,german\n",
"\n",
"train_dataset = train_dataset.map(spliter)\n",
"valid_dataset = valid_dataset.map(spliter)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "q0Fdso381ian"
},
"outputs": [],
"source": [
"\n",
"def embedder(english,german):\n",
"\n",
" english = embedding_layer(english)\n",
" return english,german\n",
"\n",
"train_dataset = train_dataset.map(embedder)\n",
"valid_dataset = valid_dataset.map(embedder)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "oWS26VBJ-SCZ"
},
"outputs": [],
"source": [
"def lengther(english,german):\n",
" length = tf.constant(13,dtype = tf.int32)\n",
"\n",
" return tf.math.greater_equal(length,tf.cast(len(english),tf.int32))\n",
"\n",
"train_dataset = train_dataset.filter(lengther)\n",
"valid_dataset = valid_dataset.filter(lengther)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "MdqSXEoX1iav"
},
"outputs": [],
"source": [
"def padder(english,german):\n",
"\n",
" paddings = [[13-len(english),0],[0,0]]\n",
" english = tf.pad(english, paddings = paddings)\n",
"\n",
" return english,german\n",
"\n",
"train_dataset = train_dataset.map(padder)\n",
"valid_dataset = valid_dataset.map(padder) "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "QZCCfB8fWaLF"
},
"outputs": [],
"source": [
"train_dataset = train_dataset.batch(16,drop_remainder= True)\n",
"valid_dataset = valid_dataset.batch(16,drop_remainder= True)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 90
},
"colab_type": "code",
"id": "ackk7HptX8cX",
"outputId": "456094d4-0398-480d-8813-b0ec2da388ff"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training Dataset: \n",
"(TensorSpec(shape=(16, None, 128), dtype=tf.float32, name=None), TensorSpec(shape=(16, 14), dtype=tf.int32, name=None))\n",
"Validation Dataset: \n",
"(TensorSpec(shape=(16, None, 128), dtype=tf.float32, name=None), TensorSpec(shape=(16, 14), dtype=tf.int32, name=None))\n"
]
}
],
"source": [
"print(\"Training Dataset: \")\n",
"print(train_dataset.element_spec)\n",
"print(\"Validation Dataset: \")\n",
"print(valid_dataset.element_spec)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1890
},
"colab_type": "code",
"id": "jtozc65MECNw",
"outputId": "07102487-1efe-43d7-d7fe-333b3ca5849c"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tf.Tensor(\n",
"[[[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [-0.03925273 0.02352522 0.02837687 ... -0.09089245 -0.02715905\n",
" 0.05939376]\n",
" [-0.02130977 -0.07366709 0.10384148 ... -0.22099297 0.07892267\n",
" -0.01285619]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.12846488 0.07159402 0.09918732 ... -0.07272145 0.03883429\n",
" 0.04847484]\n",
" [-0.03209486 -0.04160203 -0.12152159 ... -0.12753211 -0.02127644\n",
" -0.17632811]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.09539654 0.04058193 0.04366608 ... -0.03468065 0.05563864\n",
" 0.00659631]\n",
" [ 0.02027391 0.04513401 -0.15236828 ... -0.10530912 0.10933939\n",
" -0.0068233 ]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" ...\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.1278139 -0.03678622 0.06628644 ... -0.03481541 -0.00253005\n",
" -0.06914762]\n",
" [-0.02380057 0.12938826 -0.12002522 ... -0.0778875 0.01935136\n",
" -0.01938629]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.2000517 0.0272701 -0.03822284 ... 0.1073221 -0.01488957\n",
" -0.01846376]\n",
" [ 0.03175933 0.06343 0.05124436 ... -0.16108854 0.23792052\n",
" 0.04684178]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.02199916 0.08012285 -0.10019045 ... -0.12652187 -0.05457912\n",
" 0.14176568]\n",
" [ 0.14766233 -0.06297084 0.07939632 ... -0.02586731 0.17180535\n",
" -0.03599825]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]], shape=(16, 13, 128), dtype=float32)\n",
"tf.Tensor(\n",
"[[ 1 5 6 447 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 456 176 254 125 3 2 0 0 0 0 0 0]\n",
" [ 1 3458 126 3 2 0 0 0 0 0 0 0 0 0]\n",
" [ 1 4 18 318 2558 3 2 0 0 0 0 0 0 0]\n",
" [ 1 5 686 34 205 3 2 0 0 0 0 0 0 0]\n",
" [ 1 17 522 71 330 3 2 0 0 0 0 0 0 0]\n",
" [ 1 2190 8 22 12 3 2 0 0 0 0 0 0 0]\n",
" [ 1 5 6 50 781 3 2 0 0 0 0 0 0 0]\n",
" [ 1 6 33 366 7 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 24 49 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 110 19 1596 3 2 0 0 0 0 0 0 0]\n",
" [ 1 14 998 21 20 3 2 0 0 0 0 0 0 0]\n",
" [ 1 26 851 23 1269 3 2 0 0 0 0 0 0 0]\n",
" [ 1 17 381 80 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 940 115 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 11 97 249 41 3 2 0 0 0 0 0 0 0]], shape=(16, 14), dtype=int32)\n"
]
}
],
"source": [
"for english,german in train_dataset.take(1):\n",
" print(english)\n",
" print(german)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1890
},
"colab_type": "code",
"id": "mYhlOwDTEWj5",
"outputId": "9634d9a1-79d2-4210-af1d-6d12d14523f0"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tf.Tensor(\n",
"[[[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.03970453 -0.04158472 0.10027828 ... -0.0063081 -0.0119952\n",
" -0.04243935]\n",
" [ 0.03519357 0.01258469 -0.04993629 ... -0.08874417 0.1515415\n",
" -0.00328062]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.04712053 0.00124522 0.03287347 ... -0.07834134 0.06874365\n",
" -0.08857308]\n",
" [ 0.09144389 -0.10057256 -0.07086372 ... -0.09084993 0.01224649\n",
" -0.03558629]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [-0.17962365 0.04181888 -0.00170533 ... 0.18615879 0.06329069\n",
" 0.06792238]\n",
" [-0.02130977 -0.07366709 0.10384148 ... -0.22099297 0.07892267\n",
" -0.01285619]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" ...\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.22104432 -0.01606884 0.00432623 ... 0.13655335 0.01242723\n",
" 0.00964247]\n",
" [ 0.10299458 0.16180418 -0.08432977 ... 0.04323117 0.08910137\n",
" -0.00400291]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.16666627 0.01299293 0.04397342 ... 0.10751364 -0.00171146\n",
" -0.0662554 ]\n",
" [ 0.09130137 -0.02096943 -0.02457789 ... -0.12161301 0.150714\n",
" -0.07756138]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]\n",
"\n",
" [[ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" [ 0. 0. 0. ... 0. 0.\n",
" 0. ]\n",
" ...\n",
" [ 0.03970453 -0.04158472 0.10027828 ... -0.0063081 -0.0119952\n",
" -0.04243935]\n",
" [ 0.04465724 0.07450107 -0.04335912 ... -0.1517998 0.18933882\n",
" -0.08688068]\n",
" [ 0.012986 0.08981702 0.16017003 ... 0.06796802 0.13528903\n",
" -0.022035 ]]], shape=(16, 13, 128), dtype=float32)\n",
"tf.Tensor(\n",
"[[ 1 5 24 12 741 3 2 0 0 0 0 0 0 0]\n",
" [ 1 4 180 147 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 15 447 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 15 854 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 33 23 25 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 10 16 223 967 3 2 0 0 0 0 0 0 0]\n",
" [ 1 10 6 189 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 236 13 22 7 2 0 0 0 0 0 0 0 0]\n",
" [ 1 4 18 40 107 88 3 2 0 0 0 0 0 0]\n",
" [ 1 288 53 780 9 2 0 0 0 0 0 0 0 0]\n",
" [ 1 83 6 5 205 7 2 0 0 0 0 0 0 0]\n",
" [ 1 4 15 1484 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 43 6 106 208 7 2 0 0 0 0 0 0 0]\n",
" [ 1 5 6 128 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 73 12 245 3 2 0 0 0 0 0 0 0 0]\n",
" [ 1 5 24 12 429 3 2 0 0 0 0 0 0 0]], shape=(16, 14), dtype=int32)\n"
]
}
],
"source": [
"for english,german in valid_dataset.take(1):\n",
" print(english)\n",
" print(german)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "isIYhjq01iay"
},
"source": [
"## 3. Create the custom layer\n",
"You will now create a custom layer to add the learned end token embedding to the encoder model:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"colab_type": "code",
"id": "e22f1Xyh6xvE",
"outputId": "794ca554-5c3c-42e8-f56b-3e9d7928b66b"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGWCAYAAAD45r6hAABE3ElEQVR42u2dDWxV552njzSosmYZLdKgWTRDNWiKuqjKVmiaqZiKSp5BUzRFHbpipoyaqWDHJRDYLLNlpmia7ZCW7mSnTJt2WYrvOefec+3rb5tPGwyY4BiHGGIShxAwCU1JQoJDDPgbA7Y5+/7t94bjy7WDr439HvM80l+277kfx7/znvc89z1flgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwOs8+++wMUgDaITkCGcLE4XleVtS21+XHYsdjrns9Ho125kWjXQ+7Bj8nFvuwND//lzIPLIlpzJNPPrmWFMbHunXrskmBdkiOZAgg2La9wnWc65UlJT3njhzxPzpxwm8/dcrvPn36oVeb+pzmo0f96rIyvyQvr/PkwYOLWCLTkKeffvpzqrNqJYnMWb9+/RyV4dXVq1fzTSdDVHazVIbXyHBC2uI1kqAtwtQRiUQ2xFy38926ukkRttGq8cABPz8W6z+xf/+fsGSm3zfNElV+Tk7OfNLIjHXr1j2jMhxYu3btStLIDJXdEmmHqp4ijXGtzz9lfZ6YtvjUU099mzRgrNi2vdCORLreM0DeghJXnJ/fzu7U6dfh31TVuWbNmhWkkXGGV0XgVIYvkUbGGf6Tqn5VvyaNzFFtsE1leIf1eVxt8ceq7qo6SxowViKRSPHxvXt/bYq8JetQWZlfVVISYQlNn87+CVXSUfWpb52/IJGMMlyqN5oyetShagGpZJTjcZ3hHTLMvC2q7G5Jjmp9LiKRjHM8Ixmqn720RchA4NovHz/eb5rAye7cikSCL8jTraPS9SaJZPRtfb+WDsnwQ7Xh3EYqGeXYmWyLKsM8Eslofa4NrM+XSSQzVPu7pTOUL7b/l0RgLNiRSKdp8pY8sSE/FuthCU0D9MHO0kG1qJ8ygtROKuPK8JragH4sJ4Rw8HNGAucHMuQA8nGuz+pnB6nQFmHyiTpOi4kCJ1UQi/WxhKZfh3WJFMiQDMkRyBAQOKCzIkMgQ3IkQ0DgEDigsyJDMgRyJENA4BA4oLMiQzIkRyBDQOCAzooMgQzJkQwBgUPggM6KDMkQyJEMAYFD4IDOigzJkByBDAGBAzorMiRDMiRHMgQEDoEDOisyJEMgRzIEBA6BAzorMiRDcgQyBAQO6KyADMmQHMkQAIEDOisyJEMgRzIEBA6BAzorMiRDcgQyBASOJURnBWRIhuRIhgAIHNBZkSEZkiE5kiEgcAgc0FmRIRmSI5AhIHAIHJ0VkCEZkiMZAiBwQGdFhkCG5EiGgMAhcEBnRYZkSI5AhoDAIXB0VkCGZEiOZAiAwAGdFRkCGZIjGQICh8ABnRUZkiGQIxkCAjc1AjdD1ZIJeJ9ZqhbRkuisyJAMyRHIEBC4hy9wq1TVTsD7eKq20JLorMiQDMkRyBAQuIcrcDJq9pyqJlXZgcdnq1qharmqmfqxGfo5cwPPk98Xq5qnqlpL3EJaE50VGZIhOQIZAgL38AROZKtZVZt1bxRuqf67XFWlqsuqFuhpO7XszdBid9EaGnWTUbwWVbL+PU9rorMiQzIkRyBDQOAmbxdqlhaxVYHpmwPTk9L2jCpHPz5DT2MXKp0VGZIhOQIZAgI3BQInJyH4qnL046u0lPla7oTHVfWqarWG705F4OisyJAMyRHIEBC4KRC4bFV9WsRSa5Z+zlwtb5cCjyFwdFZkSIbkCGQICNwUCdx8a2i0LTiyJo9tCPwtJyvIsXByfFwCgaOzIkMyJEdyJENA4CZf4FZaQyNqy/XfImb11tAJDlINqor1NBE5OalhlpY8OdlhhZ62U4sg14KjsyJDMiRHIENA4B6ywM3Sglarf5cTFbapOqtrm35Mpsno29IU+dtjDR0ft9C6dykRoLMiQzIkRyBDQOBYQnRWQIZkSI5kCDB9BE5Gzvw0xUgYnRUZAhmSIxkCAmeowM2xhu6EkFqzWap0VmQIZEiOZAgIHAIHdFZkSIZAjmQICBy7UOmsgAzJkBzJkAzh0RM4oLMiQyBDciRDQOAeMYHbputh8wStjM6KDMmQHIEMAYGbGJZb9y7i+7DItoZ26wKdFRmSITkCGQICNwEs0JX8XU6KkNtnyS22FgeeJxfyXaR/ygV85YK+MwLTk9OSzLOGLu4rF/ndqAUuW/8NdFZkSIbkCGQICNw48Kx7JzzIT7mbQrM1dHeGLuve7lWRL7l11kVV262hW2zJLbdm6umX9HOSyH1Ra7UQNmmBS/4dbmzbXhpNOLvduPO+69k9ruf0jrV+8q9b72TyOjfPbvUKnZ2e54XahGX+3YT9jyrHM27M6ZzMDKN5bodX5B53Ys6fh70tOo7z9WiBW+XmOVeinn1z0jLMd7riJe5rib3x/xb2DKUtqnXq2VjCPav+t+7JbYvOtXipmygrK5sZ+hwT7jfVenVE9VFXnMlsi3lOZ7wk2hgvjv4VKoPAPeIC1xQYWVupJS4pcH5A0mbo5276FIELvjbcRCKR2bYbKXZidlf5i/n+/qYiv+rNYv9gc8mk1AH1WbvqE35id8xXG5v2on15XwypAK+wXbsjvyLaV3E8Mak5DmZ4osAvOZznR+NOv5LH15QEzQ1jW1TtUH2JsHsnuy0OyzDPuRsrcN9XEjQvjG3Rde2/daJOd/6u2N0paYt6ffYKnJvltV52WPtF9WW2WrXFO1PdFtWXs7fDuD4DAjdBAhc8oSEoXvJ7S8prt6qqfCQE7tlnn51hO/aJgr1e94FzJZMmbSNVaU2erzbgd8K24VSd/QYnavfsfaVwyjOUjUxhlTeglusVleOsMLVFJ+acVm3xzlS3Rcmw6IDnq2XaHbYNZ25u7tNK4G+b0BZlfXY9e6Ck2vuTsPWLUc8+V7DP801pi+rLYTsSh8A9ogK3ZRSBSz1E4ZmApMm0JdNW4JR4rIrmO+0HzhdPeWcf7PSjcefDsOxOtW17oW1Huk3YYAarcL933bZzt4WlLaoc/z6acG6Z1hbdmP12qNqiE+k1qS0Ors8Jpz1Mh0fE8p3/EStwBsxqi/l9jhs5G/bDTACBm2CBk92pwXXCsYaOh0sK3KrAtG3TSuCcqHNKdneYJB5Sid2xu3bU/l5IJLhYfUN+17QMZZePWr7XwtIW3bhz3sS2mF8euyEjrCFpiyUlh+I9Bq7PfrzU/XloNpwJ910T22K8NPp+WNoiIHCTJHDJOzzI2aprtdA9pqeXW0MnNciZp3LNt7aAwD2uX5tj3TvpIWQjcHZkQDb0pnVUMoLges7xkGw02/adLjQuw8ozRbI7+iZtcfxt0bbtypC0xS4T26JkGCtw3gjNaLBj3zWxLe45WXhVLeM9qA0CN80FLkdX8vfgNeEWBOQuW4+yyUkLZ62hs1UXBZ4rZ5cmrKEzWOU1K1Rt1tNm6JG62oDwhUzgnMgt0zqp5EG8dtRuDYvAmZihlO3a/eHZaEb6jG2LTuRySCS4x9QMXS/SEZq26EYGTM1RLePfoDYIHLfSGiZwjyZy5qmp8uFEnbaQCNwlUzN08+zQ3K9OLp1gbFt0Iy2hWJ9du9XYDFVfE5q2qNYbY7+U2fZlCxA4BA6BQ+AQOAQOgUPgEDhA4EIocLKLdAUCh8AhcAgcAofAIXCAwIVH4B5tEDgEDoFD4BA4BA4QOAQOgUPgEDgEDoFD4BA4QOAAgUPgEDgEDoFD4BA4BA6BAwQOgUPgEDgEDoEDBA6BQ+AQOAQOgUPgEDgEDhA4QOAQOAQOgUPgEDgEDoFD4ACBQ+AQOAQOgUPgAIFD4BA4BA6BQ+AQOAQOgQMEDhA4BA6BQ+AQOAQOgUPgEDhA4BA4BA6BQ+AQOEDgEDgEDoFD4BA4BA6BQ+AAgQMEDoFD4BA4BA6BQ+AAgQMEDoFD4BA4BA6BAwQOgUPgEDgEDoFD4BA4BA4QOAQOgUPgEDgEDoFD4BA4QOAAgUPgEDgEDoFD4ACBQ+AQOAQOgUPgEDgEDoEDBA6BQ+AQOAQOgUPgEDgEDkZen2273UR5az91CoFD4BA4BA6BQ+AQOAQO0qGWdbfIkmkC915dnZ8fi/WyhBA4BA6BQ+AQOAQOgYP7ty0152tqOkwTuDcOH/Z3FRS8yxJC4BA4BA6BQ+AQOAQOUsjNzV1ZFI9/bJrA7Ssq8qtKS3/OEkLgEDgEDoFD4BA4BA7SrdORSGNDZWWPKfL262PH/Jjr3vY8L4ulg8AhcAgcAofAIXAIHKRhx44dc6KO89HxPXsGOhobp/zYt7xY7Hah561mySBwCBwCh8AhcAgcAgefInExx3mjKC+vW44/u/LSS5MqbtdPnvRPHzx4J+a6XVHb/iuWCAKHwCFwCBwCh8AhcPCAyDFxUcc54dh2r+s4nVHXbX3YpT6rR33mBScS+aXruvNZCggcAofAIXAIHAKHwAEAAofAIXAIHAKHwAEAAofAIXAIHAKHwCFwAIDAIXAIHAKHwCFw00ngVq9ezeUkABA4BA6BQ+AQOAQuTAL35JNPtq5du3ab+rmALSoAAmekwKkOqk3VVdVZ7Vm3bt23cnJy5iNwGeV4W9X5NWvW/EjVQgQuowy7VX2g2mKRynBFsi0icBm1xTPf/e53fzCsLSJwY8mwS9VlVe2q6lWbXMmoHMAjLnBbf7L1puoQLhlUInC+rn7989qvfvWrayYLnNowbTQpRzU//YEcffX3dSXE2SYL3I+3/qjDsLbYE8jwjv7ZGrFzzV2f//fWW4ZlKDWgs7ur2+LHg23RYIH70Y9+1GZYhjcDbfG2Xr9bJEe2sACMwJnyTfOy7qTkG+c1VT9ev379HEbgxobq4GXUo0v97FZVIBkyAjfmtnhdy0e7lo5nJEdG4MbcFvt1lrJORz9pi4zAPTBr167tUDm+q/J7X0r9vTmZIwAgcKZsNPtUVavOamnwcQRuzDnKSMwvUzt5BG7M4rE/tS0icBm1xefva4sI3Jj6RdUOy1PbIgAgcMYw0rdKBG5ickTgxp8hAjdBbRGBG3eGAIDAGQ8CNzEgcBOwPiNwE9MWETgAQOAQOAQOgUPgEDgEDgAQOAQOgUPgEDgEDgAQOAQOgUPgEDgEDoEDAAQOgUPgEDgEDoFD4AAAgUPgEDgEDoFD4BA4AEDgEDgEDoFD4BA4AEDgEDgEDoFD4BA4BA4AEDgEDoFD4BA4BA6BAwAEDoFD4BA4BA6BAwAEDoFD4BA4BA6BQ+DgIeF5XpabsP8xmu+85sbsDukvJ6Mcz77pxu3WeKmbKCsrm8mSQOAQOAQOgUPgEDgEDh4AtcxX2K7dnl8RvVNxPOHvbyryq94snpT2dkB9zq76hJ/YHfNjhe6tirr8r7NEEDgEDoFD4BA4BA6Bg9G3LxucqN2z95XCKW97pTV5vht37pbXetksGQQOgUPgEDgEDoFD4CD9yNtC2450myBvQYmLFbjd7E5F4BA4BA6BQ+AQOAQO0m9biosPxj8wrQ3K7lRVcZYQAofAIXAIHAKHwCFwcP+2pX3f6ULj2qCMCHpF7jssIQQOgUPgEDgEDoFD4CB122JHOk1sg3Jigxu3e1lCCBwCh8AhcAgcAofAwX3rc6SFbQsgcAgcAofAIXAIHCBwCBwCh8AhcAgcAofAIXCAwAECh8AhcAgcAofAIXCAwAECh8AhcAgcAofAAQKHwCFwCBwCh8AhcAgcAgcIHCBwCBwrGQKHwCFwCBwgcIDAIXAIHAKHwCFwgMCxbUHgEDgEDoFD4BA4BA4QOAQOgUPgWMkQOAQOgUPgAIEDBA6BQ+AQOAQOgQMEjm0LAofAIXAIHAKHwCFwgMAhcAgcAsdKhsAhcAgcAgcIHCBwCBwCh8AhcAgcIHBsWx6tBmIbudGserM4TALXamqGYVrJnKh9x9i2GBKBsx2709gMQyRwqi32m5ojAofAIXCQlA//wPli4xrH3lcKfRlNCEmGXdKxmpih69m3aIvjq90vF6i26LwTigztSI+pbTFMAmdyW1TL+BxbLgQOgQPLdiNvS+dqWuMofzHfdzy7NiSdfU15Xf57JmboFbvvhqazitmXTWyLJYfy+hwnEg9Dhrl27gsV9Yl+E9tiLOE0haUtqo1Tq4ltsfigd131Nw5bLgQOgQNLbZieK6yMd5jWOOLFbldubm5OKDaaubkr3bjzvmkZ5pVGVcX+T2g2mnF7e1FV3Khjj6rekF35drfjOIvC0haj+c5149bnUncgmmd/LyxtMV4ULVBt0TetLdrRSEdY2iIgcPDQBc6Za9uR9v1NRSbtJuiXefI8LytEu1xOFlXHrxiTYYPs9rN7w5ThYFt0Il0mtcX8XbE7qhPdH6Z1OmJHXi05nNdrUlu0Xbs7bG1R1h+T2mJeRawz4kTK2GohcAgcBOVjkxOzr5rQWe19paDHduzrtm2vCFOGO3bsmKOk84PCSq/zwDkjjje6GY3bT4SxLbpxu2Oq26Ic/1Swz+tUG/HzatnODF1bdO2PCg94dwxoi/0yahS29Xlw4xl1fuDGnR4j2uLeWKvamJ8NW1sEBA4mZ8P5nIx6FR+Ov73v1aJxdTYZ7h5oL6mOv6Hk7WM1L8vCmKFsONW8N6pO/+Oy2vze8eSYYYZ9pUfyPlDS0RbWDD9pi47dWXIk/mGmGWbaDg+8WexXvJjf6XpOW66deyisG8xBiXMiTdE8p638xfw7k52jaou31Pr8juNEroW8Lf6bjB6W1uS1TUVbLK9NfKS+jLWq+ahC3hA4BA5GZOfOndm5ubmV6ttyt6o2aTxjrZ/8ZGvHWF+TG8ntUB1Uk6rnXdedH/Yc5Tgk9b8clTMCRYrHmsfPfv7v18f6GjkTVn3ememS4fC2OPYMM2mHkqFui3vU5y6dDuv0YFu0I8cybYsZ5WhHOlWGr0+3tjipGcr6HIm0T6e2CAgcGMyGDRv+8Mknn2wlicxZv379nDVr1ny0evXqLNLIDJXdLNUOr5Hh+Nui5EgStEVA4Ka5wK1SVftIN7Z169YVqs7Kz8nJmc+qlxlr1679Z5XhgPq5kjQyznCJtEPVHteSRuaoDH/K+jwxbfGpp576NmkAAofAmdzh96jqXLNmzQpWvYwzvKqqT1U9aWSc4Sa14exT7fAiaWSOyq9NZXmH9XlcGf6LyvCu+nmGNACBG5E5quSyYZtULUx5fKn+uVHXnJTXPqYf35Bmmrz2GVUyIJI6Ci6fs1nV8jQCl6Vf84x+j1TZm5tmXkO90fwb1UlJR3VbbTx/waqXUWe/VOV4Q76xq2pXtYBUMmqLdTrDO2Q4rrZ4S3JU63OCRDJui6/rtniTtggIXFpEguS2mZ6q51S1aBkTslXJF3G5CPjzqhr09Fl6eo5+rUxz9O8idDO0kJ1VtVWVDIg0q5qtX7dWP3ebqkpVlwMCN0u/rkbVFv17eWB+fT0f9VoAp1VHJR3+WVa9jDaae7V0SI6XVY7bSGXsqNw6Am3RI5GM2mJtMkNV75FIxm3xls6wjy+2gMClpUaLVFDoerVsZWthSh7GIWImx9mv0L+36d+TyPts1GJ3SVXwzO16PT1Lvy44slYZELit1vDRuJlaGpcGBC5n2jQyfbCzdFAteuPZzqqXeYay60rVx3JCCAc/Z/Rlwg9kyAHk41yfpUiFtggI3EMSOHkf+aK9JVAicEu0wLWkPL/RGtqNuVDL1Ix00anamfKYjOrJyNnjaV6XE5C2Wl3B+bmofyYFbsF07bAusdqRIRmSI5AhIHAPgK/laFVKzdcCl7r+1Orpi/Rr0yFC+HzKYzla/haned2qFIFLpJmfhYH5nUdnBWRIhuRIhgCPssDJ+hG8YoDsstxuDZ2QMJrAybFqMg+PBabJ7lMZfZNj0xrSSF0i8LrHA9OeCwhcQleQrVoYETggQzIkRzIEQOC0jHVZQyNksttUjkeTkxZmfIrACTv1c+VuL3LWqBwfJ2eVyvFzLVrasrXQtQWkTQSxWb8ueSJEUuAe0/PzjH7tc3r6HAQOyJAMyZEMARC4e4hIyZmeNVqYkmeZyrFmqSfziYwt1r+L5MmoW7WqPdbwExPmaVGr1SIXHKmT123QnycSuMIafkbpY/o1tXp68Jg3z7p3NiudFZAhGZIjGQKEXuDmaHFKrVksTTorMgQyJEcyBATOTIGTESs/TW1hadJZkSGQITmSISBw3EoL6KzIkAyBHMkQELgJEDi51EZ2mprH0qSzIkMgQ3IkQ0DgzBS4YmvorNHU2sjSpLMiQyBDciRDQODYhQp0VmRIhkCOZAgI3BQJnJzgkHrSg1yHTe5dGrx8h6xHlWle7+kSsvXrl6V5nq+nA50VGZIhOQIZAgI3AQInd02YF6jHtKxdTBE4kbBVDyBwl637L12CwNFZkSEZkiOQISBwEyhwtWkeT96sfl5A4ORiv3JXhLmjCJzIW1PgMQSOzooMyZAcgQwBgZskgduiZS0rIHDZ+rmVowjcJS1/Mn/LEDg6KzIkQ3IEMgQE7uEIXPJepMlq1o+tCDwvKXDzrKFj5FaNInDJ9w3uSkXg6KzIkAzJEcgQELgJFLhmLWRSxVq8FqQ871JAwDZY93aljiRwcr/T4K5UBI7OigzJkByBDAGBm0CBS92FukdL3cwRBM6y7u1KHUnghOSu1OUIHJ0VGZIhOQIZAgL3cAVutqpWVTtHEbh51tCu1NZRBE7YpJ+DwNFZkSEZkiOQISBwD1HghJVauhaPIHDCBv2c0QROdqU2IHB0VmRIhuQIZAgI3MQJnOze3DzCtK2Badus+4+LSz6eo39foP9OZYGWvAW0KjorMiRDcgQyBAQO6KyADMmQHMkQAIEDOisyJEMgRzIEBA6BAzorMiRDcgQyBAQOgaOzAjIkQ3IkQwAEDuisyBDIkBzJEBA4BA7orMiQDMkRyBAQOASOzgrIkAzJkQwBEDigsyJDIENyJENA4BA4oLMiQzIkR3IkQ0DgEDg6KyBDMiRHMgRA4IDOigyBDMmRDAGBQ+CAzooMyRDIkQwBgUPg6KyADMmQHMkQAIEDOisyBDIkRzIEBA6BAzorMiRDIEcyBAQOgaOzAjIkQ3IkQzIEBA7orMgQyJAcyRAQOAQO6KzIkAyBHMkQEDgEjs6KzooMyZAcgQwBgQM6KzIEMiRHMgQEDoGD9Ni2vTSRSJR7nveuqu54PN471nr22Wf7xvoa9Vk9qj4qLCzcrn5mhTlDmf+8vLzv5efnvxaLxTomK0Mp9bk3CgoKatXn/vk0aYv71P/1vrSPycpQLbeOkpKSxt27d/9t2DOUtqjawz+rHM+oNtE5iW3xpmqLrcXFxdGwr89Cfr77jYqyxMGigviVRH7spqresdSPf7Slb6yvkSoq8Nr37ipo2Lcr8VdsnR7VbXKk3UR5q3qzGIEzhUgkMttxnELV2XbU1dX5r7/+un/+/Hn/rbfempQ6d+6cf+LECV9tNH21sblRVlb2n0MqHStc122vqKi4U19fP6k5SoYvv/yyf+TIEV9tPPvUBvu0WqZzw9gWo9FouUjAZLfFlAzvqrYoX2TmhbQtfku1xa5du3bdnYq2mFyflUB219bWLg5rv1iQ8KoKE97tt84c9juunPDv3Djl+52nH3rdvn7Kf+/CC/5rDVW++vyBokLvQhjXZxj3etwtsmSawO19pdB3PaeXJTTFqG/YM1THcGLv3r0dzc3NkyZtI9XRo0d9tdG8HbYNp+rsNyjx6G5sbJzyDGVDfeDAgQG1XK+oHGeFqS2qDBv37dt3Z6rbomR48OBBX5Zp2Dacubm5TyuBv21CW9Trc79apl8MW7+YyI+draupGOhva5wUaRupRBob6vb6sajTjsQ9coMrNRV1iWumCVz5i/m+V+T+miU09Q1kVV5eXtuFCxemvLMPdvp611kodr+ob0kLVY5dp0+fNiZDqcrKyutq3raF6Nvm3ycSiVumtUUlQ2+HqS2qumlSW5QMZWQ9TLtTCxOx/15emt8/0D618has108d6ItGnbPTYbc0PPCXsZVunn3FNIHLK4368WJ3K0toiolGoydld4dJ4iG1e/fufjVv3wuJBBdXV1f/xrQMZbeZyvBaWNqikvZzJrbF8vLyGzLCGpK2WHL48OEe0zLcs2ePX1JS8u9haYslRXnvXjp/1Bh5S1bl3uL3wtIWYYLWaTvySnF13g1T5G13Q4HvuHYvXyTM+MY+cObMGeM2mrL7RzWQ2pBsNNteffXVftMyPHv2rIwe3aQtjr8tqnmrDElb7FJt0cgMCwoK3ghLW3Qc+25nywnjBO7Kr1+8rJbxHrZcjw47duyYYzv2lcJK7+aBc1N/7JsTs29G4/YTLBkjOirnlmmdffJA6Gg0+nFYBM7EDKVc1+0PUVvsM7Utqnm7HBIJ7jE1QzlJKixtMRZ1BkyTt+TJDaq/eYct16MncREn8pobd66Xv5h/Z9+rRZN71ukbxX5pTX6r49ptqv0tY4mY0lHFYl2myoeat7aQCNwlUzOUM1LD0hblEhQGi3BLGDJU89lq8PrcFZa2WFgQ6zNR4KQcx77MluvRRI6Ji9iRY6puyiVG5DpxD7tkVF/VG6qeV/3LfJYCAofAIXAIHAKHwCFwAIDAIXAIHAKHwCFwAIDAIXAIHAKHwCFwCBwAIHAIHAKHwCFwCBwCBwAIHAKHwCFwCBwCBwAIHAKHwCFwCBwCh8ABAAKHwCFwCBwCh8AhcACAwCFwCBwCh8AhcACAwCFwCBwCh8AhcAgcACBwCBwCh8AhcAgcAgcACBwCh8AhcAgcAgcAgMAhcAgcAofAIXAAgMAhcAgcAofAIXAIHAAgcAgcAofAIXAIHAIHAAgcAofAIXAIHAIHAAgcAofAIXAIHAKHwAEAAofAIXAIHAKHwCFwAIDAIXAIHAKHwCFwAIDAIXAIHAKHwCFwCBwAIHAIHAKHwCFwCBwCBwAIHAKHwCFwCBwCB6HF87ys4uLirYWFhRfU7z3St09GqT5lwHGcu2r9vRaNRmPqs2exNBA4BA6BQ+AQOAQOgYNPwbbtbyl56t61a9fd+vp6//XXX/fPnz8/aevuhQsXBj/zwIEDt5TMXVU1l6WCwCFwCBwCh8AhcAgcjEBubu7TSt5uNTY2GrEeHz16VNbl0ywZBA6BQ+AQOAQOgUPgIP3I20JVPadPnzZmPZbRONVX30kkEn/BEkLgEDgEDoFD4BA4BA7u37YUV1dXf2zaunzs2DG/qKioniWEwCFwCBwCh8AhcAgc3L9t6Xj11VeNW5dfe+012bbcYAkhcAgcAofAIXAIHAIH929bjNw+nzt3Tnaj3mYJIXAIHAKHwCFwCBwCB/evzy1sWwCBQ+AQOAQOgUPgAIFD4BA4BA6BQ+AQOAQOgQMEDhA4BA6BQ+AQOAQOgQMEDhA4BA6BQ+AQOAQOEDgEDoFD4BA4BA6BQ+AQOEDgAIFD4FjJEDgEDoFD4ACBAwQOgUPgEDgEDoEDBI5tCwKHwCFwCBwCh8AhcIDAIXAIHALHSobAIXAIHAIHCBwgcAgcAofAIXAIHCBwbFsQOAQOgUPgEDgEDoEDBA6BQ+AQOFYyBA6BQ+AQOEDgAIFD4BA4BA6BQ+AAgWPbgsAhcAgcAofAIXAIHCBwCBwCh8CxkiFwCBwCh8ABAgcIHAKHwCFwCBwCBwgc2xYEDoFD4BA4BA6BQ+AAgUPgEDgEjpUMgUPgEDgEDhA4QOAQOAQOgUPgEDhA4Ni2IHAIHAKHwCFwCBwCBwgcAofAIXCsZAgcAofAIXCAwIWZ2bommlmq5iBwCBwCh8AhcAgcIHBsW9KzStXCDF/r6ZpotqiqReAQOAQOgUPgEDhA4Ni2pOeSquwMX7tAFwKHwLGSIXAIHAKHwAEClzJCtljVZlWOqpWBaQv19CdUbVc1Tz++XP/9/KeMrslr2/QoWrZ+rrx2g6ptquaqylKVo2qnfs/g5y/Xlfx9oZ4Xmc9NqmYGnpul39fT/0vqrtfk6zaqeg6BQ+AQOAQOgUPgAIEL87ZFRKZLS43IU7MeoQoKWKOqPVq45HkXVa3VEiXTlz2gwMnfsv406PebrT+/Rk/bpOclR78+uAvV0/OW0J/drN8jKW8NgfcREWwJSNy2wDzLtD4EDoFD4BA4BA6BAwQu7AK3M/D346p69ejWqsDvwhwtP48Fni+ydXaU9w/uQk0KXZb+e6YeFZsVeH6qtAV/rw48b6mel+Q8iKDNCEyvVLVVv3ef/r+SJBA4BA6BQ+AQOAQOELiwC9wTKY/5qhZp4WoKPL5ET/MCVa0fs1IezxlB4FLFaZZ+7jYtXV2jCNzWwOuyA5+7Uwtc8POb9LwtDjwvKJ0IHAKHwCFwCBwCBwjctBO4x9MI11ItWNlpKhOBkxG9Fi1uG/TzikcRuC0jCJyjZS11nhaOIHCrEDgEDoFD4BA4BA4QuLAL3PYUMZK+IiuN6MgxcKm7I5dZo1/qYzSBe0ILXJD6DAQuR39OcBfqVv15spu2V48oWgHhQ+AQOAQOgUPgEDhA4EItcG1aeDZoodo0ykiVnMQg68BG/Tx5/tpR3r9Rv8eyNO/3mBbCZ/S0cv3e5WMUOJFNOQ6vRsvcdi2hyWP1ntHzuUHPfysCh8AhcAgcAofAAQIXdoETsZFLb8ixZEsD05KXEUllmZak7SnPT8djWryWj/B+i617lyQRKVug5dCy7r+MSHbgdfNShG6m/j8cLaPz08zzTi2di0f4vxA4BA6BQ+AQOAQOELhJ37YsstIfnzbnUwRuFUsbgUPgEDgEDoFD4ACBm5ptixw/dilNrUDgEDgEDoFD4BA4BA4QuOmzbZHRuZksbQQOgUPgEDgEDoEDBG5qti0r9Ghaas1naSJwCBwCh8AhcAgcIHBmblvkGmq1aWopSxOBQ+AQOAQOgUPgAIFj25KKXMpj7gS9l1zPbZ41/LpuQWS3b/L2W7Ot4bfiQuAQOAQOgUPgEDgEDoFj2/KAZFtDJ0xMBCJvvv6ZDhlVTF5CJPX6cAgcAofAIXAIHAKHwCFwbFsMF7gFozwPgUPgEDgEDoFD4BA4BG7abluSF9OVC90uCzyevPCuHEMnF8iVuxjILstF+rlyA/o5KQK3WE/bmkaskhfT3a6fZ6V8VvDiwEGBk7NkN+vRtpUpAhe8wK/Mq9zma6N+7iZr+Bm28/U877TuXcx33ngaiJEbzfPnz4dJ4FpNzTBMAheNRu+YmmNYBM5xnE6D1+fQCFzci/abKG93bpxC4BC46SZwcj/SVi09ckusi9bQraeSQiQekLxFldwWq0lVg/5bRKo+IHC9gWkifC0BwduiBW+t/qwW/dlJgezVnyt3U7gcELgZ+jOr9fzIje/7rPS7UGv1+24L/C87A6N6XVoQc/R8tlrD7+4wZvnwL1y4YFzjOH36tGw0W0MicF2ygTIxQ8/zboWlszK1LZ48edJXcvlOGDK0bfumqW0xTAInbXGgvdE4gbv89jFfLeNzqA0CN40ELihSlh7B6tUjV6useze2T46giVjNCjzXTxG44F0f6rVczbLuv6H8Si1qQrke3UuyJCBwy/Tzkic0zNAiOJLA7Qy8zyotcZYWt+LAtDlaBLPH00DebmxsNK5x1NXViXwcD0lnX1NfX/+eiRkWFxe/G5bOSi3vD0xsi4cPH+5zHCceEoE79tJLL/Wb2BYTicSZsLTFwoJ469VLdcYJ3Mnje6+r/sZBbRC4aSRwvh6NCl52xNdytsoaflxbdsrf81IErinlvbdqOcvWzwt+RoN+bLZ+z+WB12UFBG6Ldf+N5xOjCNzaEeY3ec/XIM3jFbh/q6ysNO44uJKSkp7c3NycMKxkaj5Xqsb8oWkZlpWVSf00NLut4vHtBw4c6DMpwzfffFNG33qUwC0KS1tUotRmWlssLS0dUOvI98LSFvdUFBS9/OJeo+Stt/Wk78XcjrC0RUDgxiBwK6377586KwOBO5tG4BIBgctOU1lpBG5GQOCeSSNw3igCt2oUgduU8j6XxiVwqjOYq761t585c8aYhtHQ0NAv8+R5XlZYVjQ1v6eqq6s/Nmy33+0wZShtUXVY3Sa1xd27d/epedofpk5ftcVXjxw50mtSW1QZ9oStLcaibm9nywljBO5QZWmX6zq70BoEbhruQg0O1jxmDR3zNjMDgevVI2pJ5Ji5jda9XahLAtOW6NE5QXZt7kyZlhQ4+b3Vuncywgw9cjZWgduaIoKPBaRyXLsAN8VisY9ff/31KW8UjY2NMtpxQ22EVoRpRduxY8ccNd8fVlVVdTc3N5twvFFvPB5/ImwdlmqL/6Tmu3Oq26Ici7d///5uJcHNatnODGFbvCqjmSa0RZVhV9jW58ER4Zj7v4oK4jc7rkytxMmxeLU1FW3RqHM2bG0RELgHQLZTbVqCZBejHDOWPExgrAInoiW7RtdqOWsOiNdmPX2Trhbr3skSIlPJEwxE+Jqs4Weh1mgZFNGsDszvWARulp4fOS5vm/4/28YtcHrD+ZzqZDvUN/f3mpqapmJX1a1Dhw69pTY8H6t5WRbGlU02nDL6oRr29bq6ujuTnaPs7jt69GirWunbw5phsi2qdtCl/pdrk53huXPn/OPHj/coiexQy/JQWDeYWuLO5Ofnd6i22D8FbbFP9SXvq3m4Hua26Lr2NiVOPW80Huxq++ClSRW329dP+W+dOdyZnxe7Ztu5B5A3BG4aX0ZkoR6hEoFaGXhcLrsR/PI3J+XvmQFhkmly+Y/FARFLvUNCtpanbdb9t/eap+fhOf25q1JG3XIC87dYz7OV8vtSa/h9X1PnN8u6d7/YOVoiF09Igjt37szOzc2tVBuubtmFKY1nrKU6646xvkZ9Vqd63euqnld/h/6mt3IckvqfXpAzAjPJUb3mega5yyjHG9Mlw0Bb7Mkkw0zaoWQor1O1R33mtLh3n26LtZm2xUzXZ1VnpmNbdBy7XQldy8Mu255+bREQuEccGe1LpMhkrzVVt+FKZf369XOefPLJVpbTuDNsWb16dRZpZIbKbpa0QzJkfQZA4BA4Q5ARvmZdspu3yxp+7N/Usnbt2h2qw/dzcnLms6wyznDzmjVr+tXPlaSRcYZLpB2qn39HGpmjMvwh6zMAAofATSiyu1V2m5p1SITq7DtUXVcCsoJllBkquw9Vhp2qXiSNjNvhJlW9qs6Sxrja4scqwx7WZwAEDoGb3qMeX1edfZ+qa+r3bSSS0QZzqew+lVEP9ft19XMBqWQkcNU6w14yHFdblC9kA+vWrfsViQAgcAjc9N1onpCNpq5GEskowwpVN3SGbyLCGed4XWfYpzL8fySSUYZVIm86x7dIBACBQ+CmIXKwsz5uS76x96qfXaQy9gy1cEiGN1WenRyIn7F8iHTcVNUlQkyG41ufZTcqqQAgcAjc9N94XiIFMiRDcgQABA7o8MkQyJAcARA4BA7o8MmQDIEcARA4BA7o8MmQDMkRABA4oMMnQyBDcgRA4BA4oMMnQzIEcgRA4BA4oMMnQzIkRwBA4IAOnwzJkAzJEQCBQ+CADp8MyRDIEQCBQ+CADp8MyZAcAQCBAzp8IEMyJEcAQOCADp8MyRDIEQCBQ+CADp8MyZAcAQCBYwnR4QMZkiE5AgACB3T4ZEiGZEiOAOHGtu12E+Xt/Pnzfjwev8MSosMHMiRDcgSA+wWuW2TJNIE7ffq0CFwvS4gOH8iQDMkRAFKIRCI1x48fv2KawNXV1fmFhYUXWEJ0+ECGZEiOAJBCbm7uyry8vMumCVxZWdndgoKCZ1hCdPhAhmRIjgCQhkgkcrK6utqYUbiTJ0/6juPc9Dwvi6VDhw9kSIbkCABp2LFjxxzbtj+orKxsa25unlJ5a2xs7I9Go51qfr7FkqHDBzIkQ3IEgE+RuEgk0uh5XsuLL754vampaVLF7c0337x+6NChNx3HuabmYxlLhA4fyJAMyREAHhA5Jk5ObJCzU1XdUHX5YZf6vA5VTaqed113PkuBDh/IkAzJEQAA6PDJEMiQHAEAgA6fDMmQHMkRAIAOH8iQDMkRAADo8MkQyJAcAQCADp8MyRDIEQCADh/IkAzJEQAA6PDJEMiQHAEAgA6fDMkQyBEAgA4fyJAMyREAAOjwyRDIkBwBAIAOnwzJEMgRAIAOnw6fDMmQHAEAgA6fDIEMyREAAOjwyZAMgRwBAIAOnwzJkBwBAIAOnwyBDMkRAADo8MmQDIEcAQCADp8MyZAcAQBg6ti5c+e83NzczTHHqVV1Neq6rWOtn2zd2p3B6z6O2nazfLbneVlhz9FxnEVOJBKLue47k5ih1G9cx4lHIpHF06Utqv+pLpO2mGmGnuu+lxeLlUyHDJNtMeo4ebFo9NJktkXV9t+2c3P/eTqszwAmrc+qb1Kbl8hZVZcmsZqmy/Z5WmLb9lK18b9Rv29f2wf19X77qVN+9+nTk1Jt6rOajx71q0pLu+Kx2K9VI50bxgx37NgxU20sdysB6H714MGBycxRMnzrhRf8hsrKvng02qGW57Gw5ihtUQlAx4l9+3qmIsOTVVV+fizWq2TuVJjbopr/A/J/qLboT3aOsj4fLCu7le957xV73jx6WIDxrc9KoopjUefqqfr9r7e+e/y9OzdO+X7n6Ydet6+f8n999sjVfbsKfxONOmfD2idOW5RZr1QbzK536+omTdpGqsYDB3zZeIetkcgKpub7Qk1FRW9HY+OUZigb6mO7d7cqEfpQrfSzw5RjLBZbpQT01lS3Rcnw+J49A0rIr4WxLSpxe/forl39U90WZX1Wy/MmnT5A5uuz49hNh6pKf9Pf1jgp0jZSnXmlakBJZDvrsyHIBt6x7ZsmyNsnnX5V1YAXjb4Sphyjtl1zqLz8tikZSu0tLPyNWr7Ph6ktKmG6bVJbPFVVddO17eNhaot50ejLRyoq7hqzPiuJK/S8C/S2AGPHtnMPHK4qvTaV4jZc4g74iXzvDEvGBPFwnB9Wl5beMUk8Ohsb/QLPux2W45Bkl188Gu1sm8Tdzg9SIkJy7FNY2mJpfv4vq8vKfNPaYn402hWmtpgfi90yqS1KhkrgBvYWFPxXelyAMW5bPPeG7MY0ReAG2hv9ogKvf1dZYhlLaOq/rV+8eOyYURtNKTluJ9/zKkIycrTnterqHtMyvH7ypB9znJthaYuF8fgVQ9viLTlwOAwZxlz3SNOhQ0auz2WJRC09LsDYti1nTx+8YYq8JUvNk793V0EDS2jqDX+gtaHBuA5fDrqOR6OXQ7KStV1W82tahlJq3vywtEXHtu+a2hajjnMxJBl2m9gWJcOE512jxwUY07al49p79b5pAnf9/Xq/sMBrYwlNMXLMkYniIbuAvGi0LSQrWZuJGUqp5TsQlrboOk6fqW1R5dgSEoHrMTXDvGi0ix4XYCwDLJEu0+QteWZqQcK7zRKaYqRTNVU+QiRwl0zNsCAW6wtLW5RLXhgswqEQOLkGm6kZInAAY1yfo06LiQInVVgQnm0LAofAIXAIHAKHwAEgcAgcAofAIXAIHAIHAAgcIHAIHAKHwCFwAAgcAofAIXAIHAKHwCFwAAgcAofAIXAIHAKHwAEAAgcIHAKHwCFwCBwAAofAIXAIHAKHwCFwCBwAAofAIXAIHAKHwCFwAIDAAQKHwCFwKfXO4cN+dSTiX3v55WGPy2MvFxUhcAgcAAKHwCFwCBwCZ5rARZ59Vu796p/bv3/Y43/we7/n//XXvobAIXAACBwCh8AhcAicKQK3afXqQXEbrRA4BA4AgUPgEDgEDoEzSOCuHj/uf/Hzn/d/d9asQVmTEbc//P3f/6T++Atf8I/n5yNwCBwAAofAIXAIHAJnisAla+/27f5Xv/SlwWPhOIkBgQNA4IwWuGxVWYYvhgWq5iFwCBwC95AFLllv7NkzeOJCsFKPi0PgEDgABG5KBc43Vo7u4anagsAhcAjcQxa4D2tr/S987nNpj4H7wZNPInAIHAACh8AhcAgcAmeawP38+98flDWRuL/7xjeGVcnPfobAIXAACJyZAjdT1TOqalQVq1oceN4MVWtV7VFVq+p5VXP0NNnFuVnVJlWVqhaq2mYN7Z7drt9vi37/JI9pMZP3ek7VrMC0Ofr9a/T7JhA4BA6BmwSB+/HTTw+eyNB+6hTHwCFwAAhcOARuhpYpEbAlqnJUtWkJs7SQNalapmqplqsaPS1bP7dGy5i83yVVF7X0rVB1WU+ztOC1aeHL1iJ31ho6Fi9L/+7paY6qPgQOgUPgJkHg5Ni3rM98ZvAnAofAASBwoRC4JVqqgic0yGhctf59lR41S7JUS1pS4PpSRtguaUFLskkLoqVH1HamzIfI3nItiJe1UCZpQuAQOARuEgSuxnX9P/rsZ/3/8Nu/PXg2arDkIr8IHAIHgMAZJ3Cyq7JLS1aymgOSJnK2QctXg5a9oMBdSnnfS1ryrIAAJgWuWVfws9q0pD0TeF4SjoFD4BC4yRC45J0YLE5iQOAAELiwCNxGPdI1L6Xm6uc1aLF6whraBbr0AQQuewSBO6tFLfWzZumRunoEDoFD4KZA4OSCvnK5kHQlZ6gicAgcAAJnnMAtsoZ2g84LTNtqDe3qnKWf93hg2nPjEDh5z+rAtJlaHrP1fPQGxHGGfi8EDoFD4B62wAWPhYtu3Tq4S/Wtgwfvu7k9AofAASBwRp2FKmd+Jk82kFGvNi1UQqMuEankbtQ+LVhjFbg5enry7NQmPeo2IzDidkkLpDzegsAhcAjcJAlc8L6ocvkQOTP18/Pm+e8dPYrAIXAACJw5ArfKGn7ygVw6RI6H22Ddu0xIcpRMniu7PpcEXjtbP29FyvuuSHn9fGv4MXFyssQTWsyWW8NPWrD0c7fo+ZFaiMAhcAjcQxY4GXETcfvmkiX+N7KzBwXulz/4gT/jt37L35yTg8AhcAAIHPdCnR5MlMDJKIfcTDx4A3Gpjd/5DgKHwE2awP3L+vWfXAdOTloQgZPHRej+8qtfReAQOAAEDoFD4JJ1zPNGPPMvuQFF4BC4yRC4n27aNDja9nJR0ScCJze2/4Pf+z3/uytWIHAIHAACh8AhcKmXbniltJRdqAjclAqcyNp//J3fGWyP8lOuBycX9pW/5Yb2CBwCB4DAIXAInC65RIOMeiBwCNxUC5zU8fx8/08XLhxsk5a+L2rhT3/KWagIHAACh8AhcKklu6fSXf1ejo1D4BC4yRS4h1EIHAIHgMAZLXByyZE5E/A+2dbwW3pNb4GTkTeLY+Ae2oZPLn+R6SUwHhWBS/3ikK64lRYCB4DATVuBk2u3rRph2jZr6HIgD0Lw2nTTX+CSx8DJbqrUq9+P59pbj5rAvVZR4f/xF77wyTFbE3H81qMicCN9gbC4lRYCB4DAPeoCl3phXwQuOAInxxvJAeQcA5d5yaUupPH8p9/93cE85TIsInByeRaRYQRu9OMwpeTsU8lPLl8jQix3ZPj5978/eBaq/I7AjV4iuVKSIwIHgMCNQeBWjVAzR/kXZZpcnFfuirDHuneRXiHHGrqgrtwRQe6i4KSI1WPW0F0Z5LVrRxE4uTCw9D3VgVE4+Vms31dG52aPIHCL9efOCXymp1+33Rq+y1YeX6jfV+ZJ7qs6w3iBE3GTg8b/6LOf9Td8+9ufbASkSn72MwTuAUvyW/3Nbw7mKY1I7t0pG1I5m5JdqA9WImsicKmPS/tc+61vIXAPOJI5nt3NCBzAIylwtSPUaMelyfRKLW4rVbWqWhYQohYtYEsD72fp95T+ZIt+rchf3wgCt1C/z0b9umz92o36d/mcZmvonqtBgVus52dFQN7atJjJ6+TWXxete8fLyesa9PNX6c9YZbzAye49i2Pgxr2Bk7Mlk3nJiJHskpYL0sooXKZnUT5qAicnzVgpu5xlhFgkWEY4ETgEDgCBM2IX6mItOcEROpGj+oDAFQemLdGSZmlxqwlMy/oUYQruQpWRuOcC02ZoEcsJiNgTWvoWp4yweSnvezbldcHbdSX06J3ZAicjRbLBTFeyGwuBe/AzeaURVP3qV/7ffv3rg3cUEKmTx/Zu347APeBxhMnLh4gEy27opJRU/OIXCBzHwAEgcA9H4LaMULNG+PdWaSG7FKgW696N6T1r+E3ks3Vfnpz2XMr71T+gwMnvy1Omy/ttD4iYuEevqgUpo4VtKfPbG5jH1GPn0gmfeQLHvVAnRuBkN6nc7klGjKRE4KRR/NmXvzw4EofAPViJ7MrJIElxkxvZR7du5TIiCBwAAvfwBM4boWaPInAXtfQEa+4DCJwTEK4kDQ8ocBf1CFuQcmvoWLvgSNp2/Z4zAgK3Nc38zgqlwCXvd/oXX/nKhJ/AwGVETvvXXn7Zf+vgQa4Dx3XgEDgABG667UJdoKXnscBjckJD4gEELkdLWXL361w9GvYgAudpYUsyW4+sLUsRMXnvy9bQbl1Lj/gFhS5L/708tAInZ/vJ8Vnjuc8kAseFfCdK4JL3QE1X3EoLgQNA4Iy6jIiMaMmJAtu07Mg2f9EDCNwMPSLWpN/jrJatkQROnicnKqzUkiXPTR4LJ3IXPNYuKGLLrHu7Umfpz2nQ89VoDe22zQqlwLELFYEzTeCS1yS0uA4cAgeAwIXhOnAibHJGqFwKZE7KCF1QiGZZw6/lNkOPfm3Sz11ojXzG61wtd8nRvpla5uQM1yUpz822ht+JQeZvfmDUbYV+3XJr+GVCUl+3wBp+DJ1ZAnfM8waLkxgQOFMETq71JhIXLLm0jVxaZDz36kXgEDgABI57oRrFRBwDx2VEEDhTBG6k+vJ/+S/+v6xfj8AhcAAIHAKHwMnxb8kr3ouopasdP/whAofATanAycibfNH4RnY2AofAASBwCBwCxzFwCJxpAjfaMXCMwCFwAAgcAofAIXAInIECJ9eA++qXvnRfbVq92r96/DgCh8ABIHAIHAKHwCFwpgncaNfUk5NtEDgEDgCBm3YCN5FnfMqZrAtHmZ5t3bt4b/B3BA6BQ+AmYhfquf37hz0ut9Uaz7UKETgEDgCBM1bgJvKaa3K5kdpRpvvWvcuZBH9H4BA4BC6T+ummTYO7SuW2WbJSyVmnwV2ocn9UTmJA4AAQOARuAgVunjX82m8IHAKHwI215JZjWZ/5zIgnMMg0uWMIAofAASBwxgicXFB3ixamSmvoHqRJcvTfz+vp21Oev9O6dyut5O2xngtMC17Ud3bgfeR5iwLT5GK8z+hpicDvSZboeZM7N6xIETj53AWB3x/X7y+v32wNv9DvBlU1+r2WTYhwInAI3HQQOCm5H++//sM/DApbjesO7kZNlhwDx71QETgABM4ogUuKmwiV3BmhRUtSUojEATZpkZNbXl0O/N2shS35XF/LnUjUHmvo9lkz9AhZc0CwcvT7Pq5fK7LXqN/zCT0tKXAyX136NSJy9dbIu1Dl9+S9UVfq90ne2muz/t+W67po3bstGAKHwCFw6UrOPJW7hbSfOoXAIXAACJw5Apet5Si4C3KjlqTgqFqSbXoULMmWgGh5KdOy9Htna4m6mPLZ2/Vom4zg9QZkzkoZgfO04CWZ+ykClx14biLw2ssBMbX0CBwCh8AhcKklt8765Q9+MDjyJrfQkhXlC5/7nP/e0aMIHAIHgMCZIXAiVn16ZC1ZLfpnUp62pAibN4rAbU15/3r9GVu0pAU/JznK9lgakVoWeN9aPfoW5PIoAjcv8LzkcXmz00ybh8AhcAhcmuvAWfrG9ZtzcgZ//7Mvf3nwGDj5G4FD4AAQOGME7qKWmWDNzVDgtqW8v+xCXamfV5Pmc+QYuflapGYGXrc88L41elQwSOsYBS5LTwtemmQBAofAIXApJXdbkEuGyC7TL37+84Nnn8rxb99csmSwEDgEDgCBM0Lg5qcRG9l9WZyhwCWPebP0yFqflkE5tq3LGn5Sg2PdO37ucsoomxN4X5mfhsD7Pm6Nvgs1ncAlRfD5wLTnEDgEDoFLKRl5S+4ulRXkTxcuHHz8L77yFf+vv/Y1BA6BA0DgzDmJQSRMtvPbtbjJ74syFLhmLVvb9CjZ5sBzE1rUksfRtWiBFJZpwRNxk2Puzgbed6b+O/m+Z/U8jlXg5uvPb9LVgMAhcAhcSlX84heD4pa8HtyPn356sOR3OUMVgUPgABA4o64DJ6Nlsjv1iZRRsgXW/ceNLUj5e2HKcxfr91qU5nMW6WmyWzX17gnz9DTZfTo7ZVRQdoGu0NPn6PdJdyeGbGv4CRnBu0PM1tMW6/fO1iKIwCFwCFywVn/zm4O7Tv/yq18dPAt143e+M3gxX+6FisABIHDcC3UKkBMqkrtsZ1j3nzWLwCFwCFy6Gs/ZpwgcAgeAwCFw40RG7WQXr+zalX6wJmW0EYFD4BC4h1UIHAIHgMAhcONEdqXOnLB3Q+AQOAQOgUPgABA4BC5kIHAIHAKHwCFwAAgcAofAIXAIHAKHwCFwAAgcIHAIHAKHwCFwAAgcAgcIHAKHwCFwCBwAAofAIXAIHAKHwCFwCBwAAgcIHAKHwCFwCBwAAofAAQKHwCFwCBwCB4DAIXAIHAKHwCFwCBwCB4DAAQKHwCFwCBwCB4DAIXAwWgNxnB4TO/v2U6f8mOteD4nAtZqaYcLz7oSlLarlfdvUHMMicK5td5iaIQIHMDYcx24zUd7u3DjlFyS82yyhqe7wHedGZ2OjcR3+u3V1fsxxroZE4JrbTp26ZmKGebFYT4gErsvEtnjx2DFfrScXwpChHYm8LbJkYlv0otF2elyAMazPtv2WyJJpAnf1Up2fyI/dZAlNvcAdeefYsX7TOvymQ4fuOLZdHpKVbOcrVVWvGpihX5qXdyosbVHJZsM7tbXGyccLu3ZdVZK+PSxt8fVDhz4ysS3mx2JH6HEBxrY+v3m6+rJpAnf+tUP+rvL8MyyhqR89Wlucl2fUMVwdjY2yu6U1Nzd3eRgyVPP5uJLN1pYTJ26ZlGFhPH7Hi0T+JkxtsTyRuGbayJFatt1q3haEpS3KqPpHJ04YtT4XeF53WNZnAJPW51jM7ei4csIYeetva/RLi/PulhV7q1lCZlj+i8f37PnQhM5edqEdLCv7QG0wj4ZsRcvxotGWKy+9ZESGNRUVtz3XPRW2thh1nJdf2rfPiBNrLtfXy3GYIm9rw9YW82OxNlPa4pHy8g4llXX0tACZrc+FCa+n7YOXplzeBtob/bqju/ziwvhbLBlD2Llz5zwlceeK8/KuyvE+rQ0NU/It/cLRo7fzYrEWNS8VaqM5O4QivNGx7V4lT72yK/D6yZOTnuFbL7zgF+XldSl5qwpjhtIW1cb+rbJEon0q2qJkKMtOlqGaj061TJ8I4zrtRiL/U83/7aO7dvVPZVtMeN4117b3hLEtApiCErgfRqNOv8jThxdr/d7Wk5M+6vbehRf8spL8gfKS/NdYnw3D87wsERDV2TapheNHXbdXzhqbjFKfeUtOWFB1SM3DijDn6DjO3Jjr/psXjb47mTkOZui61+KxWG3YM0y2RfX/nJ3MDKNKeNTnDqhl16x+/2HYOylpi3HPez4ejb4/BW2xVeX4QtjbIoApFBd786r2Fe8rKcrrkvU5Lx71iwriD728mHs3kR+7tbui4J09FYVPsSQAAAAAAAAAAAAAAAAAAAAAAAAAYKz8f8HDt2KGZmVLAAAAAElFTkSuQmCC\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 24,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"# Run this cell to download and view a schematic diagram for the encoder model\n",
"\n",
"!wget -q -O neural_translation_model.png --no-check-certificate \"https://docs.google.com/uc?export=download&id=1JrtNOzUJDaOWrK4C-xv-4wUuZaI12sQI\"\n",
"Image(\"neural_translation_model.png\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "M6gLIHG81iaz"
},
"source": [
"You should now build the custom layer.\n",
"* Using layer subclassing, create a custom layer that takes a batch of English data examples from one of the Datasets, and adds a learned embedded end token to the end of each sequence. \n",
"* This layer should create a TensorFlow Variable (that will be learned during training) that is 128-dimensional (the size of the embedding space). _Hint: you may find it helpful in the call method to use the tf.tile function to replicate the end token embedding across every element in the batch._\n",
"* Using the Dataset `.take(1)` method, extract a batch of English data examples from the training Dataset and print the shape. Test the custom layer by calling the layer on the English data batch Tensor and print the resulting Tensor shape (the layer should increase the sequence length by one)."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "yg9hjZz11ia0"
},
"outputs": [],
"source": [
"class EndTokenLayer(Layer):\n",
" \n",
" def __init__(self, embedding_dim=128, **kwargs):\n",
" super(EndTokenLayer, self).__init__(**kwargs)\n",
" self.embedding_dim = embedding_dim\n",
" def build(self, input_shape):\n",
" self.end_token_emb = self.add_weight(shape=(input_shape[-1],),\n",
" initializer='random_uniform',\n",
" trainable= True)\n",
" def call(self, inputs):\n",
" end_token = tf.tile(tf.reshape(self.end_token_emb, shape=(1, 1, self.end_token_emb.shape[0])), [tf.shape(inputs)[0],1,1])\n",
" return tf.keras.layers.concatenate([inputs, end_token], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "vFJUMAbNqDqp"
},
"source": []
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
},
"colab_type": "code",
"id": "4PwI32O11ia3",
"outputId": "598a9bbb-0ea7-4971-c385-5bcddde14d4a"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"english sentences shape\n",
"(16, 13, 128)\n"
]
}
],
"source": [
"endlayer = EndTokenLayer()\n",
"for english,german in train_dataset.take(1):\n",
" temp_layer = endlayer(english)\n",
" print(\"english sentences shape\")\n",
" print(english.shape) "
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
},
"colab_type": "code",
"id": "XlhLpsO_lIF0",
"outputId": "36785279-7e7e-4d54-b897-bc6cd7ad5d3d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"end added shape of english sentences:\n",
"(16, 14, 128)\n"
]
}
],
"source": [
"print(\"end added shape of english sentences:\")\n",
"print(temp_layer.shape)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "OAd3i4_y1ia-"
},
"source": [
"## 4. Build the encoder network\n",
"The encoder network follows the schematic diagram above. You should now build the RNN encoder model.\n",
"* Using the functional API, build the encoder network according to the following spec:\n",
" * The model will take a batch of sequences of embedded English words as input, as given by the Dataset objects.\n",
" * The next layer in the encoder will be the custom layer you created previously, to add a learned end token embedding to the end of the English sequence.\n",
" * This is followed by a Masking layer, with the `mask_value` set to the distinct padding value you used when you padded the English sequences with the Dataset preprocessing above.\n",
" * The final layer is an LSTM layer with 512 units, which also returns the hidden and cell states.\n",
" * The encoder is a multi-output model. There should be two output Tensors of this model: the hidden state and cell states of the LSTM layer. The output of the LSTM layer is unused.\n",
"* Using the Dataset `.take(1)` method, extract a batch of English data examples from the training Dataset and test the encoder model by calling it on the English data Tensor, and print the shape of the resulting Tensor outputs.\n",
"* Print the model summary for the encoder network."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "6R2LqbfV1ia_"
},
"outputs": [],
"source": [
"def encoder(input_shape):\n",
" inputs = Input([13,input_shape])\n",
" h = EndTokenLayer()(inputs)\n",
" h = Masking([(lambda x: x*0)(x) for x in range(128)])(h)\n",
" lstm , hidden_state, cell_state = LSTM(512,return_sequences = True,return_state=True)(h)\n",
" model = Model(inputs=inputs, outputs=[hidden_state, cell_state])\n",
"\n",
" return model"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 308
},
"colab_type": "code",
"id": "e5XW6NxL1ibC",
"outputId": "2c9d3ef7-738d-492b-fad6-c206844a1122"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input_1 (InputLayer) [(None, 13, 128)] 0 \n",
"_________________________________________________________________\n",
"end_token_layer_1 (EndTokenL (None, 14, 128) 128 \n",
"_________________________________________________________________\n",
"masking (Masking) (None, 14, 128) 0 \n",
"_________________________________________________________________\n",
"lstm (LSTM) [(None, 14, 512), (None, 1312768 \n",
"=================================================================\n",
"Total params: 1,312,896\n",
"Trainable params: 1,312,896\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"encoder_model = encoder(128)\n",
"encoder_model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "jEk9ikVh1ibL"
},
"outputs": [],
"source": [
"for english,german in train_dataset.take(1):\n",
" result_1,result_2 = encoder_model(english)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
},
"colab_type": "code",
"id": "HsVi4ZNnlGa_",
"outputId": "80782bcb-b1e4-4ca2-e9eb-e3f48a4ed043"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tf.Tensor([ 16 512], shape=(2,), dtype=int32)\n",
"tf.Tensor([ 16 512], shape=(2,), dtype=int32)\n"
]
}
],
"source": [
"print(tf.shape(result_1))\n",
"print(tf.shape(result_2))"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "KvkzpCeZ1ibR"
},
"source": [
"## 5. Build the decoder network\n",
"The decoder network follows the schematic diagram below. "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 501
},
"colab_type": "code",
"id": "yOjEb7cH7Y4S",
"outputId": "5b44888c-9039-4cfc-da6e-b4813fd4d782"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 32,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"# Run this cell to download and view a schematic diagram for the decoder model\n",
"\n",
"!wget -q -O neural_translation_model.png --no-check-certificate \"https://docs.google.com/uc?export=download&id=1DTeaXD8tA8RjkpVrB2mr9csSBOY4LQiW\"\n",
"Image(\"neural_translation_model.png\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "VPBK8WGL1ibS"
},
"source": [
"You should now build the RNN decoder model.\n",
"* Using Model subclassing, build the decoder network according to the following spec:\n",
" * The initializer should create the following layers:\n",
" * An Embedding layer with vocabulary size set to the number of unique German tokens, embedding dimension 128, and set to mask zero values in the input.\n",
" * An LSTM layer with 512 units, that returns its hidden and cell states, and also returns sequences.\n",
" * A Dense layer with number of units equal to the number of unique German tokens, and no activation function.\n",
" * The call method should include the usual `inputs` argument, as well as the additional keyword arguments `hidden_state` and `cell_state`. The default value for these keyword arguments should be `None`.\n",
" * The call method should pass the inputs through the Embedding layer, and then through the LSTM layer. If the `hidden_state` and `cell_state` arguments are provided, these should be used for the initial state of the LSTM layer. _Hint: use the_ `initial_state` _keyword argument when calling the LSTM layer on its input._\n",
" * The call method should pass the LSTM output sequence through the Dense layer, and return the resulting Tensor, along with the hidden and cell states of the LSTM layer.\n",
"* Using the Dataset `.take(1)` method, extract a batch of English and German data examples from the training Dataset. Test the decoder model by first calling the encoder model on the English data Tensor to get the hidden and cell states, and then call the decoder model on the German data Tensor and hidden and cell states, and print the shape of the resulting decoder Tensor outputs.\n",
"* Print the model summary for the decoder network."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "5i5XkhtsGhsO"
},
"outputs": [],
"source": [
"unique_tokens = len(tokenizer.word_index) + 1\n"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "l50qhnXD1ibT"
},
"outputs": [],
"source": [
"class DecoderModel(Model):\n",
" def __init__(self,initial_state=True,**kwargs):\n",
" super(DecoderModel, self).__init__(**kwargs)\n",
" self.embedding = Embedding(input_dim = unique_tokens,output_dim = 128,mask_zero = True)\n",
" self.lstm = LSTM(512, return_sequences=True, return_state=True)\n",
" self.dense = Dense(unique_tokens)\n",
" self.initial_state = initial_state\n",
"\n",
" def call(self,inputs,hidden_state = None,cell_state = None):\n",
" h = self.embedding(inputs)\n",
" if hidden_state != None and cell_state != None:\n",
" lstm,hidden_1,cell_1 = self.lstm(h,initial_state = [hidden_state,cell_state])\n",
" else:\n",
" lstm,hidden_1,cell_1 = self.lstm(h)\n",
" h = self.dense(lstm)\n",
" return h,hidden_1,cell_1\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "vG5CRIXV1ibi"
},
"outputs": [],
"source": [
"decoder_model = DecoderModel()\n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"colab_type": "code",
"id": "SvqqT_ET1ibl",
"outputId": "f1ec691f-d17d-478c-cc7b-05f846334624"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"decoder output shape:\n",
"tf.Tensor([ 16 14 5744], shape=(3,), dtype=int32)\n",
"hidden state shape:\n",
"tf.Tensor([ 16 512], shape=(2,), dtype=int32)\n",
"cell state shape:\n",
"tf.Tensor([ 16 512], shape=(2,), dtype=int32)\n"
]
}
],
"source": [
"for english,german in train_dataset.take(1):\n",
" temp,hidden_1,cell_1 = decoder_model(german)\n",
"print(\"decoder output shape:\")\n",
"print(tf.shape(temp))\n",
"print(\"hidden state shape:\")\n",
"print(tf.shape(hidden_1))\n",
"print(\"cell state shape:\")\n",
"print(tf.shape(cell_1))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 272
},
"colab_type": "code",
"id": "wF3B3d2y9LCn",
"outputId": "599233b8-01ef-4173-9269-f68402b147ce"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"decoder_model\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"embedding (Embedding) multiple 735232 \n",
"_________________________________________________________________\n",
"lstm_1 (LSTM) multiple 1312768 \n",
"_________________________________________________________________\n",
"dense (Dense) multiple 2946672 \n",
"=================================================================\n",
"Total params: 4,994,672\n",
"Trainable params: 4,994,672\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"decoder_model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "pST9XGJ81ibo"
},
"source": [
"## 6. Make a custom training loop\n",
"You should now write a custom training loop to train your custom neural translation model.\n",
"* Define a function that takes a Tensor batch of German data (as extracted from the training Dataset), and returns a tuple containing German inputs and outputs for the decoder model (refer to schematic diagram above).\n",
"* Define a function that computes the forward and backward pass for your translation model. This function should take an English input, German input and German output as arguments, and should do the following:\n",
" * Pass the English input into the encoder, to get the hidden and cell states of the encoder LSTM.\n",
" * These hidden and cell states are then passed into the decoder, along with the German inputs, which returns a sequence of outputs (the hidden and cell state outputs of the decoder LSTM are unused in this function).\n",
" * The loss should then be computed between the decoder outputs and the German output function argument.\n",
" * The function returns the loss and gradients with respect to the encoder and decoders trainable variables.\n",
" * Decorate the function with `@tf.function`\n",
"* Define and run a custom training loop for a number of epochs (for you to choose) that does the following:\n",
" * Iterates through the training dataset, and creates decoder inputs and outputs from the German sequences.\n",
" * Updates the parameters of the translation model using the gradients of the function above and an optimizer object.\n",
" * Every epoch, compute the validation loss on a number of batches from the validation and save the epoch training and validation losses.\n",
"* Plot the learning curves for loss vs epoch for both training and validation sets.\n",
"\n",
"_Hint: This model is computationally demanding to train. The quality of the model or length of training is not a factor in the grading rubric. However, to obtain a better model we recommend using the GPU accelerator hardware on Colab._"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "7hJHbWqs1ibr"
},
"outputs": [],
"source": [
"def german_io(german_data):\n",
" \n",
" input_data = german_data[:,0:tf.shape(german_data)[1]-1]\n",
" output_data = german_data[:,1:tf.shape(german_data)[1]]\n",
" return(input_data,output_data)\n"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "CykC5OlL71VK"
},
"outputs": [],
"source": [
"loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = True)\n",
"\n",
"optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Jvu4J4-u1ibu"
},
"outputs": [],
"source": [
"@tf.function\n",
"def fb_passes(english_input,german_input,german_output):\n",
" with tf.GradientTape() as tape:\n",
" hidden_state ,cell_state = encoder_model(english_input)\n",
" dense_output, _, _ = decoder_model(german_input, hidden_state, cell_state)\n",
" loss = tf.math.reduce_mean(loss_object(german_output,dense_output))\n",
" trainable_variables = encoder_model.trainable_variables + decoder_model.trainable_variables\n",
" gradients = tape.gradient(loss, trainable_variables)\n",
" return loss, gradients"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1252,
"referenced_widgets": [
"7cf2f09cbb2e49baa326b070a57135b6",
"a61b88812be7458e9384797ce7322974",
"8f56f460ce0743adb631f81b47279032",
"5ac9165d021f4013aa0943b6b4d78218",
"3d6a8e27074349418cd71c5290f326b5",
"0bbdb676c6f44fea87b6db3c5d3f4450",
"fc62d2b357614a41a04a474d45311b2e",
"f5263bdc9a1143289e04950c75cb57f7",
"aaa773cbcae14260bdf841d28d29301b",
"a0366ad869bc4e1e8237816dc4b3521b",
"e58007a175724a93826f54ad010eb3e0",
"2593f807e9054c629b228302b026fe78",
"e1f1bd459a3e4fc29763bac02058bcc4",
"3948b71f1b314f68b2d11ca915553e30",
"d0b9276d37814f3e9fbe1caaad9e30d7",
"eb69ae54b2794c698af7b7399c566aee",
"eb8c2ad4b54e4322af6eaf9acb2146f9",
"c82d275680734e5289db19cb909ee021",
"1a44ba624b804903934006950be10946",
"77fa3907e9f94a0ebe7dcae9fc452048",
"efeac8374c38426f906da594f014959d",
"14d9aa924abf48d7845629ced2003e60",
"ec1f39d1218246db9625b116bf0046b5",
"f5909acd99cc4cc984d2b5c8433ef031",
"803248d7f99146919fc755a33d488aba",
"062179ac0d2b48bcbb69c74d05a900e3",
"b76f983e43cd4e71b7c7c062ded7d3d5",
"47194203538f443fbdc98751785303f2",
"6bc41a9601fd4e23833e7095a84bcc6a",
"b33c81981277493ba2f6d83c20e2e21e",
"6dbd979f74144c668d628d75abd2d6dd",
"e42fea6d80ee41fa87eb05bf6619a171",
"43909ce2bd4f494ca7f48dfa4df64ac4",
"6d8f80f9f3c4430b83cc986c07513c9a",
"f36b7603103b41afa037b1736ce7987c",
"0aae27c452e24ff0bf6e87b3393109c2",
"ca9714a20e7b48939748a81acd7815d7",
"e1df1eda8fd946388b80cf7a753bb8d2",
"2d67fd09c8d0414eb38f44790b4098fe",
"4aea9d5a2e0a4084807550d0180374ce",
"a13c646a04d24355a523f240b81c5613",
"91ecd50ff6394107bf31db544b61847a",
"678138fdac934d97a51537537e6d60cf",
"44869506689c4caf9f401df6f3567e1f",
"d543e2ba6e1d4791a834d818d2dfa85d",
"67692bbfc09e45c7a462e5008b9547c5",
"a01c8bc77dc44043ad075bf5dfe9cf60",
"1be220b3c4b84ce18ff68ce962e9a949",
"d5dd318e95cb4ff6b03aaa25233a5497",
"be8601fb370b4df8a8fe9c4ec895c1f4",
"3d0e43a0a080403b94b64e3e83909e9c",
"720237b0357f4d5b9635cb5a975686bf",
"eb9b6424c9f045b19a65d349c8004828",
"2bcb448b88dd411aa0cee1979281e041",
"9f3cfc90bd844f75b29e8a5615e5fd40",
"bf6a570468014399b38142fc9a22fd76",
"f85725cd811c41049ca3b4a1a1d8d52b",
"fae25072555940479f91fe5fe7027ef5",
"ef88874f5bc346c393e6bbb6e18562f7",
"2b720265187e48e1a35107e338a9a999",
"21bc74bd84ad4daba065f1772ed662fd",
"5396e1fd60504686b6c9bc64fb4a4d06",
"c473432110a24a788d9abf8d15425deb",
"771ed83b268a4f66b226abae17711c6f",
"77ee6c65243d4aea94c0ca6f324e9600",
"bb98fe55077e456b8816a15522976bf9",
"5728de623f4c4440b9b49f92c2c95910",
"235185543ac74a9984ed589ae4df2c47",
"5b4f4314bc894bc9a810bdf1b622857b",
"5f12262f399a402a80641ef275c3e6c2",
"d9740797e3754ef385f6f8336cbe6fac",
"c27f6a8a581741388b6b6a76097962b9",
"e185261a681f4af0bdb2e3823e3891b6",
"76d7f0a0ba2f444eacaa6ac45eadeb8b",
"7365309c89e144b1b9235fb9c758aa82",
"13a52a32bbb040309a1c777f87f29bb1",
"72b499272b804968bd9732141dc021cb",
"929e4d34db9c47b5abeb6e8e6527e40d",
"bbdb4c77129e47e2bdbc9f595a2aa2db",
"483e36286fe34ab2bbbe30683736c09d",
"480c4b953af740848089472d2b12f54f",
"506b8e8184934f31acfc219574d48aff",
"3b45631e38144ad1859402a2944c936d",
"ed916bc1bd1242d3a68568625c73417d",
"ee3e8f88a4ef45979d7ca5e30ad9c125",
"282b77cd3c4c4d8aa3fa66aad2cc579f",
"2eeda4cb83aa44ea916d98091e5f2bae",
"2eacf0a522cb42929f123e2b46b24aa3",
"c00601a1aea542d6b7e2626f19b8f038",
"0b06f6925dbf42d48e7e90c4f6c5d999",
"2a26535ac3a746dfbcaa1e41d64a622d",
"5893aac2ec524ccf8d307f8fefbe5600",
"77e5649da409410abd7f1e8363ff16e0",
"5d349e33912a4c69b47c5ae49853a34c",
"dd2540db949d42748cdfe86b49e1f63e",
"0c9dcfe6797b4089a47b1778bfb12dc0",
"78a2ee48e8744d7dbd4095e7d0de5a0a",
"9bb82a154d00476d861a90eaf105c994",
"ef6fc0069caa408681ed24e43b075c31",
"fd2bd8c066944b2bb3681179d1e773d0",
"631b21b11c5a45879c4f5070dc0feaf1",
"87daeb0bd0754c75b5661f7840233ad0",
"8953c30291cf4f699814869d4b5a09c3",
"ba293c1ad08b435db5558ddf5f82baaa",
"b6129ba9f3b84f3b9fdbde3ea309cad2",
"198803aa7c9a45dbaf88e265562cec93",
"67773255ad0d4f1e9547aa99893c5783",
"6f805de20301483480f3b17d495c7e3f",
"e40a6afc8cd3425199bb0787f4b10f6d",
"ed76467bae354c5197fc851cfee38704",
"3ac927282a364bf9a1a3b180772ab840",
"89077b33906c4e73a5af69151ff3a697",
"a668e92a47644d52b97309a0b4c5b69b",
"4b18e248eca649b9bec73bea37b5c11a",
"30d271d2736a4d978d3e82bfe56eabc2",
"1d37494429ea4c94b6a04d777e102288",
"b41dc937f8c440c0ae891ce92ea1429e",
"428fed747b004809964f74862290b10e",
"830f327e49fe457f977d507460ceae7c",
"2ba405c81c874e678f65c4dfe8522e91",
"1d836faa041e49bfb60069abae3388dc",
"b450702e1ec544ec9a4ea23952810a30",
"edd5097c68f34aceb7b864e24ccccf4d",
"c30365ecb3d84928907be05d41656ecd",
"29b12965e6734707b300c42529f1c434",
"26a0a00f29d749c583b9bb3daf0068f4",
"5b4da417f7c14198857f103fe0ec21fb",
"5a921281ee6b42bab84f09fe3947a94a",
"8d32d1e1e9914826870413592b41b10b",
"be66e21ac4a24a2d81b776f14a3806b0",
"a09cfde07faa4705ae747aff01a1583d",
"c8c5a85ed6ce4411b0aa5779c4b7e978",
"539571ba1f43413593c939524bbd2d1b",
"4cd46a0bcd284b1db0211389fe3ad7ec",
"ffce7755cefa4c688d4eab7cd9876674",
"5b76bc51b4494c0fb95df76ab2fb1d65",
"68600582496043389e99e8b8a9aa88ab",
"af7f03e4bb454dccbc41f71a3f928966",
"3459b019efd740fca23d7ba661a7f29b",
"645160414a094c2d80982b9acaeec514",
"4c60c8f3fd1844efaccef38f5b81838e",
"7f00757074234050b67266815b0d60ee",
"0b9b818e1d404904895a9e55d75a9365",
"9d8745f319584c6ea64bb9af0bde2790",
"2644b241608a46ab9a032bfc8e31e263",
"900a79e911f14c648599db9d99c15dd0",
"29ea5efaf26f4416bd5a1d27284e42f7",
"19174ad2f0334918ae64ee5d5c1350f8",
"5de3d949221643deabc9d182baa5c46d",
"8208c8bce4594578aa3931dae0187e41",
"25c48651674747ad928ec3a6f4e68c8c",
"a384224fbe1f4655b65e2176681ea327",
"0694697d66344a34994953682f8bf350",
"e36ae6801f864a11a5838cf9ed4ba353",
"e6e7fc5c6cc34762855f85d90369a60f",
"94153c16c4a44ed4a0dcccb0a750d361",
"ae1ad1e6d4414093bbaee30ef5f7c64c",
"2e7ec1c896904a79ae2924a0c072c9f4",
"3283a19b26ab4019b0df651228ae6bd4",
"842fe98ab1544003a3410feb0ea2489d",
"0122fad2eef947b98affc30bb5d523f0",
"d9605817015940aab431158b5b132ba6",
"ce81663a9ca146aeb8b3e1975bf802ad",
"7243954bcaa941f49d2e3f81b4ad11c6",
"415b9b7ca7254a89b742425f8d8ea152",
"8acb2018f7854a839fc18946c1f931f7",
"ce002367634e4ea198e91c66393ea2e9",
"d46e63ac23794b049ebee823eaf35c7c"
]
},
"colab_type": "code",
"id": "AhMJRoJmJn-g",
"outputId": "5eca09e7-07b3-45a6-8584-de4796b35af0"
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7cf2f09cbb2e49baa326b070a57135b6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=10.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "aaa773cbcae14260bdf841d28d29301b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "eb8c2ad4b54e4322af6eaf9acb2146f9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 01: Avg. training loss = 4.303783, Avg. validation loss = 3.971151 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "803248d7f99146919fc755a33d488aba",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "43909ce2bd4f494ca7f48dfa4df64ac4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 02: Avg. training loss = 3.408585, Avg. validation loss = 3.229689 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a13c646a04d24355a523f240b81c5613",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d5dd318e95cb4ff6b03aaa25233a5497",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 03: Avg. training loss = 2.586687, Avg. validation loss = 2.563772 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f85725cd811c41049ca3b4a1a1d8d52b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "77ee6c65243d4aea94c0ca6f324e9600",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 04: Avg. training loss = 1.840311, Avg. validation loss = 1.982391 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e185261a681f4af0bdb2e3823e3891b6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "480c4b953af740848089472d2b12f54f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 05: Avg. training loss = 1.217730, Avg. validation loss = 1.538847 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c00601a1aea542d6b7e2626f19b8f038",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "78a2ee48e8744d7dbd4095e7d0de5a0a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 06: Avg. training loss = 0.775655, Avg. validation loss = 1.278047 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b6129ba9f3b84f3b9fdbde3ea309cad2",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a668e92a47644d52b97309a0b4c5b69b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 07: Avg. training loss = 0.510702, Avg. validation loss = 1.157365 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1d836faa041e49bfb60069abae3388dc",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8d32d1e1e9914826870413592b41b10b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 08: Avg. training loss = 0.357175, Avg. validation loss = 1.111811 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "68600582496043389e99e8b8a9aa88ab",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2644b241608a46ab9a032bfc8e31e263",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 09: Avg. training loss = 0.266191, Avg. validation loss = 1.098457 \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0694697d66344a34994953682f8bf350",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0122fad2eef947b98affc30bb5d523f0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=250.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 10: Avg. training loss = 0.204196, Avg. validation loss = 1.086921 \n",
"\n"
]
}
],
"source": [
"train_loss_results = []\n",
"val_loss_results = []\n",
"\n",
"for epoch in tqdm(range(10)):\n",
" \n",
" epoch_loss = 0\n",
" batch_no = 0\n",
" with tqdm(total= 1000) as t:\n",
" for english,german in train_dataset:\n",
" german_input, german_output = german_io(german)\n",
" loss, gradients = fb_passes(english, german_input, german_output)\n",
" epoch_loss += loss\n",
" batch_no += 1\n",
" optimizer.apply_gradients(zip(gradients, encoder_model.trainable_variables + decoder_model.trainable_variables))\n",
" epoch_avg_loss = epoch_loss / batch_no\n",
" train_loss_results.append(epoch_avg_loss)\n",
" t.update(1)\n",
" epoch_val_loss = 0\n",
" val_batch_no = 0\n",
" with tqdm(total= 250) as t:\n",
" for val_english,val_german in valid_dataset:\n",
" german_input, german_output = german_io(val_german)\n",
" loss, _ = fb_passes(val_english, german_input, german_output)\n",
" epoch_val_loss += loss\n",
" val_batch_no += 1\n",
" epoch_avg_val_loss = epoch_val_loss / val_batch_no\n",
" val_loss_results.append(epoch_avg_val_loss)\n",
" t.update(1)\n",
" print(\"Epoch {:02d}: Avg. training loss = {:.6f}, Avg. validation loss = {:.6f} \".format(epoch + 1,epoch_avg_loss,epoch_avg_val_loss))\n"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 621
},
"colab_type": "code",
"id": "mWIlf_y2YHfl",
"outputId": "b8cca73c-e388-46b8-99fa-d8b8639ba6d5"
},
"outputs": [
{
"data": {
"image/png": "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8eNJSUmhS5cuXHPNNXuOW14CNhJmZoOA9c65WWbW+3CO5Zx7CXgJIDU1VaNkIiIiZejucenMX7u1TI/Zpn5V7hrc9pDek5mZyfTp04mMjGTr1q1MmzaNqKgoJk2axK233soHH3zwp/csXLiQyZMnk52dTatWrbjiiiv+tFbXjz/+SHp6OvXr16dnz558++23pKamcvnllzN16lSaNm3K0KFDD+v7lkYgT0f2BIaY2QAgDqhqZm86587ba581QCMg08yigGrAxgBmEhERkSB15plnEhkZCcCWLVu48MILWbx4MWZGbm5use8ZOHAgsbGxxMbGUrt2bdatW0fDhg3/sE+3bt32vNaxY0dWrFhBQkICzZo127Ou19ChQ3nppZcC+O3+LGAlzDl3C3ALQNFI2A37FDCAscCFwHfAGcBXmg8mIiJSvg51xCpQ4uPj9zy/4447OP744/noo49YsWIFvXv3LvY9sbGxe55HRkaSl5dXqn18KPd1wszsHjMbUvTjq0AtM1tC4cT9m8s7j4iIiASfLVu20KBBAwBef/31Mj9+q1atWLZsGStWrADg3XffLfPPOJhyKWHOuSnOuUFFz+90zo0tep7jnDvTOdfCOdfNObesPPKIiIhIcLvpppu45ZZb6NSpU0BGripVqsRzzz1H//796dKlC1WqVKFatWpl/jkHYqF29i81NdWlpaX5jiEiIhLSFixYQOvWrX3H8Grbtm0kJCTgnOPKK6+kZcuWXHvttaU+XnG/UzOb5Zwrdk0N3bZIREREKqSXX36Zjh070rZtW7Zs2cLll19erp8f0MVaRURERILVtddee1gjX4dLI2EiIiIiHqiEiYiIiHigEiYiIiLigeaE7WPJ+m1c9t804qIjiYuOoFJMJEkJsdSpFke9qnE0r51ASt2qJFWJPfjBRERERPZDI2H7iImMoE39qtSvHkflmCh27s5n1qrfeO2bFYwcN5/zX51J1/snkXrfF1zynx94Zdoy0tduoaAgtJb6EBER8en4449n4sSJf3ht1KhRXHHFFcXu37t3b35fomrAgAFs3rz5T/uMHDmSxx577ICfO2bMGObPn7/n5zvvvJNJkyYdavwyoZGwfRxRqzLP/LXzn153zrFh224Wr89mwS/ZzF+7lVkrNzFpwXoAEhNi6de2DicfWY+jm9UkKlL9VkREZH+GDh3K6NGj6dev357XRo8ezSOPPHLQ944fP77UnztmzBgGDRpEmzZtALjnnntKfazDpaZQQmZGUpVYejRP5OJeTXn8rA5MufF4pt/chyfO6sBRTWvy4ew1nPfqDI5+8EsenLCAFRu2+44tIiISlM444ww+/fRTdu/eDcCKFStYu3Yt77zzDqmpqbRt25a77rqr2Pc2adKEDRs2AHD//feTnJxMr169yMjI2LPPyy+/TNeuXenQoQOnn346O3bsYPr06YwdO5Ybb7yRjh07snTpUoYNG8b7778PwJdffkmnTp1o164dF110Ebt27drzeXfddRedO3emXbt2LFy4sEx+BxoJO0z1q1fitM4NOa1zQ3buzufrRev5cPYaXpm2nBe/XkavFolcemwzjm2ZiJn5jisiIvJnE26GX38q22PWbQcnP7TfzTVr1qRbt25MmDCBU045hdGjR3PWWWdx6623UrNmTfLz8znhhBOYN28e7du3L/YYs2bNYvTo0cyZM4e8vDw6d+5Mly5dADjttNO49NJLAbj99tt59dVXufrqqxkyZAiDBg3ijDPO+MOxcnJyGDZsGF9++SXJyclccMEFPP/884wYMQKAxMREZs+ezXPPPcdjjz3GK6+8cti/Io2ElaFKMZH0P7IeL12QyvSb+3DDScksWb+NC/89k4FPfcO4uWvJ19wxERER4P9PSULhqcihQ4fy3nvv0blzZzp16kR6evof5m/ta9q0aZx66qlUrlyZqlWrMmTIkD3bfv75Z4455hjatWvHW2+9RXp6+gGzZGRk0LRpU5KTkwG48MILmTp16p7tp512GgBdunTZc9Pvw6WRsACpUzWOq/q05LJjmzPmxzW88PVSrn7nR575agk3D0ihd3KSRsZERCQ4HGDEKpBOOeUUrr32WmbPns2OHTuoWbMmjz32GD/88AM1atRg2LBh5OTklOrYw4YNY8yYMXTo0IHXX3+dKVOmHFbW2NjCVREiIyPL7IbiGgkLsJioCM7q2ogvrjuOp4d2Iicvn7+99gN/fXkGP6/Z4jueiIiINwkJCRx//PFcdNFFDB06lK1btxIfH0+1atVYt24dEyZMOOD7jz32WMaMGcPOnTvJzs5m3Lhxe7ZlZ2dTr149cnNzeeutt/a8XqVKFbKzs/90rFatWrFixQqWLFkCwBtvvMFxxx1XRt+0eCph5SQywhjcoT5f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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light",
"tags": []
},
"output_type": "display_data"
}
],
"source": [
"epoch_range = range(0,10)\n",
"from scipy.ndimage.filters import gaussian_filter1d\n",
"train_smoothed = gaussian_filter1d(train_loss_results, sigma=1500)\n",
"valid_smoothed = gaussian_filter1d(val_loss_results, sigma=1500)\n",
"\n",
"# The graph is inconsistent due to smaller data used to make training faster\n",
"fig = plt.figure(figsize = (10, 10))\n",
"ax = fig.add_subplot(1,1,1)\n",
"ax.plot(train_smoothed, label=\"Training\")\n",
"ax.plot(valid_smoothed, label=\"Validation\")\n",
"ax.legend(loc='best')\n",
"ax.set_title(\"Loss vs Epoch\")\n",
"ax.set_xticklabels(epoch_range)\n",
"ax.set_xlabel(\"Epoch number\")\n",
"ax.set_ylabel(\"Avg. loss\") \n",
"\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "xM2gvBM11ib-"
},
"source": [
"## 7. Use the model to translate\n",
"Now it's time to put your model into practice! You should run your translation for five randomly sampled English sentences from the dataset. For each sentence, the process is as follows:\n",
"* Preprocess and embed the English sentence according to the model requirements.\n",
"* Pass the embedded sentence through the encoder to get the encoder hidden and cell states.\n",
"* Starting with the special `\"<start>\"` token, use this token and the final encoder hidden and cell states to get the one-step prediction from the decoder, as well as the decoders updated hidden and cell states.\n",
"* Create a loop to get the next step prediction and updated hidden and cell states from the decoder, using the most recent hidden and cell states. Terminate the loop when the `\"<end>\"` token is emitted, or when the sentence has reached a maximum length.\n",
"* Decode the output token sequence into German text and print the English text and the model's German translation."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "hCgiIBiniZTe"
},
"outputs": [],
"source": [
"random_ind = np.random.choice(20000,5)\n",
"examples = []\n",
"for ind in random_ind:\n",
" examples.append(data_examples[ind])\n",
"english_sentences = [sentence.split('\\t')[0] for sentence in examples]\n",
"processed_english = []\n",
"for sentence in english_sentences:\n",
" processed_english.append(preprocess_sentence(sentence))\n"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "bGnQtE7L1icA"
},
"outputs": [],
"source": [
"\n",
"\n",
"start = tokenizer.word_index['<start>']\n",
"end = tokenizer.word_index['<end>']\n",
"examples_tokens = []\n",
"for p_english in processed_english:\n",
" english = tf.strings.split(p_english,sep = \" \")\n",
" english = embedding_layer(english)\n",
" english = tf.pad(english, [[13-len(english), 0], [0, 0]], constant_values = 0)\n",
" english = tf.expand_dims(english, 0)\n",
" hidden_state, cell_state = encoder_model(english)\n",
" translated_tokens = []\n",
" tf_token = tf.Variable([[start]])\n",
" while True:\n",
" output_1,hidden_state, cell_state = decoder_model(tf_token, hidden_state, cell_state)\n",
" output_2 = tf.argmax(output_1, 2).numpy()[0,0]\n",
" tf_token = tf.Variable([[output_2]])\n",
" if output_2 == end:\n",
" break\n",
" else:\n",
" translated_tokens.append(output_2)\n",
" examples_tokens.append(translated_tokens)\n"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Unk60cEy1icI"
},
"outputs": [],
"source": [
"inv_german_index = {value:key for key,value in tokenizer.word_index.items()}\n",
"german_sentences = []\n",
"for example_token in examples_tokens:\n",
" output_words = []\n",
" for token in example_token:\n",
" output_words.append(inv_german_index[token])\n",
" output = \" \".join(output_words)\n",
" german_sentences.append(output)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 181
},
"colab_type": "code",
"id": "QZtLHihbbBcG",
"outputId": "da09ba59-f280-41f2-cac6-6d80c0db50e6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+--------------------+----------------------------+\n",
"| English sentences | German Translations |\n",
"+--------------------+----------------------------+\n",
"| Tom may be out. | tom wird sich verspaeten . |\n",
"| Are you blushing? | bist du ueber achtzehn ? |\n",
"| Is it popular? | ist es etwas ernstes ? |\n",
"| I have a solution. | ich habe eine meinung . |\n",
"| I'm starved. | ich bin verletzt . |\n",
"+--------------------+----------------------------+\n"
]
}
],
"source": [
"table = PrettyTable(['English sentences', 'German Translations'])\n",
"for english,german in zip(english_sentences,german_sentences):\n",
" table.add_row([english,german])\n",
" \n",
"print(table)"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"collapsed_sections": [],
"name": "Translation Capstone Project.ipynb",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"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.7.6"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"0122fad2eef947b98affc30bb5d523f0": {
"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_ce81663a9ca146aeb8b3e1975bf802ad",
"IPY_MODEL_7243954bcaa941f49d2e3f81b4ad11c6"
],
"layout": "IPY_MODEL_d9605817015940aab431158b5b132ba6"
}
},
"062179ac0d2b48bcbb69c74d05a900e3": {
"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
}
},
"0694697d66344a34994953682f8bf350": {
"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_e6e7fc5c6cc34762855f85d90369a60f",
"IPY_MODEL_94153c16c4a44ed4a0dcccb0a750d361"
],
"layout": "IPY_MODEL_e36ae6801f864a11a5838cf9ed4ba353"
}
},
"0aae27c452e24ff0bf6e87b3393109c2": {
"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_4aea9d5a2e0a4084807550d0180374ce",
"placeholder": "",
"style": "IPY_MODEL_2d67fd09c8d0414eb38f44790b4098fe",
"value": " 250/250 [17:06&lt;00:00, 4.11s/it]"
}
},
"0b06f6925dbf42d48e7e90c4f6c5d999": {
"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
}
},
"0b9b818e1d404904895a9e55d75a9365": {
"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": ""
}
},
"0bbdb676c6f44fea87b6db3c5d3f4450": {
"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
}
},
"0c9dcfe6797b4089a47b1778bfb12dc0": {
"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
}
},
"13a52a32bbb040309a1c777f87f29bb1": {
"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_483e36286fe34ab2bbbe30683736c09d",
"placeholder": "",
"style": "IPY_MODEL_bbdb4c77129e47e2bdbc9f595a2aa2db",
"value": " 1000/1000 [34:27&lt;00:00, 2.07s/it]"
}
},
"14d9aa924abf48d7845629ced2003e60": {
"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
}
},
"19174ad2f0334918ae64ee5d5c1350f8": {
"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_a384224fbe1f4655b65e2176681ea327",
"placeholder": "",
"style": "IPY_MODEL_25c48651674747ad928ec3a6f4e68c8c",
"value": " 250/250 [23:18&lt;00:00, 5.59s/it]"
}
},
"198803aa7c9a45dbaf88e265562cec93": {
"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
}
},
"1a44ba624b804903934006950be10946": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_14d9aa924abf48d7845629ced2003e60",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_efeac8374c38426f906da594f014959d",
"value": 250
}
},
"1be220b3c4b84ce18ff68ce962e9a949": {
"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
}
},
"1d37494429ea4c94b6a04d777e102288": {
"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_2ba405c81c874e678f65c4dfe8522e91",
"placeholder": "",
"style": "IPY_MODEL_830f327e49fe457f977d507460ceae7c",
"value": " 250/250 [12:33&lt;00:00, 3.01s/it]"
}
},
"1d836faa041e49bfb60069abae3388dc": {
"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_edd5097c68f34aceb7b864e24ccccf4d",
"IPY_MODEL_c30365ecb3d84928907be05d41656ecd"
],
"layout": "IPY_MODEL_b450702e1ec544ec9a4ea23952810a30"
}
},
"21bc74bd84ad4daba065f1772ed662fd": {
"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"
}
},
"235185543ac74a9984ed589ae4df2c47": {
"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_c27f6a8a581741388b6b6a76097962b9",
"placeholder": "",
"style": "IPY_MODEL_d9740797e3754ef385f6f8336cbe6fac",
"value": " 250/250 [41:47&lt;00:00, 10.03s/it]"
}
},
"2593f807e9054c629b228302b026fe78": {
"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_eb69ae54b2794c698af7b7399c566aee",
"placeholder": "",
"style": "IPY_MODEL_d0b9276d37814f3e9fbe1caaad9e30d7",
"value": " 1000/1000 [29:17&lt;00:00, 1.76s/it]"
}
},
"25c48651674747ad928ec3a6f4e68c8c": {
"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": ""
}
},
"2644b241608a46ab9a032bfc8e31e263": {
"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_29ea5efaf26f4416bd5a1d27284e42f7",
"IPY_MODEL_19174ad2f0334918ae64ee5d5c1350f8"
],
"layout": "IPY_MODEL_900a79e911f14c648599db9d99c15dd0"
}
},
"26a0a00f29d749c583b9bb3daf0068f4": {
"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
}
},
"282b77cd3c4c4d8aa3fa66aad2cc579f": {
"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
}
},
"29b12965e6734707b300c42529f1c434": {
"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"
}
},
"29ea5efaf26f4416bd5a1d27284e42f7": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_8208c8bce4594578aa3931dae0187e41",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_5de3d949221643deabc9d182baa5c46d",
"value": 250
}
},
"2a26535ac3a746dfbcaa1e41d64a622d": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_5d349e33912a4c69b47c5ae49853a34c",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_77e5649da409410abd7f1e8363ff16e0",
"value": 1000
}
},
"2b720265187e48e1a35107e338a9a999": {
"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_771ed83b268a4f66b226abae17711c6f",
"placeholder": "",
"style": "IPY_MODEL_c473432110a24a788d9abf8d15425deb",
"value": " 1000/1000 [49:28&lt;00:00, 2.97s/it]"
}
},
"2ba405c81c874e678f65c4dfe8522e91": {
"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
}
},
"2bcb448b88dd411aa0cee1979281e041": {
"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
}
},
"2d67fd09c8d0414eb38f44790b4098fe": {
"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": ""
}
},
"2e7ec1c896904a79ae2924a0c072c9f4": {
"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
}
},
"2eacf0a522cb42929f123e2b46b24aa3": {
"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
}
},
"2eeda4cb83aa44ea916d98091e5f2bae": {
"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": ""
}
},
"30d271d2736a4d978d3e82bfe56eabc2": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_428fed747b004809964f74862290b10e",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_b41dc937f8c440c0ae891ce92ea1429e",
"value": 250
}
},
"3283a19b26ab4019b0df651228ae6bd4": {
"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": ""
}
},
"3459b019efd740fca23d7ba661a7f29b": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_7f00757074234050b67266815b0d60ee",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_4c60c8f3fd1844efaccef38f5b81838e",
"value": 1000
}
},
"3948b71f1b314f68b2d11ca915553e30": {
"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
}
},
"3ac927282a364bf9a1a3b180772ab840": {
"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": ""
}
},
"3b45631e38144ad1859402a2944c936d": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_282b77cd3c4c4d8aa3fa66aad2cc579f",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_ee3e8f88a4ef45979d7ca5e30ad9c125",
"value": 250
}
},
"3d0e43a0a080403b94b64e3e83909e9c": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_2bcb448b88dd411aa0cee1979281e041",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_eb9b6424c9f045b19a65d349c8004828",
"value": 250
}
},
"3d6a8e27074349418cd71c5290f326b5": {
"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"
}
},
"415b9b7ca7254a89b742425f8d8ea152": {
"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"
}
},
"428fed747b004809964f74862290b10e": {
"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
}
},
"43909ce2bd4f494ca7f48dfa4df64ac4": {
"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_f36b7603103b41afa037b1736ce7987c",
"IPY_MODEL_0aae27c452e24ff0bf6e87b3393109c2"
],
"layout": "IPY_MODEL_6d8f80f9f3c4430b83cc986c07513c9a"
}
},
"44869506689c4caf9f401df6f3567e1f": {
"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_1be220b3c4b84ce18ff68ce962e9a949",
"placeholder": "",
"style": "IPY_MODEL_a01c8bc77dc44043ad075bf5dfe9cf60",
"value": " 1000/1000 [09:45&lt;00:00, 1.71it/s]"
}
},
"47194203538f443fbdc98751785303f2": {
"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_e42fea6d80ee41fa87eb05bf6619a171",
"placeholder": "",
"style": "IPY_MODEL_6dbd979f74144c668d628d75abd2d6dd",
"value": " 1000/1000 [19:30&lt;00:00, 1.17s/it]"
}
},
"480c4b953af740848089472d2b12f54f": {
"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_3b45631e38144ad1859402a2944c936d",
"IPY_MODEL_ed916bc1bd1242d3a68568625c73417d"
],
"layout": "IPY_MODEL_506b8e8184934f31acfc219574d48aff"
}
},
"483e36286fe34ab2bbbe30683736c09d": {
"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
}
},
"4aea9d5a2e0a4084807550d0180374ce": {
"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
}
},
"4b18e248eca649b9bec73bea37b5c11a": {
"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
}
},
"4c60c8f3fd1844efaccef38f5b81838e": {
"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"
}
},
"4cd46a0bcd284b1db0211389fe3ad7ec": {
"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
}
},
"506b8e8184934f31acfc219574d48aff": {
"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
}
},
"539571ba1f43413593c939524bbd2d1b": {
"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"
}
},
"5396e1fd60504686b6c9bc64fb4a4d06": {
"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
}
},
"5728de623f4c4440b9b49f92c2c95910": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_5f12262f399a402a80641ef275c3e6c2",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_5b4f4314bc894bc9a810bdf1b622857b",
"value": 250
}
},
"5893aac2ec524ccf8d307f8fefbe5600": {
"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_0c9dcfe6797b4089a47b1778bfb12dc0",
"placeholder": "",
"style": "IPY_MODEL_dd2540db949d42748cdfe86b49e1f63e",
"value": " 1000/1000 [24:41&lt;00:00, 1.48s/it]"
}
},
"5a921281ee6b42bab84f09fe3947a94a": {
"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
}
},
"5ac9165d021f4013aa0943b6b4d78218": {
"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_f5263bdc9a1143289e04950c75cb57f7",
"placeholder": "",
"style": "IPY_MODEL_fc62d2b357614a41a04a474d45311b2e",
"value": " 10/10 [1:37:32&lt;00:00, 585.29s/it]"
}
},
"5b4da417f7c14198857f103fe0ec21fb": {
"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": ""
}
},
"5b4f4314bc894bc9a810bdf1b622857b": {
"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"
}
},
"5b76bc51b4494c0fb95df76ab2fb1d65": {
"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
}
},
"5d349e33912a4c69b47c5ae49853a34c": {
"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
}
},
"5de3d949221643deabc9d182baa5c46d": {
"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"
}
},
"5f12262f399a402a80641ef275c3e6c2": {
"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
}
},
"631b21b11c5a45879c4f5070dc0feaf1": {
"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"
}
},
"645160414a094c2d80982b9acaeec514": {
"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_9d8745f319584c6ea64bb9af0bde2790",
"placeholder": "",
"style": "IPY_MODEL_0b9b818e1d404904895a9e55d75a9365",
"value": " 1000/1000 [02:24&lt;00:00, 6.92it/s]"
}
},
"67692bbfc09e45c7a462e5008b9547c5": {
"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
}
},
"67773255ad0d4f1e9547aa99893c5783": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_ed76467bae354c5197fc851cfee38704",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_e40a6afc8cd3425199bb0787f4b10f6d",
"value": 1000
}
},
"678138fdac934d97a51537537e6d60cf": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_67692bbfc09e45c7a462e5008b9547c5",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d543e2ba6e1d4791a834d818d2dfa85d",
"value": 1000
}
},
"68600582496043389e99e8b8a9aa88ab": {
"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_3459b019efd740fca23d7ba661a7f29b",
"IPY_MODEL_645160414a094c2d80982b9acaeec514"
],
"layout": "IPY_MODEL_af7f03e4bb454dccbc41f71a3f928966"
}
},
"6bc41a9601fd4e23833e7095a84bcc6a": {
"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"
}
},
"6d8f80f9f3c4430b83cc986c07513c9a": {
"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
}
},
"6dbd979f74144c668d628d75abd2d6dd": {
"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": ""
}
},
"6f805de20301483480f3b17d495c7e3f": {
"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_89077b33906c4e73a5af69151ff3a697",
"placeholder": "",
"style": "IPY_MODEL_3ac927282a364bf9a1a3b180772ab840",
"value": " 1000/1000 [14:57&lt;00:00, 1.11it/s]"
}
},
"720237b0357f4d5b9635cb5a975686bf": {
"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_bf6a570468014399b38142fc9a22fd76",
"placeholder": "",
"style": "IPY_MODEL_9f3cfc90bd844f75b29e8a5615e5fd40",
"value": " 250/250 [56:49&lt;00:00, 13.64s/it]"
}
},
"7243954bcaa941f49d2e3f81b4ad11c6": {
"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_d46e63ac23794b049ebee823eaf35c7c",
"placeholder": "",
"style": "IPY_MODEL_ce002367634e4ea198e91c66393ea2e9",
"value": " 250/250 [07:21&lt;00:00, 1.77s/it]"
}
},
"72b499272b804968bd9732141dc021cb": {
"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"
}
},
"7365309c89e144b1b9235fb9c758aa82": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_929e4d34db9c47b5abeb6e8e6527e40d",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_72b499272b804968bd9732141dc021cb",
"value": 1000
}
},
"76d7f0a0ba2f444eacaa6ac45eadeb8b": {
"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
}
},
"771ed83b268a4f66b226abae17711c6f": {
"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
}
},
"77e5649da409410abd7f1e8363ff16e0": {
"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"
}
},
"77ee6c65243d4aea94c0ca6f324e9600": {
"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_5728de623f4c4440b9b49f92c2c95910",
"IPY_MODEL_235185543ac74a9984ed589ae4df2c47"
],
"layout": "IPY_MODEL_bb98fe55077e456b8816a15522976bf9"
}
},
"77fa3907e9f94a0ebe7dcae9fc452048": {
"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_f5909acd99cc4cc984d2b5c8433ef031",
"placeholder": "",
"style": "IPY_MODEL_ec1f39d1218246db9625b116bf0046b5",
"value": " 250/250 [26:53&lt;00:00, 6.45s/it]"
}
},
"78a2ee48e8744d7dbd4095e7d0de5a0a": {
"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_ef6fc0069caa408681ed24e43b075c31",
"IPY_MODEL_fd2bd8c066944b2bb3681179d1e773d0"
],
"layout": "IPY_MODEL_9bb82a154d00476d861a90eaf105c994"
}
},
"7cf2f09cbb2e49baa326b070a57135b6": {
"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_8f56f460ce0743adb631f81b47279032",
"IPY_MODEL_5ac9165d021f4013aa0943b6b4d78218"
],
"layout": "IPY_MODEL_a61b88812be7458e9384797ce7322974"
}
},
"7f00757074234050b67266815b0d60ee": {
"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
}
},
"803248d7f99146919fc755a33d488aba": {
"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_b76f983e43cd4e71b7c7c062ded7d3d5",
"IPY_MODEL_47194203538f443fbdc98751785303f2"
],
"layout": "IPY_MODEL_062179ac0d2b48bcbb69c74d05a900e3"
}
},
"8208c8bce4594578aa3931dae0187e41": {
"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
}
},
"830f327e49fe457f977d507460ceae7c": {
"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": ""
}
},
"842fe98ab1544003a3410feb0ea2489d": {
"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
}
},
"87daeb0bd0754c75b5661f7840233ad0": {
"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
}
},
"89077b33906c4e73a5af69151ff3a697": {
"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
}
},
"8953c30291cf4f699814869d4b5a09c3": {
"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": ""
}
},
"8acb2018f7854a839fc18946c1f931f7": {
"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
}
},
"8d32d1e1e9914826870413592b41b10b": {
"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_a09cfde07faa4705ae747aff01a1583d",
"IPY_MODEL_c8c5a85ed6ce4411b0aa5779c4b7e978"
],
"layout": "IPY_MODEL_be66e21ac4a24a2d81b776f14a3806b0"
}
},
"8f56f460ce0743adb631f81b47279032": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_0bbdb676c6f44fea87b6db3c5d3f4450",
"max": 10,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_3d6a8e27074349418cd71c5290f326b5",
"value": 10
}
},
"900a79e911f14c648599db9d99c15dd0": {
"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
}
},
"91ecd50ff6394107bf31db544b61847a": {
"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
}
},
"929e4d34db9c47b5abeb6e8e6527e40d": {
"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
}
},
"94153c16c4a44ed4a0dcccb0a750d361": {
"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_842fe98ab1544003a3410feb0ea2489d",
"placeholder": "",
"style": "IPY_MODEL_3283a19b26ab4019b0df651228ae6bd4",
"value": " 1000/1000 [15:56&lt;00:00, 1.05it/s]"
}
},
"9bb82a154d00476d861a90eaf105c994": {
"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
}
},
"9d8745f319584c6ea64bb9af0bde2790": {
"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
}
},
"9f3cfc90bd844f75b29e8a5615e5fd40": {
"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": ""
}
},
"a01c8bc77dc44043ad075bf5dfe9cf60": {
"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": ""
}
},
"a0366ad869bc4e1e8237816dc4b3521b": {
"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
}
},
"a09cfde07faa4705ae747aff01a1583d": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_4cd46a0bcd284b1db0211389fe3ad7ec",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_539571ba1f43413593c939524bbd2d1b",
"value": 250
}
},
"a13c646a04d24355a523f240b81c5613": {
"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_678138fdac934d97a51537537e6d60cf",
"IPY_MODEL_44869506689c4caf9f401df6f3567e1f"
],
"layout": "IPY_MODEL_91ecd50ff6394107bf31db544b61847a"
}
},
"a384224fbe1f4655b65e2176681ea327": {
"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
}
},
"a61b88812be7458e9384797ce7322974": {
"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
}
},
"a668e92a47644d52b97309a0b4c5b69b": {
"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_30d271d2736a4d978d3e82bfe56eabc2",
"IPY_MODEL_1d37494429ea4c94b6a04d777e102288"
],
"layout": "IPY_MODEL_4b18e248eca649b9bec73bea37b5c11a"
}
},
"aaa773cbcae14260bdf841d28d29301b": {
"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_e58007a175724a93826f54ad010eb3e0",
"IPY_MODEL_2593f807e9054c629b228302b026fe78"
],
"layout": "IPY_MODEL_a0366ad869bc4e1e8237816dc4b3521b"
}
},
"ae1ad1e6d4414093bbaee30ef5f7c64c": {
"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"
}
},
"af7f03e4bb454dccbc41f71a3f928966": {
"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
}
},
"b33c81981277493ba2f6d83c20e2e21e": {
"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
}
},
"b41dc937f8c440c0ae891ce92ea1429e": {
"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"
}
},
"b450702e1ec544ec9a4ea23952810a30": {
"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
}
},
"b6129ba9f3b84f3b9fdbde3ea309cad2": {
"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_67773255ad0d4f1e9547aa99893c5783",
"IPY_MODEL_6f805de20301483480f3b17d495c7e3f"
],
"layout": "IPY_MODEL_198803aa7c9a45dbaf88e265562cec93"
}
},
"b76f983e43cd4e71b7c7c062ded7d3d5": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_b33c81981277493ba2f6d83c20e2e21e",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_6bc41a9601fd4e23833e7095a84bcc6a",
"value": 1000
}
},
"ba293c1ad08b435db5558ddf5f82baaa": {
"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
}
},
"bb98fe55077e456b8816a15522976bf9": {
"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
}
},
"bbdb4c77129e47e2bdbc9f595a2aa2db": {
"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": ""
}
},
"be66e21ac4a24a2d81b776f14a3806b0": {
"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
}
},
"be8601fb370b4df8a8fe9c4ec895c1f4": {
"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
}
},
"bf6a570468014399b38142fc9a22fd76": {
"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
}
},
"c00601a1aea542d6b7e2626f19b8f038": {
"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_2a26535ac3a746dfbcaa1e41d64a622d",
"IPY_MODEL_5893aac2ec524ccf8d307f8fefbe5600"
],
"layout": "IPY_MODEL_0b06f6925dbf42d48e7e90c4f6c5d999"
}
},
"c27f6a8a581741388b6b6a76097962b9": {
"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
}
},
"c30365ecb3d84928907be05d41656ecd": {
"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_5a921281ee6b42bab84f09fe3947a94a",
"placeholder": "",
"style": "IPY_MODEL_5b4da417f7c14198857f103fe0ec21fb",
"value": " 1000/1000 [05:13&lt;00:00, 3.19it/s]"
}
},
"c473432110a24a788d9abf8d15425deb": {
"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": ""
}
},
"c82d275680734e5289db19cb909ee021": {
"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
}
},
"c8c5a85ed6ce4411b0aa5779c4b7e978": {
"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_5b76bc51b4494c0fb95df76ab2fb1d65",
"placeholder": "",
"style": "IPY_MODEL_ffce7755cefa4c688d4eab7cd9876674",
"value": " 250/250 [08:05&lt;00:00, 1.94s/it]"
}
},
"ca9714a20e7b48939748a81acd7815d7": {
"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"
}
},
"ce002367634e4ea198e91c66393ea2e9": {
"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": ""
}
},
"ce81663a9ca146aeb8b3e1975bf802ad": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_8acb2018f7854a839fc18946c1f931f7",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_415b9b7ca7254a89b742425f8d8ea152",
"value": 250
}
},
"d0b9276d37814f3e9fbe1caaad9e30d7": {
"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": ""
}
},
"d46e63ac23794b049ebee823eaf35c7c": {
"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
}
},
"d543e2ba6e1d4791a834d818d2dfa85d": {
"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"
}
},
"d5dd318e95cb4ff6b03aaa25233a5497": {
"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_3d0e43a0a080403b94b64e3e83909e9c",
"IPY_MODEL_720237b0357f4d5b9635cb5a975686bf"
],
"layout": "IPY_MODEL_be8601fb370b4df8a8fe9c4ec895c1f4"
}
},
"d9605817015940aab431158b5b132ba6": {
"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
}
},
"d9740797e3754ef385f6f8336cbe6fac": {
"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": ""
}
},
"dd2540db949d42748cdfe86b49e1f63e": {
"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": ""
}
},
"e185261a681f4af0bdb2e3823e3891b6": {
"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_7365309c89e144b1b9235fb9c758aa82",
"IPY_MODEL_13a52a32bbb040309a1c777f87f29bb1"
],
"layout": "IPY_MODEL_76d7f0a0ba2f444eacaa6ac45eadeb8b"
}
},
"e1df1eda8fd946388b80cf7a753bb8d2": {
"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
}
},
"e1f1bd459a3e4fc29763bac02058bcc4": {
"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"
}
},
"e36ae6801f864a11a5838cf9ed4ba353": {
"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
}
},
"e40a6afc8cd3425199bb0787f4b10f6d": {
"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"
}
},
"e42fea6d80ee41fa87eb05bf6619a171": {
"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
}
},
"e58007a175724a93826f54ad010eb3e0": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_3948b71f1b314f68b2d11ca915553e30",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_e1f1bd459a3e4fc29763bac02058bcc4",
"value": 1000
}
},
"e6e7fc5c6cc34762855f85d90369a60f": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_2e7ec1c896904a79ae2924a0c072c9f4",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_ae1ad1e6d4414093bbaee30ef5f7c64c",
"value": 1000
}
},
"eb69ae54b2794c698af7b7399c566aee": {
"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
}
},
"eb8c2ad4b54e4322af6eaf9acb2146f9": {
"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_1a44ba624b804903934006950be10946",
"IPY_MODEL_77fa3907e9f94a0ebe7dcae9fc452048"
],
"layout": "IPY_MODEL_c82d275680734e5289db19cb909ee021"
}
},
"eb9b6424c9f045b19a65d349c8004828": {
"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"
}
},
"ec1f39d1218246db9625b116bf0046b5": {
"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": ""
}
},
"ed76467bae354c5197fc851cfee38704": {
"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
}
},
"ed916bc1bd1242d3a68568625c73417d": {
"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_2eacf0a522cb42929f123e2b46b24aa3",
"placeholder": "",
"style": "IPY_MODEL_2eeda4cb83aa44ea916d98091e5f2bae",
"value": " 250/250 [32:03&lt;00:00, 7.69s/it]"
}
},
"edd5097c68f34aceb7b864e24ccccf4d": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_26a0a00f29d749c583b9bb3daf0068f4",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_29b12965e6734707b300c42529f1c434",
"value": 1000
}
},
"ee3e8f88a4ef45979d7ca5e30ad9c125": {
"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"
}
},
"ef6fc0069caa408681ed24e43b075c31": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_87daeb0bd0754c75b5661f7840233ad0",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_631b21b11c5a45879c4f5070dc0feaf1",
"value": 250
}
},
"ef88874f5bc346c393e6bbb6e18562f7": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_5396e1fd60504686b6c9bc64fb4a4d06",
"max": 1000,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_21bc74bd84ad4daba065f1772ed662fd",
"value": 1000
}
},
"efeac8374c38426f906da594f014959d": {
"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"
}
},
"f36b7603103b41afa037b1736ce7987c": {
"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": "100%",
"description_tooltip": null,
"layout": "IPY_MODEL_e1df1eda8fd946388b80cf7a753bb8d2",
"max": 250,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_ca9714a20e7b48939748a81acd7815d7",
"value": 250
}
},
"f5263bdc9a1143289e04950c75cb57f7": {
"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
}
},
"f5909acd99cc4cc984d2b5c8433ef031": {
"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
}
},
"f85725cd811c41049ca3b4a1a1d8d52b": {
"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_ef88874f5bc346c393e6bbb6e18562f7",
"IPY_MODEL_2b720265187e48e1a35107e338a9a999"
],
"layout": "IPY_MODEL_fae25072555940479f91fe5fe7027ef5"
}
},
"fae25072555940479f91fe5fe7027ef5": {
"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
}
},
"fc62d2b357614a41a04a474d45311b2e": {
"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": ""
}
},
"fd2bd8c066944b2bb3681179d1e773d0": {
"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_ba293c1ad08b435db5558ddf5f82baaa",
"placeholder": "",
"style": "IPY_MODEL_8953c30291cf4f699814869d4b5a09c3",
"value": " 250/250 [22:18&lt;00:00, 5.35s/it]"
}
},
"ffce7755cefa4c688d4eab7cd9876674": {
"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": ""
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 1
}