diff --git a/Ch10-deeplearning-lab.Rmd b/Ch10-deeplearning-lab.Rmd
index e6911cc..51674b6 100644
--- a/Ch10-deeplearning-lab.Rmd
+++ b/Ch10-deeplearning-lab.Rmd
@@ -1,19 +1,3 @@
----
-jupyter:
- jupytext:
- cell_metadata_filter: -all
- formats: ipynb,Rmd
- text_representation:
- extension: .Rmd
- format_name: rmarkdown
- format_version: '1.2'
- jupytext_version: 1.14.7
- kernelspec:
- display_name: Python 3 (ipykernel)
- language: python
- name: python3
----
-
# Chapter 10
@@ -872,7 +856,7 @@ for idx, (X_ ,Y_) in enumerate(cifar_dm.train_dataloader()):
Before we start, we look at some of the training images; similar code produced
-Figure 10.5 on page 164. The example below also illustrates
+Figure 10.5 on page 447. The example below also illustrates
that `TensorDataset` objects can be indexed with integers --- we are choosing
random images from the training data by indexing `cifar_train`. In order to display correctly,
we must reorder the dimensions by a call to `np.transpose()`.
@@ -1705,7 +1689,6 @@ early stopping, since then the test performance would be biased.
We form the training dataset similar to
our `Hitters` example.
-
```{python}
datasets = []
diff --git a/Ch10-deeplearning-lab.ipynb b/Ch10-deeplearning-lab.ipynb
index 835512f..2577eac 100644
--- a/Ch10-deeplearning-lab.ipynb
+++ b/Ch10-deeplearning-lab.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "markdown",
- "id": "b672dcf6",
+ "id": "23016bca",
"metadata": {},
"source": [
"\n",
@@ -24,7 +24,7 @@
{
"cell_type": "code",
"execution_count": 1,
- "id": "9b5b8319",
+ "id": "cf431f3f",
"metadata": {
"lines_to_next_cell": 2
},
@@ -48,7 +48,7 @@
},
{
"cell_type": "markdown",
- "id": "c0cb2c87",
+ "id": "667eff82",
"metadata": {},
"source": [
"### Torch-Specific Imports\n",
@@ -61,7 +61,7 @@
{
"cell_type": "code",
"execution_count": 2,
- "id": "f66f362c",
+ "id": "1db00e03",
"metadata": {},
"outputs": [],
"source": [
@@ -73,7 +73,7 @@
},
{
"cell_type": "markdown",
- "id": "5ce27a8d",
+ "id": "b3407495",
"metadata": {},
"source": [
"There are several other helper packages for `torch`. For instance,\n",
@@ -87,7 +87,7 @@
{
"cell_type": "code",
"execution_count": 3,
- "id": "17bce9cb",
+ "id": "3da0a445",
"metadata": {},
"outputs": [],
"source": [
@@ -98,7 +98,7 @@
},
{
"cell_type": "markdown",
- "id": "a14990c3",
+ "id": "e5c55b19",
"metadata": {},
"source": [
"The package `pytorch_lightning` is a somewhat higher-level\n",
@@ -111,7 +111,7 @@
{
"cell_type": "code",
"execution_count": 4,
- "id": "4c3b6e43",
+ "id": "bbbf32fe",
"metadata": {},
"outputs": [],
"source": [
@@ -121,7 +121,7 @@
},
{
"cell_type": "markdown",
- "id": "e5bc78bd",
+ "id": "cf5ec401",
"metadata": {},
"source": [
"In order to reproduce results we use `seed_everything()`. We will also instruct `torch` to use deterministic algorithms\n",
@@ -131,7 +131,7 @@
{
"cell_type": "code",
"execution_count": 5,
- "id": "6839d8ad",
+ "id": "3810caf4",
"metadata": {},
"outputs": [
{
@@ -150,7 +150,7 @@
},
{
"cell_type": "markdown",
- "id": "1f1490e7",
+ "id": "c3dea945",
"metadata": {},
"source": [
"We will use several datasets shipped with `torchvision` for our\n",
@@ -161,7 +161,7 @@
{
"cell_type": "code",
"execution_count": 6,
- "id": "07dba2dd",
+ "id": "454dc419",
"metadata": {
"lines_to_next_cell": 0
},
@@ -179,7 +179,7 @@
},
{
"cell_type": "markdown",
- "id": "36ec305c",
+ "id": "f7f9578a",
"metadata": {},
"source": [
"We have provided a few utilities in `ISLP` specifically for this lab.\n",
@@ -197,7 +197,7 @@
{
"cell_type": "code",
"execution_count": 7,
- "id": "89763447",
+ "id": "cd43a4c6",
"metadata": {},
"outputs": [],
"source": [
@@ -209,7 +209,7 @@
},
{
"cell_type": "markdown",
- "id": "dfc13283",
+ "id": "c5231b9d",
"metadata": {},
"source": [
"In addition we have included some helper\n",
@@ -226,7 +226,7 @@
{
"cell_type": "code",
"execution_count": 8,
- "id": "ac5ab1b0",
+ "id": "eaf84e9c",
"metadata": {},
"outputs": [],
"source": [
@@ -238,7 +238,7 @@
},
{
"cell_type": "markdown",
- "id": "04f757bd",
+ "id": "c42bc542",
"metadata": {},
"source": [
"Finally, we introduce some utility imports not directly related to\n",
@@ -255,7 +255,7 @@
{
"cell_type": "code",
"execution_count": 9,
- "id": "5a5468e6",
+ "id": "d007a49b",
"metadata": {
"lines_to_next_cell": 2
},
@@ -267,7 +267,7 @@
},
{
"cell_type": "markdown",
- "id": "690a5255",
+ "id": "d0fe1cff",
"metadata": {},
"source": [
"## Single Layer Network on Hitters Data\n",
@@ -277,7 +277,7 @@
{
"cell_type": "code",
"execution_count": 10,
- "id": "d635398b",
+ "id": "9da64364",
"metadata": {
"lines_to_next_cell": 0
},
@@ -289,7 +289,7 @@
},
{
"cell_type": "markdown",
- "id": "a0fd86f3",
+ "id": "0e80a8c0",
"metadata": {},
"source": [
" We will fit two linear models (least squares and lasso) and compare their performance\n",
@@ -305,7 +305,7 @@
{
"cell_type": "code",
"execution_count": 11,
- "id": "2c621749",
+ "id": "a2cfe999",
"metadata": {
"lines_to_next_cell": 0
},
@@ -318,7 +318,7 @@
},
{
"cell_type": "markdown",
- "id": "f32a66d7",
+ "id": "5f0851bc",
"metadata": {},
"source": [
"The `to_numpy()` method above converts `pandas`\n",
@@ -331,7 +331,7 @@
},
{
"cell_type": "markdown",
- "id": "b5565350",
+ "id": "afe4eb28",
"metadata": {},
"source": [
"We now split the data into test and training, fixing the random\n",
@@ -341,7 +341,7 @@
{
"cell_type": "code",
"execution_count": 12,
- "id": "cd19596a",
+ "id": "5c600069",
"metadata": {},
"outputs": [],
"source": [
@@ -356,7 +356,7 @@
},
{
"cell_type": "markdown",
- "id": "b82951aa",
+ "id": "e27a6313",
"metadata": {},
"source": [
"### Linear Models\n",
@@ -366,7 +366,7 @@
{
"cell_type": "code",
"execution_count": 13,
- "id": "e4bfcd5a",
+ "id": "6ea4f551",
"metadata": {},
"outputs": [
{
@@ -388,7 +388,7 @@
},
{
"cell_type": "markdown",
- "id": "bf3523a8",
+ "id": "e5fe8c6b",
"metadata": {},
"source": [
"Next we fit the lasso using `sklearn`. We are using\n",
@@ -402,7 +402,7 @@
{
"cell_type": "code",
"execution_count": 14,
- "id": "36f8290b",
+ "id": "f1b8b3f5",
"metadata": {},
"outputs": [],
"source": [
@@ -414,7 +414,7 @@
},
{
"cell_type": "markdown",
- "id": "9f1bf0ad",
+ "id": "39a58ed0",
"metadata": {},
"source": [
"We need to create a grid of values for $\\lambda$. As is common practice, \n",
@@ -425,7 +425,7 @@
{
"cell_type": "code",
"execution_count": 15,
- "id": "5015c394",
+ "id": "50ce4171",
"metadata": {
"lines_to_next_cell": 0
},
@@ -440,7 +440,7 @@
},
{
"cell_type": "markdown",
- "id": "89f6b4e4",
+ "id": "2cdc3810",
"metadata": {},
"source": [
"Note that we had to transform the data first, since the scale of the variables impacts the choice of $\\lambda$.\n",
@@ -450,7 +450,7 @@
{
"cell_type": "code",
"execution_count": 16,
- "id": "b5dc7d68",
+ "id": "94c4ab75",
"metadata": {},
"outputs": [],
"source": [
@@ -466,7 +466,7 @@
},
{
"cell_type": "markdown",
- "id": "0b64a882",
+ "id": "e5262d51",
"metadata": {},
"source": [
"We extract the lasso model with best cross-validated mean absolute error, and evaluate its\n",
@@ -477,7 +477,7 @@
{
"cell_type": "code",
"execution_count": 17,
- "id": "2c49196f",
+ "id": "86e45999",
"metadata": {
"lines_to_next_cell": 0
},
@@ -501,7 +501,7 @@
},
{
"cell_type": "markdown",
- "id": "61f016c9",
+ "id": "1f905d89",
"metadata": {},
"source": [
"This is similar to the results we got for the linear model fit by least squares. However, these results can vary a lot for different train/test splits; we encourage the reader to try a different seed in code block 12 and rerun the subsequent code up to this point.\n",
@@ -519,7 +519,7 @@
{
"cell_type": "code",
"execution_count": 18,
- "id": "df5864e2",
+ "id": "00ac7606",
"metadata": {},
"outputs": [],
"source": [
@@ -541,7 +541,7 @@
},
{
"cell_type": "markdown",
- "id": "4b05cc28",
+ "id": "a25aab3b",
"metadata": {},
"source": [
"The `class` statement identifies the code chunk as a\n",
@@ -577,7 +577,7 @@
{
"cell_type": "code",
"execution_count": 19,
- "id": "da601fe1",
+ "id": "bb7ff7e9",
"metadata": {},
"outputs": [],
"source": [
@@ -586,7 +586,7 @@
},
{
"cell_type": "markdown",
- "id": "326f3b54",
+ "id": "ac0c6bf7",
"metadata": {},
"source": [
"The object `self.sequential` is a composition of four maps. The\n",
@@ -601,7 +601,7 @@
},
{
"cell_type": "markdown",
- "id": "a246aedb",
+ "id": "9e8e69ac",
"metadata": {},
"source": [
"The package `torchinfo` provides a `summary()` function that neatly summarizes\n",
@@ -612,7 +612,7 @@
{
"cell_type": "code",
"execution_count": 20,
- "id": "15dd23a9",
+ "id": "b60d34e1",
"metadata": {
"lines_to_next_cell": 0
},
@@ -658,7 +658,7 @@
},
{
"cell_type": "markdown",
- "id": "3cb4b8bc",
+ "id": "aa499e3f",
"metadata": {},
"source": [
"We have truncated the end of the output slightly, here and in subsequent uses.\n",
@@ -680,7 +680,7 @@
{
"cell_type": "code",
"execution_count": 21,
- "id": "dae83bc5",
+ "id": "42f63682",
"metadata": {
"lines_to_next_cell": 0
},
@@ -693,7 +693,7 @@
},
{
"cell_type": "markdown",
- "id": "80475fa2",
+ "id": "6e184dcd",
"metadata": {},
"source": [
"We do the same for the test data."
@@ -702,7 +702,7 @@
{
"cell_type": "code",
"execution_count": 22,
- "id": "81e217a8",
+ "id": "57fbf564",
"metadata": {},
"outputs": [],
"source": [
@@ -713,7 +713,7 @@
},
{
"cell_type": "markdown",
- "id": "7f49263d",
+ "id": "09cabaa8",
"metadata": {},
"source": [
"Finally, this dataset is passed to a `DataLoader()` which ultimately\n",
@@ -737,7 +737,7 @@
{
"cell_type": "code",
"execution_count": 23,
- "id": "e5359e31",
+ "id": "570bdd73",
"metadata": {},
"outputs": [],
"source": [
@@ -746,7 +746,7 @@
},
{
"cell_type": "markdown",
- "id": "105b015f",
+ "id": "a7bc2151",
"metadata": {},
"source": [
"The general training setup in `pytorch_lightning` involves\n",
@@ -769,7 +769,7 @@
{
"cell_type": "code",
"execution_count": 24,
- "id": "7a19d6d8",
+ "id": "c08a4d6d",
"metadata": {},
"outputs": [],
"source": [
@@ -782,7 +782,7 @@
},
{
"cell_type": "markdown",
- "id": "8d1f2a76",
+ "id": "db5447fa",
"metadata": {},
"source": [
"Next we must provide a `pytorch_lightning` module that controls\n",
@@ -797,7 +797,7 @@
{
"cell_type": "code",
"execution_count": 25,
- "id": "07bc10ef",
+ "id": "aaa1e593",
"metadata": {},
"outputs": [],
"source": [
@@ -807,7 +807,7 @@
},
{
"cell_type": "markdown",
- "id": "1ebf9835",
+ "id": "8500a2ba",
"metadata": {},
"source": [
" By using the `SimpleModule.regression()` method, we indicate that we will use squared-error loss as in\n",
@@ -824,7 +824,7 @@
{
"cell_type": "code",
"execution_count": 26,
- "id": "08c71fb4",
+ "id": "1a4e9b3c",
"metadata": {},
"outputs": [],
"source": [
@@ -833,7 +833,7 @@
},
{
"cell_type": "markdown",
- "id": "511617c3",
+ "id": "77e3c7a5",
"metadata": {},
"source": [
"Finally we are ready to train our model and log the results. We\n",
@@ -855,7 +855,7 @@
{
"cell_type": "code",
"execution_count": 27,
- "id": "81a8c626",
+ "id": "2f839fde",
"metadata": {
"lines_to_next_cell": 0
},
@@ -897,7 +897,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4cb0d8941d43434883b4142c14e198f8",
+ "model_id": "3f81045e13e641428a7f37ab7ceb43be",
"version_major": 2,
"version_minor": 0
},
@@ -1569,7 +1569,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "840b55ce195b42edbe9f3fd394dec7e5",
+ "model_id": "553e586e7cd54ad3bb9e01d0fc37754e",
"version_major": 2,
"version_minor": 0
},
@@ -1583,7 +1583,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2e3d175f2c294fac992ff04733267452",
+ "model_id": "05c22b9bdd4c48098756a37b57fc963b",
"version_major": 2,
"version_minor": 0
},
@@ -1597,7 +1597,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2d0477c9d13945bb8a6cbd38620bc93f",
+ "model_id": "f073bf03d90b4e318352c5de82bb9953",
"version_major": 2,
"version_minor": 0
},
@@ -1627,7 +1627,7 @@
},
{
"cell_type": "markdown",
- "id": "abe1a22c",
+ "id": "4018f616",
"metadata": {},
"source": [
"At each step of SGD, the algorithm randomly selects 32 training observations for\n",
@@ -1643,7 +1643,7 @@
{
"cell_type": "code",
"execution_count": 28,
- "id": "083670c6",
+ "id": "672b4410",
"metadata": {
"lines_to_next_cell": 2
},
@@ -1651,7 +1651,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ddc1a0eaac9e4fcda9e91e34abdcc67d",
+ "model_id": "f0857a2a00a847c084831c51d7fd8dfd",
"version_major": 2,
"version_minor": 0
},
@@ -1704,7 +1704,7 @@
},
{
"cell_type": "markdown",
- "id": "c6b3317b",
+ "id": "0f4e3b11",
"metadata": {},
"source": [
"The results of the fit have been logged into a CSV file. We can find the\n",
@@ -1720,7 +1720,7 @@
{
"cell_type": "code",
"execution_count": 29,
- "id": "02ba9edf",
+ "id": "8cf6ef60",
"metadata": {},
"outputs": [],
"source": [
@@ -1729,7 +1729,7 @@
},
{
"cell_type": "markdown",
- "id": "daf8ed8d",
+ "id": "537efe03",
"metadata": {},
"source": [
"Since we will produce similar plots in later examples, we write a\n",
@@ -1739,7 +1739,7 @@
{
"cell_type": "code",
"execution_count": 30,
- "id": "4184557c",
+ "id": "67ce1e26",
"metadata": {
"lines_to_next_cell": 0
},
@@ -1773,7 +1773,7 @@
},
{
"cell_type": "markdown",
- "id": "026c1c4d",
+ "id": "53309bb0",
"metadata": {},
"source": [
"We now set up our axes, and use our function to produce the MAE plot."
@@ -1782,7 +1782,7 @@
{
"cell_type": "code",
"execution_count": 31,
- "id": "3244deeb",
+ "id": "deb684d2",
"metadata": {
"lines_to_next_cell": 2
},
@@ -1811,7 +1811,7 @@
},
{
"cell_type": "markdown",
- "id": "670a3e8f",
+ "id": "eab05619",
"metadata": {},
"source": [
"We can predict directly from the final model, and\n",
@@ -1829,7 +1829,7 @@
{
"cell_type": "code",
"execution_count": 32,
- "id": "36bb545e",
+ "id": "454033dd",
"metadata": {
"lines_to_next_cell": 0
},
@@ -1853,7 +1853,7 @@
},
{
"cell_type": "markdown",
- "id": "ae4b9ca6",
+ "id": "b3625ff5",
"metadata": {},
"source": [
" "
@@ -1861,7 +1861,7 @@
},
{
"cell_type": "markdown",
- "id": "b8b7fd3c",
+ "id": "f46e3883",
"metadata": {},
"source": [
"### Cleanup\n",
@@ -1875,7 +1875,7 @@
{
"cell_type": "code",
"execution_count": 33,
- "id": "00371f48",
+ "id": "71b3d0d0",
"metadata": {
"lines_to_next_cell": 2
},
@@ -1894,7 +1894,7 @@
},
{
"cell_type": "markdown",
- "id": "5707d61c",
+ "id": "28d1c832",
"metadata": {},
"source": [
"## Multilayer Network on the MNIST Digit Data\n",
@@ -1908,7 +1908,7 @@
{
"cell_type": "code",
"execution_count": 34,
- "id": "3e28d6ba",
+ "id": "def8605c",
"metadata": {},
"outputs": [
{
@@ -1939,7 +1939,7 @@
},
{
"cell_type": "markdown",
- "id": "eb8b7e29",
+ "id": "95ffc346",
"metadata": {},
"source": [
"There are 60,000 images in the training data and 10,000 in the test\n",
@@ -1963,7 +1963,7 @@
{
"cell_type": "code",
"execution_count": 35,
- "id": "cb04829e",
+ "id": "8b9e2b8c",
"metadata": {},
"outputs": [],
"source": [
@@ -1976,7 +1976,7 @@
},
{
"cell_type": "markdown",
- "id": "1119e22a",
+ "id": "91256a1b",
"metadata": {},
"source": [
"Let’s take a look at the data that will get fed into our network. We loop through the first few\n",
@@ -1986,7 +1986,7 @@
{
"cell_type": "code",
"execution_count": 36,
- "id": "c4a265fc",
+ "id": "a4b95dc6",
"metadata": {
"lines_to_next_cell": 2
},
@@ -2012,7 +2012,7 @@
},
{
"cell_type": "markdown",
- "id": "f65ada90",
+ "id": "12e7eddb",
"metadata": {},
"source": [
"We see that the $X$ for each batch consists of 256 images of size `1x28x28`.\n",
@@ -2025,7 +2025,7 @@
{
"cell_type": "code",
"execution_count": 37,
- "id": "60339a03",
+ "id": "17714c25",
"metadata": {},
"outputs": [],
"source": [
@@ -2051,7 +2051,7 @@
},
{
"cell_type": "markdown",
- "id": "5b8f87da",
+ "id": "9893ffb2",
"metadata": {},
"source": [
"We see that in the first layer, each `1x28x28` image is flattened, then mapped to\n",
@@ -2065,7 +2065,7 @@
{
"cell_type": "code",
"execution_count": 38,
- "id": "1d0f24b2",
+ "id": "88a4bf46",
"metadata": {},
"outputs": [],
"source": [
@@ -2074,7 +2074,7 @@
},
{
"cell_type": "markdown",
- "id": "0ee4771e",
+ "id": "049febff",
"metadata": {},
"source": [
"We can check that the model produces output of expected size based\n",
@@ -2084,7 +2084,7 @@
{
"cell_type": "code",
"execution_count": 39,
- "id": "42a4931b",
+ "id": "ea0d9387",
"metadata": {},
"outputs": [
{
@@ -2104,7 +2104,7 @@
},
{
"cell_type": "markdown",
- "id": "628d56f9",
+ "id": "638026d1",
"metadata": {},
"source": [
"Let’s take a look at the summary of the model. Instead of an `input_size` we can pass\n",
@@ -2115,7 +2115,7 @@
{
"cell_type": "code",
"execution_count": 40,
- "id": "69e62d88",
+ "id": "17c34a29",
"metadata": {},
"outputs": [
{
@@ -2164,7 +2164,7 @@
},
{
"cell_type": "markdown",
- "id": "f8e77337",
+ "id": "73e3cd00",
"metadata": {},
"source": [
"Having set up both the model and the data module, fitting this model is\n",
@@ -2177,7 +2177,7 @@
{
"cell_type": "code",
"execution_count": 41,
- "id": "2027a378",
+ "id": "a0608bd1",
"metadata": {},
"outputs": [],
"source": [
@@ -2188,7 +2188,7 @@
},
{
"cell_type": "markdown",
- "id": "9146b9b5",
+ "id": "6959c893",
"metadata": {},
"source": [
"Now we are ready to go. The final step is to supply training data, and fit the model."
@@ -2197,7 +2197,7 @@
{
"cell_type": "code",
"execution_count": 42,
- "id": "4a5e941d",
+ "id": "cf8e3d9d",
"metadata": {
"lines_to_next_cell": 0
},
@@ -2239,7 +2239,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "23f1384f37824cc59404e8a856f4962d",
+ "model_id": "2c7fc7b3fc61455b88cf7020ce62d19e",
"version_major": 2,
"version_minor": 0
},
@@ -2689,7 +2689,7 @@
},
{
"cell_type": "markdown",
- "id": "8099bdc9",
+ "id": "cc8724fa",
"metadata": {},
"source": [
"We have suppressed the output here, which is a progress report on the\n",
@@ -2707,7 +2707,7 @@
},
{
"cell_type": "markdown",
- "id": "d6c3bbbc",
+ "id": "b9dc38ac",
"metadata": {},
"source": [
"`SimpleModule.classification()` includes\n",
@@ -2720,7 +2720,7 @@
{
"cell_type": "code",
"execution_count": 43,
- "id": "603a278a",
+ "id": "45e03385",
"metadata": {
"lines_to_next_cell": 0
},
@@ -2750,7 +2750,7 @@
},
{
"cell_type": "markdown",
- "id": "654cec05",
+ "id": "1679f357",
"metadata": {},
"source": [
"Once again we evaluate the accuracy using the `test()` method of our trainer. This model achieves\n",
@@ -2760,13 +2760,13 @@
{
"cell_type": "code",
"execution_count": 44,
- "id": "93dc968b",
+ "id": "3a875b78",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "3eeaa8a87a31475bb36fe8dd24e694d9",
+ "model_id": "759de3284ee24f5c8191c1fc922f3e1d",
"version_major": 2,
"version_minor": 0
},
@@ -2820,7 +2820,7 @@
},
{
"cell_type": "markdown",
- "id": "5f7dc344",
+ "id": "12ef4787",
"metadata": {},
"source": [
"Table 10.1 also reports the error rates resulting from LDA (Chapter 4) and multiclass logistic\n",
@@ -2834,7 +2834,7 @@
{
"cell_type": "code",
"execution_count": 45,
- "id": "e1975a3e",
+ "id": "2f035d83",
"metadata": {},
"outputs": [],
"source": [
@@ -2855,7 +2855,7 @@
{
"cell_type": "code",
"execution_count": 46,
- "id": "14c79199",
+ "id": "2cd67ad8",
"metadata": {
"lines_to_next_cell": 0
},
@@ -2899,7 +2899,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "9ecb4b2d1cba45a9b762950d7ad365e4",
+ "model_id": "c932821add0e4296a5ff2122a94b6090",
"version_major": 2,
"version_minor": 0
},
@@ -3347,7 +3347,7 @@
},
{
"cell_type": "markdown",
- "id": "f84cfa36",
+ "id": "20a316a1",
"metadata": {},
"source": [
"We fit the model just as before and compute the test results."
@@ -3356,7 +3356,7 @@
{
"cell_type": "code",
"execution_count": 47,
- "id": "acb6f88d",
+ "id": "3900d16e",
"metadata": {
"lines_to_next_cell": 0
},
@@ -3364,7 +3364,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "96180813745947aa8b3705fa737d63a0",
+ "model_id": "63d666ec843544bf804c3fc6fc5fd6ab",
"version_major": 2,
"version_minor": 0
},
@@ -3418,7 +3418,7 @@
},
{
"cell_type": "markdown",
- "id": "05244a5e",
+ "id": "ca80aa75",
"metadata": {},
"source": [
"The accuracy is above 90% even for this pretty simple model.\n",
@@ -3430,7 +3430,7 @@
{
"cell_type": "code",
"execution_count": 48,
- "id": "f5b3f811",
+ "id": "679f2ea5",
"metadata": {
"lines_to_next_cell": 2
},
@@ -3450,7 +3450,7 @@
},
{
"cell_type": "markdown",
- "id": "b5b395bb",
+ "id": "dd8ba586",
"metadata": {},
"source": [
"## Convolutional Neural Networks\n",
@@ -3461,7 +3461,7 @@
{
"cell_type": "code",
"execution_count": 49,
- "id": "e1caa7ac",
+ "id": "e4af6604",
"metadata": {},
"outputs": [
{
@@ -3484,7 +3484,7 @@
{
"cell_type": "code",
"execution_count": 50,
- "id": "9e94a7b4",
+ "id": "2b613ecc",
"metadata": {},
"outputs": [],
"source": [
@@ -3501,7 +3501,7 @@
},
{
"cell_type": "markdown",
- "id": "219ccc6f",
+ "id": "af1d3cdc",
"metadata": {},
"source": [
"The `CIFAR100` dataset consists of 50,000 training images, each represented by a three-dimensional tensor:\n",
@@ -3515,7 +3515,7 @@
{
"cell_type": "code",
"execution_count": 51,
- "id": "32c78c06",
+ "id": "4b325cb4",
"metadata": {
"lines_to_next_cell": 0
},
@@ -3530,7 +3530,7 @@
},
{
"cell_type": "markdown",
- "id": "e4570164",
+ "id": "f361276e",
"metadata": {},
"source": [
"We again look at the shape of typical batches in our data loaders."
@@ -3539,7 +3539,7 @@
{
"cell_type": "code",
"execution_count": 52,
- "id": "b3c27322",
+ "id": "cb3d00cb",
"metadata": {
"lines_to_next_cell": 2
},
@@ -3565,11 +3565,11 @@
},
{
"cell_type": "markdown",
- "id": "f6152280",
+ "id": "08771862",
"metadata": {},
"source": [
"Before we start, we look at some of the training images; similar code produced\n",
- "Figure 10.5 on page 164. The example below also illustrates\n",
+ "Figure 10.5 on page 447. The example below also illustrates\n",
"that `TensorDataset` objects can be indexed with integers --- we are choosing\n",
"random images from the training data by indexing `cifar_train`. In order to display correctly,\n",
"we must reorder the dimensions by a call to `np.transpose()`."
@@ -3578,7 +3578,7 @@
{
"cell_type": "code",
"execution_count": 53,
- "id": "c626e0ff",
+ "id": "60d09656",
"metadata": {
"lines_to_next_cell": 0
},
@@ -3611,7 +3611,7 @@
},
{
"cell_type": "markdown",
- "id": "2a1c4832",
+ "id": "642140af",
"metadata": {},
"source": [
"Here the `imshow()` method recognizes from the shape of its argument that it is a 3-dimensional array, with the last dimension indexing the three RGB color channels.\n",
@@ -3628,7 +3628,7 @@
{
"cell_type": "code",
"execution_count": 54,
- "id": "9d5bcdf3",
+ "id": "f823da11",
"metadata": {},
"outputs": [],
"source": [
@@ -3652,7 +3652,7 @@
},
{
"cell_type": "markdown",
- "id": "a7204121",
+ "id": "00927159",
"metadata": {},
"source": [
"Notice that we used the `padding = \"same\"` argument to\n",
@@ -3673,7 +3673,7 @@
{
"cell_type": "code",
"execution_count": 55,
- "id": "3e13e9bc",
+ "id": "1a172f7e",
"metadata": {},
"outputs": [],
"source": [
@@ -3700,7 +3700,7 @@
},
{
"cell_type": "markdown",
- "id": "1b07fb1a",
+ "id": "8455079f",
"metadata": {},
"source": [
"We build the model and look at the summary. (We had created examples of `X_` earlier.)"
@@ -3709,7 +3709,7 @@
{
"cell_type": "code",
"execution_count": 56,
- "id": "15c4a382",
+ "id": "651e62b4",
"metadata": {
"lines_to_next_cell": 2
},
@@ -3772,7 +3772,7 @@
},
{
"cell_type": "markdown",
- "id": "b168c198",
+ "id": "7dd67ce7",
"metadata": {},
"source": [
"The total number of trainable parameters is 964,516.\n",
@@ -3806,7 +3806,7 @@
{
"cell_type": "code",
"execution_count": 57,
- "id": "4a40238a",
+ "id": "63f2650e",
"metadata": {},
"outputs": [],
"source": [
@@ -3820,7 +3820,7 @@
{
"cell_type": "code",
"execution_count": 58,
- "id": "8aab2c62",
+ "id": "a3e4bc28",
"metadata": {},
"outputs": [
{
@@ -3860,7 +3860,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8473f6db1fdc40b7909b66fc6410277d",
+ "model_id": "40c811fa26da4690a95838e6ab0a8a98",
"version_major": 2,
"version_minor": 0
},
@@ -4310,7 +4310,7 @@
},
{
"cell_type": "markdown",
- "id": "090f6400",
+ "id": "c3fc9402",
"metadata": {},
"source": [
"This model can take 10 minutes or more to run and achieves about 42% accuracy on the test\n",
@@ -4326,7 +4326,7 @@
{
"cell_type": "code",
"execution_count": 59,
- "id": "12474ef6",
+ "id": "6b161d93",
"metadata": {
"lines_to_next_cell": 0
},
@@ -4357,7 +4357,7 @@
},
{
"cell_type": "markdown",
- "id": "f3fe0cd4",
+ "id": "71dea0c8",
"metadata": {},
"source": [
"Finally, we evaluate our model on our test data."
@@ -4366,7 +4366,7 @@
{
"cell_type": "code",
"execution_count": 60,
- "id": "9d632437",
+ "id": "ab8a91dc",
"metadata": {
"lines_to_next_cell": 2
},
@@ -4374,7 +4374,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fc46f12820ff4ca281d8a035a53fa610",
+ "model_id": "6dced9ab160c4c30b094a877f330efba",
"version_major": 2,
"version_minor": 0
},
@@ -4428,7 +4428,7 @@
},
{
"cell_type": "markdown",
- "id": "4b69e259",
+ "id": "11d0e8b3",
"metadata": {},
"source": [
"### Hardware Acceleration\n",
@@ -4449,7 +4449,7 @@
{
"cell_type": "code",
"execution_count": 61,
- "id": "52a43158",
+ "id": "6d9962ae",
"metadata": {
"lines_to_next_cell": 0
},
@@ -4491,7 +4491,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "efb32ed16b3946ebbdb7c6a1714c7347",
+ "model_id": "6409051044c94ad9af785a42df78d36e",
"version_major": 2,
"version_minor": 0
},
@@ -4940,7 +4940,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ae6af1d96e5a4d1fa048bbbf0a3f5b7b",
+ "model_id": "4f37d3b614314b6fbf9dfb3df1775948",
"version_major": 2,
"version_minor": 0
},
@@ -4969,7 +4969,7 @@
},
{
"cell_type": "markdown",
- "id": "b72de871",
+ "id": "3faab186",
"metadata": {},
"source": [
"This yields approximately two- or three-fold acceleration for each epoch.\n",
@@ -4979,7 +4979,7 @@
},
{
"cell_type": "markdown",
- "id": "b86d6ef4",
+ "id": "31759785",
"metadata": {},
"source": [
"## Using Pretrained CNN Models\n",
@@ -5001,7 +5001,7 @@
{
"cell_type": "code",
"execution_count": 62,
- "id": "db2febe9",
+ "id": "a71c9acb",
"metadata": {
"lines_to_next_cell": 2
},
@@ -5031,7 +5031,7 @@
},
{
"cell_type": "markdown",
- "id": "f6696ee2",
+ "id": "89071e87",
"metadata": {},
"source": [
"We now set up the trained network with the weights we read in code block~6. The model has 50 layers, with a fair bit of complexity."
@@ -5040,7 +5040,7 @@
{
"cell_type": "code",
"execution_count": 63,
- "id": "2aabd724",
+ "id": "4f890244",
"metadata": {
"lines_to_next_cell": 0
},
@@ -5255,7 +5255,7 @@
},
{
"cell_type": "markdown",
- "id": "c4ee6ebe",
+ "id": "185bb4b5",
"metadata": {},
"source": [
"We set the mode to `eval()` to ensure that the model is ready to predict on new data."
@@ -5264,7 +5264,7 @@
{
"cell_type": "code",
"execution_count": 64,
- "id": "6d27342d",
+ "id": "c4be9922",
"metadata": {
"lines_to_next_cell": 0
},
@@ -5461,7 +5461,7 @@
},
{
"cell_type": "markdown",
- "id": "3c1fbc71",
+ "id": "f0a3c519",
"metadata": {},
"source": [
"Inspecting the output above, we see that when setting up the\n",
@@ -5474,7 +5474,7 @@
{
"cell_type": "code",
"execution_count": 65,
- "id": "efdbeda1",
+ "id": "2dc63d85",
"metadata": {},
"outputs": [],
"source": [
@@ -5483,7 +5483,7 @@
},
{
"cell_type": "markdown",
- "id": "38620865",
+ "id": "15ec1321",
"metadata": {},
"source": [
"Let’s look at the predicted probabilities for each of the top 3 choices. First we compute\n",
@@ -5495,7 +5495,7 @@
{
"cell_type": "code",
"execution_count": 66,
- "id": "82ceab1c",
+ "id": "711d5ba7",
"metadata": {},
"outputs": [],
"source": [
@@ -5505,7 +5505,7 @@
},
{
"cell_type": "markdown",
- "id": "0e3ae755",
+ "id": "3b514c1e",
"metadata": {},
"source": [
"In order to see the class labels, we must download the index file associated with `imagenet`. {This is avalable from the book website and [s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json](https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json).}"
@@ -5514,7 +5514,7 @@
{
"cell_type": "code",
"execution_count": 67,
- "id": "921ee168",
+ "id": "b22f70d8",
"metadata": {},
"outputs": [],
"source": [
@@ -5528,7 +5528,7 @@
},
{
"cell_type": "markdown",
- "id": "9fdd7587",
+ "id": "a5812782",
"metadata": {},
"source": [
"We’ll now construct a data frame for each image file\n",
@@ -5539,7 +5539,7 @@
{
"cell_type": "code",
"execution_count": 68,
- "id": "e7770017",
+ "id": "b19c6bd1",
"metadata": {
"lines_to_next_cell": 2
},
@@ -5592,7 +5592,7 @@
},
{
"cell_type": "markdown",
- "id": "12862208",
+ "id": "cd6bd40b",
"metadata": {},
"source": [
"We see that the model\n",
@@ -5605,7 +5605,7 @@
{
"cell_type": "code",
"execution_count": 69,
- "id": "af2f9856",
+ "id": "ba80b615",
"metadata": {
"lines_to_next_cell": 2
},
@@ -5622,7 +5622,7 @@
},
{
"cell_type": "markdown",
- "id": "d9e8d59c",
+ "id": "2e6eafaf",
"metadata": {},
"source": [
"## IMDB Document Classification\n",
@@ -5649,7 +5649,7 @@
{
"cell_type": "code",
"execution_count": 70,
- "id": "afd98123",
+ "id": "ba6d2d2c",
"metadata": {
"lines_to_next_cell": 0
},
@@ -5676,7 +5676,7 @@
},
{
"cell_type": "markdown",
- "id": "28a01855",
+ "id": "ebeeb069",
"metadata": {},
"source": [
"The datasets `imdb_seq_train` and `imdb_seq_test` are\n",
@@ -5694,7 +5694,7 @@
{
"cell_type": "code",
"execution_count": 71,
- "id": "5981eb05",
+ "id": "93bda908",
"metadata": {},
"outputs": [
{
@@ -5715,7 +5715,7 @@
},
{
"cell_type": "markdown",
- "id": "b579cb29",
+ "id": "6de86e76",
"metadata": {},
"source": [
"For our first model, we have created a binary feature for each\n",
@@ -5728,7 +5728,7 @@
{
"cell_type": "code",
"execution_count": 72,
- "id": "f08024ba",
+ "id": "40943b7d",
"metadata": {
"lines_to_next_cell": 0
},
@@ -5746,7 +5746,7 @@
},
{
"cell_type": "markdown",
- "id": "c070a319",
+ "id": "9328d75c",
"metadata": {},
"source": [
"We’ll use a two-layer model for our first model."
@@ -5755,7 +5755,7 @@
{
"cell_type": "code",
"execution_count": 73,
- "id": "7fd34906",
+ "id": "2117fd9f",
"metadata": {
"lines_to_next_cell": 0
},
@@ -5783,7 +5783,7 @@
},
{
"cell_type": "markdown",
- "id": "fcc2a8af",
+ "id": "845b4d8e",
"metadata": {},
"source": [
"We now instantiate our model and look at a summary."
@@ -5792,7 +5792,7 @@
{
"cell_type": "code",
"execution_count": 74,
- "id": "56f74fdb",
+ "id": "66d0b710",
"metadata": {},
"outputs": [
{
@@ -5836,7 +5836,7 @@
},
{
"cell_type": "markdown",
- "id": "a32aca43",
+ "id": "c8bdad40",
"metadata": {},
"source": [
"We’ll again use\n",
@@ -5854,7 +5854,7 @@
{
"cell_type": "code",
"execution_count": 75,
- "id": "3da7e0bc",
+ "id": "9df8b4cf",
"metadata": {},
"outputs": [],
"source": [
@@ -5866,7 +5866,7 @@
},
{
"cell_type": "markdown",
- "id": "940c8342",
+ "id": "95cc3b4f",
"metadata": {},
"source": [
"Having loaded the datasets into a data module\n",
@@ -5877,7 +5877,7 @@
{
"cell_type": "code",
"execution_count": 76,
- "id": "3b6de185",
+ "id": "73684c66",
"metadata": {},
"outputs": [
{
@@ -5925,7 +5925,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "57e25e1e102745c18849507d8fe93fe3",
+ "model_id": "253cf3e077d845569cdc459ef74902b6",
"version_major": 2,
"version_minor": 0
},
@@ -6376,7 +6376,7 @@
},
{
"cell_type": "markdown",
- "id": "5985c44a",
+ "id": "f2e03c88",
"metadata": {},
"source": [
"Evaluating the test error yields roughly 86% accuracy."
@@ -6385,7 +6385,7 @@
{
"cell_type": "code",
"execution_count": 77,
- "id": "97f86a32",
+ "id": "01c6e5ff",
"metadata": {
"lines_to_next_cell": 2
},
@@ -6393,7 +6393,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "57a8b619aaf049b4b06550a47d5e3611",
+ "model_id": "f2b40a42021f4a9183c3d7d2d545e83b",
"version_major": 2,
"version_minor": 0
},
@@ -6447,7 +6447,7 @@
},
{
"cell_type": "markdown",
- "id": "3d677b24",
+ "id": "c1976042",
"metadata": {},
"source": [
"### Comparison to Lasso\n",
@@ -6460,7 +6460,7 @@
{
"cell_type": "code",
"execution_count": 78,
- "id": "e36e1542",
+ "id": "4d5b9d1d",
"metadata": {},
"outputs": [],
"source": [
@@ -6473,7 +6473,7 @@
},
{
"cell_type": "markdown",
- "id": "8216f2e7",
+ "id": "b78eb64e",
"metadata": {},
"source": [
"Similar to what we did in\n",
@@ -6484,7 +6484,7 @@
{
"cell_type": "code",
"execution_count": 79,
- "id": "ee6d6859",
+ "id": "e2a88e57",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6497,7 +6497,7 @@
},
{
"cell_type": "markdown",
- "id": "cf9b703f",
+ "id": "81380bee",
"metadata": {},
"source": [
"With `LogisticRegression()` the regularization parameter\n",
@@ -6509,7 +6509,7 @@
{
"cell_type": "code",
"execution_count": 80,
- "id": "35a6e3c2",
+ "id": "9a3cf7a3",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6524,7 +6524,7 @@
},
{
"cell_type": "markdown",
- "id": "49cec308",
+ "id": "9ee15d44",
"metadata": {},
"source": [
"The path of 50 values takes approximately 40 seconds to run."
@@ -6533,7 +6533,7 @@
{
"cell_type": "code",
"execution_count": 81,
- "id": "a8943a6a",
+ "id": "b46f02c2",
"metadata": {},
"outputs": [],
"source": [
@@ -6549,7 +6549,7 @@
},
{
"cell_type": "markdown",
- "id": "4f20738d",
+ "id": "eb3e3871",
"metadata": {},
"source": [
"The coefficient and intercepts have an extraneous dimension which can be removed\n",
@@ -6559,7 +6559,7 @@
{
"cell_type": "code",
"execution_count": 82,
- "id": "08268ae5",
+ "id": "e5fb6afa",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6571,7 +6571,7 @@
},
{
"cell_type": "markdown",
- "id": "94991ca8",
+ "id": "f66fa37c",
"metadata": {},
"source": [
"We’ll now make a plot to compare our neural network results with the\n",
@@ -6581,7 +6581,7 @@
{
"cell_type": "code",
"execution_count": 83,
- "id": "e98f4506",
+ "id": "cad28f1a",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6613,7 +6613,7 @@
},
{
"cell_type": "markdown",
- "id": "aac5c38c",
+ "id": "c58ff7cb",
"metadata": {},
"source": [
"Notice the use of `%%capture`, which suppresses the displaying of the partially completed figure. This is useful\n",
@@ -6624,7 +6624,7 @@
{
"cell_type": "code",
"execution_count": 84,
- "id": "6925d53a",
+ "id": "a66ecdd8",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6660,7 +6660,7 @@
},
{
"cell_type": "markdown",
- "id": "2a8b7736",
+ "id": "fa1e2550",
"metadata": {},
"source": [
"From the graphs we see that the accuracy of the lasso logistic regression peaks at about $0.88$, as it does for the neural network.\n",
@@ -6671,7 +6671,7 @@
{
"cell_type": "code",
"execution_count": 85,
- "id": "6d1f7885",
+ "id": "62440c1c",
"metadata": {
"lines_to_next_cell": 2
},
@@ -6687,7 +6687,7 @@
},
{
"cell_type": "markdown",
- "id": "4f79c23a",
+ "id": "fe67520f",
"metadata": {},
"source": [
"## Recurrent Neural Networks\n",
@@ -6697,7 +6697,7 @@
},
{
"cell_type": "markdown",
- "id": "3d376496",
+ "id": "a9bcdd2a",
"metadata": {},
"source": [
"### Sequential Models for Document Classification\n",
@@ -6717,7 +6717,7 @@
{
"cell_type": "code",
"execution_count": 86,
- "id": "b5c2b72c",
+ "id": "c73d6e28",
"metadata": {},
"outputs": [],
"source": [
@@ -6731,7 +6731,7 @@
},
{
"cell_type": "markdown",
- "id": "4d1b3ef1",
+ "id": "1edd3143",
"metadata": {},
"source": [
"The first layer of the RNN is an embedding layer of size 32, which will be\n",
@@ -6748,7 +6748,7 @@
},
{
"cell_type": "markdown",
- "id": "fe55c7fa",
+ "id": "b73e08ab",
"metadata": {},
"source": [
"The second layer is an LSTM with 32 units, and the output\n",
@@ -6760,7 +6760,7 @@
{
"cell_type": "code",
"execution_count": 87,
- "id": "8985cdb1",
+ "id": "cc9bbd00",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6781,7 +6781,7 @@
},
{
"cell_type": "markdown",
- "id": "78fc988d",
+ "id": "5e9f28dd",
"metadata": {},
"source": [
"We instantiate and take a look at the summary of the model, using the\n",
@@ -6791,7 +6791,7 @@
{
"cell_type": "code",
"execution_count": 88,
- "id": "79184187",
+ "id": "5c9ffb46",
"metadata": {},
"outputs": [
{
@@ -6833,7 +6833,7 @@
},
{
"cell_type": "markdown",
- "id": "d5b2c85e",
+ "id": "5087ff10",
"metadata": {},
"source": [
"The 10,003 is suppressed in the summary, but we see it in the\n",
@@ -6843,7 +6843,7 @@
{
"cell_type": "code",
"execution_count": 89,
- "id": "29036a47",
+ "id": "a2d6ddfd",
"metadata": {},
"outputs": [],
"source": [
@@ -6854,7 +6854,7 @@
{
"cell_type": "code",
"execution_count": 90,
- "id": "0a31576a",
+ "id": "1d76f970",
"metadata": {
"lines_to_next_cell": 0
},
@@ -6896,7 +6896,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4abe857cc251478b8855f53164fa5b45",
+ "model_id": "e24a4171456b412db47d6577cb336c37",
"version_major": 2,
"version_minor": 0
},
@@ -7206,7 +7206,7 @@
},
{
"cell_type": "markdown",
- "id": "a20a2113",
+ "id": "1cbf1b42",
"metadata": {},
"source": [
"The rest is now similar to other networks we have fit. We\n",
@@ -7216,13 +7216,13 @@
{
"cell_type": "code",
"execution_count": 91,
- "id": "b2602a79",
+ "id": "d8a60d35",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1648bfd17bc04050b412c36afb32e092",
+ "model_id": "4e512ef8a7d348eea7f423a9ed96c86e",
"version_major": 2,
"version_minor": 0
},
@@ -7240,8 +7240,8 @@
"┃ Runningstage.testing ┃ ┃\n",
"┃ metric ┃ DataLoader 0 ┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
- "│ test_accuracy │ 0.8388800024986267 │\n",
- "│ test_loss │ 0.8145671486854553 │\n",
+ "│ test_accuracy │ 0.8480799794197083 │\n",
+ "│ test_loss │ 0.7677657604217529 │\n",
"└───────────────────────────┴───────────────────────────┘\n",
"\n"
],
@@ -7250,8 +7250,8 @@
"┃\u001b[1m \u001b[0m\u001b[1m Runningstage.testing \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\n",
"┃\u001b[1m \u001b[0m\u001b[1m metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
- "│\u001b[36m \u001b[0m\u001b[36m test_accuracy \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8388800024986267 \u001b[0m\u001b[35m \u001b[0m│\n",
- "│\u001b[36m \u001b[0m\u001b[36m test_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8145671486854553 \u001b[0m\u001b[35m \u001b[0m│\n",
+ "│\u001b[36m \u001b[0m\u001b[36m test_accuracy \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8480799794197083 \u001b[0m\u001b[35m \u001b[0m│\n",
+ "│\u001b[36m \u001b[0m\u001b[36m test_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7677657604217529 \u001b[0m\u001b[35m \u001b[0m│\n",
"└───────────────────────────┴───────────────────────────┘\n"
]
},
@@ -7261,7 +7261,7 @@
{
"data": {
"text/plain": [
- "[{'test_loss': 0.8145671486854553, 'test_accuracy': 0.8388800024986267}]"
+ "[{'test_loss': 0.7677657604217529, 'test_accuracy': 0.8480799794197083}]"
]
},
"execution_count": 91,
@@ -7275,7 +7275,7 @@
},
{
"cell_type": "markdown",
- "id": "54857d49",
+ "id": "deca21cd",
"metadata": {},
"source": [
"We once again show the learning progress, followed by cleanup."
@@ -7284,7 +7284,7 @@
{
"cell_type": "code",
"execution_count": 92,
- "id": "32c3e3da",
+ "id": "65d7276c",
"metadata": {
"lines_to_next_cell": 2
},
@@ -7301,7 +7301,7 @@
},
{
"data": {
- "image/png": "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CxQREaFXXnlFN910k84//3yNGjXqnMevqalRamqqoqKi9P7776u8vNyj/0idLl26aO3aterdu7f27NmjOXPmqEuXLvr1r3+tqVOn6uOPP9aWLVv0+uuvS5IiG3gfKisrlZKSoqSkJH3wwQc6dOiQbrvtNs2bN88jZOXl5SkmJkZ5eXnav3+/pk6dqmHDhmnOnDnnfD3wrYKCggavytVxuVwqKipSQUEBw2yBNo4rIa3ELbfcoi+++EJvvvmme9uaNWs0ZcoU9e3bV/fcc4+GDRum/v37684779S4ceP04osvNunYr7/+uj799FM9++yzSkhI0JVXXqlly5bV22/RokW6/PLLFR8frwkTJuiee+5xP0fHjh3VuXNntWvXTtHR0YqOjlbHjh3rHWPdunU6ceKEnn32WV1yySW66qqr9NRTT+m5555TWVmZe79u3brpqaee0kUXXaSf/vSn+slPfqLc3Fxv3zb4gC9XuwXQunAl5FzCw2uvSDTFW29J48efe79XX5WuvLJpz91EF110kS6//HI988wzGj16tPbv36+CggItXbpUTqdTy5Yt04svvqji4mJVV1erqqqqyX0+9u7dq7i4OPXu3du9LSkpqd5+GzZs0BNPPKEvvvhCx44d0w8//OD1Akd79+5VQkKCOp12BeiKK65QTU2N9u3bp6ioKEnSxRdf7DFDZkxMjPbs2ePVc8E3fLnaLYDWhSsh52Kz1TaJNOV27bWSw1H7mMaOFRdXu19TjtfYcRpx66236qWXXtLRo0e1Zs0anX/++fqv//ovPfroo8rKytKCBQuUl5enXbt2KSUlRdXV1Ra8QbW2bdumGTNmaPz48fr73/+uDz/8UPfdd5+lz3G69u3be9y32WyqqanxyXPBO8nJyXI4HO5mwTPZbDbFxcUpOTnZz5UBCDSEECvZ7VJWVu3fz/wPuO5+Zmbtfj5w/fXXKyQkROvWrdOzzz6rW265RTabTe+8844mTpyoG2+8UQkJCerfv78+++yzJh930KBBKioq8rh8/t5773ns8+6776pv37667777NGLECA0YMEAHDhzw2Cc0NPScnREHDRqk3bt3q7Ky0r3tnXfeUUhIiAYOHNjkmmFO3Wq3kuoFEatWuwXQOhBCrJaaKmVnS7GxntsdjtrtFqzy2ZjOnTtr6tSpWrhwoUpKSnTzzTdLkgYMGKCt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NpslNVVUVCguLk5FRUWKiIiw5JjwDz674MVnF7z47IJXeXm5+vTpo+7du1tyPKMhpGfPnrLb7SorK/PYXlZWpujo6CYdo3379rr00ku1f//+Bn8eFhamsLAwj21du3ZtVr3nEhERwRcqSPHZBS8+u+DFZxe8QkKs6VJqtGNqaGiohg8frtzcXPe2mpoa5ebmelztOBun06k9e/YoJibGV2UCAAAfMN4ck5GRoVmzZmnEiBEaNWqUMjMzVVlZqdmzZ0uSZs6cqdjYWC1fvlyStHTpUv3oRz/SBRdcoCNHjujRRx/VgQMHdNttt5l8GQAAwEvGQ8jUqVP17bff6v7771dpaamGDRumLVu2uDurHjx40OOyz3/+8x/NmTNHpaWl6tatm4YPH653331XgwcPNvUSFBYWpiVLltRr9kHg47MLXnx2wYvPLnhZ/dnZXFaNswEAAPCC8cnKAABA20QIAQAARhBCAACAEYQQAABgBCHEAitXrlR8fLw6dOigxMREbd++3XRJOIcHHnhANpvN43bRRReZLgsNeOuttzRhwgT17t1bNptNmzdv9vi5y+XS/fffr5iYGHXs2FFjx47V559/bqZYeDjXZ3fzzTfX+x6OGzfOTLHwsHz5co0cOVJdunRRr169NGnSJO3bt89jnxMnTmju3Lnq0aOHOnfurClTptSbfPRcCCEttGHDBmVkZGjJkiXauXOnEhISlJKSokOHDpkuDedw8cUXq6SkxH17++23TZeEBlRWViohIUErV65s8OePPPKInnjiCa1atUrvv/++OnXqpJSUFJ04ccLPleJM5/rsJGncuHEe38P169f7sUI05s0339TcuXP13nvvaevWrTp58qSuvfZaVVZWuve5++679T//8z/auHGj3nzzTX3zzTdKTU317olcaJFRo0a55s6d677vdDpdvXv3di1fvtxgVTiXJUuWuBISEkyXAS9Jcm3atMl9v6amxhUdHe169NFH3duOHDniCgsLc61fv95AhWjMmZ+dy+VyzZo1yzVx4kQj9cA7hw4dcklyvfnmmy6Xq/Z71r59e9fGjRvd++zdu9clybVt27YmH5crIS1QXV2tHTt2aOzYse5tISEhGjt2rLZt22awMjTF559/rt69e6t///6aMWOGDh48aLokeKmwsFClpaUe38HIyEglJibyHQwS+fn56tWrlwYO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",
+ "image/png": "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T6SFswghNmto3LP2V4QTE6VO/uCuWbNGDzzwgHbv3u1t69Spk/e/LcuSx+NRu3Znfut79uzpVx2hoaGKiYnx6z5Aa2L3D4iUlBTFx8efce5GSkpKk2u280gIf3os/HnMQJ1IC+cxHHMGlmWpoqKiUZeysjLdddddpx33zMzMVFlZWaP219g5wzExMd5LVFSUXC6X9/qnn36qzp0767XXXtOwYcMUFhamt99+W59//rkmTJig6OhoderUSSNGjNAbb7zhs99Th2NcLpf+93//V5MmTVJERIT69++vl19+2Xv7qcMxK1euVJcuXfT6669r4MCB6tSpk8aOHesTmk6cOKG77rpLXbp0Uffu3TV37lxlZGRo4sSJjXyHAHs4MQzh9NwNuznVY1EbxhrqtXW5XEpISGhWGENgIoScwdGjR9WpU6dGXaKiolRYWNjgvizL0oEDBxQVFdWo/dm5aut9992n//mf/9GuXbs0ePBglZeXa9y4ccrNzdWHH36osWPHavz48d6TBzZk8eLFuu666/TRRx9p3LhxuuGGG3T48OEGtz969Kgef/xxvfDCC9q0aZP27dune+65x3v7r371K/35z3/WihUr9M4776isrEzr16+362kjSNk958rJiZOBdAipUz0WgRbG0IJsOQNNADndyXeOHTtmffLJJ9axY8e8beXl5Y062ZATl/Lycr+f34oVK6yoqCjv9dqTJa1fv/6M973gggusp556ynu9T58+1pNPPum9LslasGBBndfmtdde83msf//7395aJFl79uzx3mfZsmVWdHS093p0dLT12GOPea+fOHHCOuuss6wJEyY09ik3Sn3vLQKTEydtc/JEaLVOnDhh5eXlWatWrbLy8vKafSIxJzh9ErT63ruEhIQ2c8K9YGD3CeyYE3IGERERKi8vb9S2mzZt0rhx48643auvvqof/vCHjXpsuwwfPtznenl5uR588EG98sorKioq0okTJ3Ts2LEz9oQMHjzY+98dO3ZUZGSkDh482OD2EREROvvss73XY2NjvduXlpaqpKREI0eO9N7udrs1bNgwVVdX+/X80DY4NeeqJSZOBsIqlk6vQOrkKqEITISQM3C5XI0+QuTqq69u1CS0q6++usU/dKc+h3vuuUcbN27U448/rnPOOUfh4eFKT09XVVXVaffTvn17n+sul+u0gaG+7et7bYAzcerIDYmJkyerHT6qb4KuHec1CYQwhpbDnBAbBdK45zvvvKObb75ZkyZN0qBBgxQTE6Mvv/yyRWuIiopSdHS0PvjgA2+bx+PRtm3bWrQOBAYn15pg4qSvtLQ0ffnll8rLy9OqVauUl5envXv3tqr5KwgOhBCbBcoktP79+ysnJ0fbt2/Xjh07NHXqVCNDILNmzdKSJUv017/+Vbt371ZmZqb+/e9/c/Zi1OHkkEkg/YBoKaxAipZACHFAIPyKeOKJJ9S1a1ddeumlGj9+vFJTU3XxxRe3eB1z587VlClTNG3aNCUnJ6tTp05KTU3l/C6ooyUW/gqEHxBAMOEEdifhJGfmVVdXa+DAgbruuuv08MMP27Zf3tvA1xInbat9HCZOAvWz+wR2TEyFUV999ZX+/ve/6/LLL1dlZaWefvpp7d27V1OnTjVdGloZp4/cOPlxmDgJtAyGY2BUSEiIVq5cqREjRuiyyy7Tzp079cYbb2jgwIGmS0MrxJAJEFzoCYFRCQkJeuedd0yXAYc4MbTBWhNA8CCEAHCEk2eTZsgECA4MxwCwnRMngwMQfAghAGzl5MngAAQXQggAWzm5simA4EIIAWCrljgZHIDgQAgBYCtOBgegsQghTvF4pPx8afXqmn9b+fj3qFGjNHv2bO/1xMREZWVlnfY+LpdL69evb/Zj27UfNJ3H41F+fr5Wr16t/Pz8Zs3X4GRwABqLEOKEnBwpMVEaPVqaOrXm38TEmnYHjB8/XmPHjq33toKCArlcLn300Ud+7fODDz7Q7bffbkd5Xg8++KCGDh1ap72oqEjXXHONrY+FxsvJyVFiYqJGjx6tqVOnavTo0UpMTGzyESycDA5AYxFC7JaTI6WnS6dOzCssrGl3IIjccsst2rhxY72TAVesWKHhw4dr8ODBfu2zZ8+eioiIsKvE04qJiVFYWFiLPBZ8OXUoLSubAmgMQsiZWJZUUdG4S1mZdNddNfepbz+SlJlZs11j9tfIcwv++Mc/Vs+ePbVy5Uqf9vLycq1du1YTJ07UlClTFBcXp4iICA0aNEirV68+7T5PHY757LPP9MMf/lAdOnTQ+eefr40bN9a5z9y5c3XuuecqIiJC/fr108KFC3X8+HFJ0sqVK7V48WLt2LFDLpdLLpfLW++pwzE7d+7UFVdcofDwcHXv3l233367ysvLvbfffPPNmjhxoh5//HHFxsaqe/fumjFjhvexgpmdwyZOH0obCGeTBmAWK6aeydGjUqdO9uzLsmp6SKKiGrd9ebnUseMZN2vXrp2mTZumlStXav78+d4u77Vr18rj8ejGG2/U2rVrNXfuXEVGRuqVV17RTTfdpLPPPlsjR4484/6rq6uVlpam6Ohovf/++yotLfWZP1Krc+fOWrlypXr37q2dO3fqtttuU+fOnXXvvfdq8uTJ+vjjj7Vhwwa98cYbkqSoel6HiooKpaamKjk5WR988IEOHjyoW2+9VTNnzvQJWXl5eYqNjVVeXp727NmjyZMna+jQobrtttvO+HwCld0rkPpzKG1TVydlZVMAp2W1MaWlpZYkq7S0tM5tx44dsz755BPr2LFj/2ksL7esmvjQ8pfy8kY/r127dlmSrLy8PG9bSkqKdeONN9a7/Y9+9CPrv//7v73XL7/8ciszM9N7vU+fPtaTTz5pWZZlvf7661a7du2swsJC7+2vvfaaJclat25dgzU99thj1rBhw7zXFy1aZA0ZMqTOdifv57nnnrO6du1qlZ/03F955RUrJCTEKi4utizLsjIyMqw+ffpYJ06c8G7z05/+1Jo8eXKDtdT73gaQl156yXK5XJYkn4vL5bJcLpf10ksv+b3PVatW1dlffZdVq1Y58IwABKLTfYc2BcMxZxIRUdMj0ZjLq682bp+vvtq4/fkxJ+O8887TpZdequeff16StGfPHhUUFOiWW26Rx+PRww8/rEGDBqlbt27q1KmTXn/9de3bt69R+961a5cSEhLUu3dvb1tycnKd7dasWaPLLrtMMTEx6tSpkxYsWNDoxzj5sYYMGaKOJ/UAXXbZZaqurtbu3bu9bRdccIHPxMbY2FgdPHjQr8cKFE4Nm3AoLQDTCCFn4nLVDIk05nL11VJ8fM19GtpXQkLNdo3ZX0P7acAtt9yil156Sd9++61WrFihs88+W5dffrkee+wxLV26VHPnzlVeXp62b9+u1NRUVVVV2fAC1di8ebNuuOEGjRs3Tn/729/04Ycfav78+bY+xsnat2/vc93lcqm6utqRxzLNqRVIOZQWgGmEEDu53dL3hybWCRC117OyarZzwHXXXaeQkBCtWrVKf/zjH/Vf//VfcrlceueddzRhwgTdeOONGjJkiPr166d//vOfjd7vwIEDtX//fp8VLt977z2fbd5991316dNH8+fP1/Dhw9W/f3999dVXPtuEhoae8df6wIEDtWPHDlVUVHjb3nnnHYWEhGjAgAGNrjmYOLUCKYfSAjCNEGK3tDQpO1s65dBExcfXtDt4ZECnTp00efJkzZs3T0VFRbr55pslSf3799fGjRv17rvvateuXfrZz36mkpKSRu93zJgxOvfcc5WRkaEdO3aooKBA8+fP99mmf//+2rdvn1588UV9/vnn+s1vfqN169b5bJOYmKi9e/dq+/btOnTokCorK+s81g033KAOHTooIyNDH3/8sfLy8jRr1izddNNNio6O9v9FCQJODptwKC0AkwghTkhLk778UsrLk1atqvl3715HA0itW265Rf/+97+VmprqncOxYMECXXzxxUpNTdWoUaMUExOjiRMnNnqfISEhWrdunY4dO6aRI0fq1ltv1S9/+UufbX7yk5/o7rvv1syZMzV06FC9++67Wrhwoc821157rcaOHavRo0erZ8+e9R4mHBERoddff12HDx/WiBEjlJ6eriuvvFJPP/20/y9GkHB62IRDaQGY4rLqm+0WxMrKyhQVFaXS0lJFRkb63Pbdd99p79696tu3rzp06GCoQjgh0N/b2kXFJPlMUK0NJvRaAGgJp/sObQp6QoAAwLAJgGDEYmVAgEhLS9OECRNUUFCgoqIixcbGKiUlhYmjAAIWIQQIIKxACiCYMBwDAACMIITUo43N1W0TeE8BoPVhOOYktatwHj16VOHh4YargZ2OHj0qqe5Kq07xeDzM3QCAMyCEnMTtdqtLly7ec5BEREQ0uDYDAoNlWTp69KgOHjyoLl26tEgQsPtstwAQrAghp4iJiZGkoD0ZWlvVpUsX73vrpNr1PE4d/iksLFR6ejqH0wLASVisrAEej0fHjx9vwcrglPbt27dID4jH41FiYmKDJ5tzuVyKj4/X3r17GZoBEJDsXqyMnpAGuN1uvijgF3/OdsthtgDA0TGAbZw62y0ABCtCCGATJ892CwDBiBAC2MTps90CQLAhhAA2cbvdWrp0qSTVCSK117OysphrBADfI4SgzfJ4PMrPz9fq1auVn58vj8fT7H1ytlsAaDwO0UWb5PSCYqyYCiAY2f0dSghBm9PQgmK1Qyb0WABA/ez+DmU4Bm2Kx+NRZmZmvSe0q22bPXu2LUMzAIDTI4SgTfFnQTEAgLMIIWhTWFAMAFoPQgjaFBYUA4DWgxCCNoUFxQCg9SCEoE1hQTEAaD0IIWhzWFAMAFoH1glBm8WCYgDgH7u/Q9vZUBPgKKfCgtvt1qhRo5pfIACgSQghaNWcXl4dAGAOc0LQatUur37q4mKFhYVKT09XTk6OocoAAHYghKBVYnl1AAh+hBC0SiyvDgDBjxCCVonl1QEg+BFC0CqxvDoABD9CCFolllcHgOBHCEGrxPLqABD8CCFotVheHQCCG8u2o9VjeXUAaB1Yth1tDsurA0BwYjgGAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhhPIQsW7ZMiYmJ6tChg5KSkrRly5YGtz1+/LgeeughnX322erQoYOGDBmiDRs2tGC1AADALkZDyJo1azRnzhwtWrRI27Zt05AhQ5SamqqDBw/Wu/2CBQv0u9/9Tk899ZQ++eQT3XHHHZo0aZI+/PDDFq4cAAA0l9HFypKSkjRixAg9/fTTkqTq6molJCRo1qxZuu++++ps37t3b82fP18zZszwtl177bUKDw/Xn/70p0Y9JouVOYdFxQAguNn9HWqsJ6Sqqkpbt27VmDFj/lNMSIjGjBmjzZs313ufyspKdejQwactPDxcb7/9doOPU1lZqbKyMp8L7JeTk6PExESNHj1aU6dO1ejRo5WYmKicnBzTpQEAWiljIeTQoUPyeDyKjo72aY+OjlZxcXG990lNTdUTTzyhzz77TNXV1dq4caNycnJUVFTU4OMsWbJEUVFR3ktCQoKtzwM1ASQ9PV0HDhzwaS8sLFR6ejpBBABQL+MTU/2xdOlS9e/fX+edd55CQ0M1c+ZMTZ8+XSEhDT+NefPmqbS01HvZv39/C1Yc/DwejzIzM1XfqF5t2+zZs+XxeFq6NABAK2cshPTo0UNut1slJSU+7SUlJYqJian3Pj179tT69etVUVGhr776Sp9++qk6deqkfv36Nfg4YWFhioyM9LnAPgUFBXV6QE5mWZb279+vgoKCFqwKABAIjIWQ0NBQDRs2TLm5ud626upq5ebmKjk5+bT37dChg+Li4nTixAm99NJLmjBhgtPlogGnGwprynYAgLbD6Fl058yZo4yMDA0fPlwjR45UVlaWKioqNH36dEnStGnTFBcXpyVLlkiS3n//fRUWFmro0KEqLCzUgw8+qOrqat17770mn0abFhsba+t2AIC2w2gImTx5sr755hs98MADKi4u1tChQ7VhwwbvZNV9+/b5zPf47rvvtGDBAn3xxRfq1KmTxo0bpxdeeEFdunQx9AyQkpKi+Ph4FRYW1jsvxOVyKT4+XikpKQaqAwC0ZkbXCTGBdULsV3t0jCSfIOJyuSRJ2dnZSktLM1IbAMA+QbNOCIJHWlqasrOzFRcX59MeHx9PAAEANIieENiGFVMBILjZ/R1qdE4Igovb7daoUaNMlwEACBAMxwAAACMIIQAAwAhCCAAAMIIQAgAAjCCEAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwIh2pgtAy/N4PCooKFBRUZFiY2OVkpIit9ttuiwAQBtDCGljcnJylJmZqQMHDnjb4uPjtXTpUqWlpRmsDADQ1jAc04bk5OQoPT3dJ4BIUmFhodLT05WTk2OoMgBAW0QIaSM8Ho8yMzNlWVad22rbZs+eLY/H09KlAQDaKIZj2oiCgoI6PSAnsyxL+/fvV0FBgUaNGtVyhTWGxyMVFEhFRVJsrJSSIjGHxV5Ovca8dwBOgxDSRhQVFdm6XYvJyZEyM6WTA1R8vLR0qcQcFns49Rrz3gE4A4Zj2ojY2Fhbt2sROTlSerrvl5gkFRbWtDOHpfmceo157wA0gsuqb5JAECsrK1NUVJRKS0sVGRlpupwW4/F4lJiYqMLCwnrnhbhcLsXHx2vv3r2t43Bdj0dKTKz7JVbL5ar5Vb13L937TeXUa8x7BwQtu79D6QlpI9xut5YuXSqpJnCcrPZ6VlZW6wggUs08gtPMYZFlSfv312zXVB6PlJ8vrV5d829bm5Tr1GvcEu8dgKBACGlD0tLSlJ2drbi4OJ/2+Ph4ZWdnt651Qho7N6Wpc1hycmp+rY8eLU2dWvNvYmLbGiZw6jV2+r2TCJBAkGBiahuTlpamCRMmtP4VUxs7N6Upc1hq5yucOixVO18hO7ttTJx06jV28r2TmPAKBBHmhKB1qp1XUFhYNyxIzFewg9Ovsd37lRoOkLVDjG0lQAKGMCcEbYPbXfPLVvrPF0yt2utZWf5/iTFf4T+ceo2d2q/HU9MDUl+wqW2bPZuhGSCAEELQeqWl1fyyPWUOi+Ljm/6LtyXmK0iBM2fBidfYqf0SIIGgw5wQtG5padKECfatuun0fAUp8OYs2P0aO7XflgqQAFoMc0LQtjg5X0FizoKT8vNrjmI6k7w8qbWdeiAQseQ+6sGcEKA5nJqvIDFnwWkpKTUB8dT3rZbLJSUk1GyH5nHyEPZAGapEiyCEoO1xah4Ecxac5WSADGR2f6k7ueQ+6/PgFIQQtE1padKXX9Z03a9aVfPv3r3NGyphzoLznAqQgcruL3Une/M4nxDqwZwQwC4tMWeBcfoavA7OzD9y6v9h1ucJGswJAVorp+cs0JX9H253zZfglCk1/7a1Ly6neiyc6s1jqBINIITAPm19wpmTcxboysbJnPpSd+oQ9kAfqmzrf9scRAiBPfiVXsOJOQscdYNTOfWl7lRvXkusz+NUUOBvm6MIIWg+fqX7snvSK13ZOJVTX+pO9eYF6lAlf9scRwhpi+z8xcCv9PrZOWch0LuyA00gdL07+aXuRG9eIA5V8retRRBC2hq7fzHwK915LdGVjRqB0vXu9JopThzCHmhDlfxtaxGEkLbEiV8M/Ep3HiuFtgynu97t7mFxes0UJ45ACqShSv62tQhOYNdWnOkXg8tV84thwgT//tjwK915tb9609Nr3qeT38O2vFKonZz6fNRy6qSGTp180Em14cYOTgaFQP7bFkDr6NAT0lY49YuBX+ktg5VCneXkL2qne1ja8popTgaFlvjb5sT8o0AZUvweIaStcOoXA+fzaDlOjNOjhlOfDyY3OsvJoOD03zYnwkIAHs1DCGkrnPzFwK/0ltOWf/U6yanPB5MbndUSE3Sd+NvmRFgI0MDLuWPaitpzNxQW1v8/qR3nbgigcUjAh1Ofj9Wra37lnsmqVTXBEk1T35ybhISaAGLHjyA7/7Y5dR6dljh3lez/DmVialvREpMb7ZxwBrQkpz4fgTy5MZA4PUHXzr9t/vSO+fOYAXo0D8MxbQnDJkDDnPh8MHG75QTKUKVTYSFAAy89IW1NIB7SB7QUuz8fHF6NUzkVFmoD75mGFFtZ4GVOCAA4zek5CwgcTs7Pq53wKtUfeG3o8bb7O5ThGABwGodXo5aTR/QE4JA7PSEAALQ0J3vHHDxS0e7vUEIIAAAmBOCyBhyiCwBAMGBZA+aEAAAAMwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwAhCCAAAMIIQAgAAjCCEAAAAIwghAADAiHamC0DDPB6PCgoKVFRUpNjYWKWkpMjtdpsuCwAAWxBCWqmcnBxlZmbqwIED3rb4+HgtXbpUaWlpBisDAMAeDMe0Qjk5OUpPT/cJIJJUWFio9PR05eTkGKoMAAD7EEJaGY/Ho8zMTFmWpRBJl0u6/vt/XZYlSZo9e7Y8Ho/BKgEAaD5CSCtTUFCgAwcOaJKkLyXlS1r9/b9fSppoWdq/f78KCgpMlQgAgC2YE9LKFBUVaZKk7Hpui/u+Pf377QAACGT0hLQysb16aen3/33qm1N7Pev77QAACGT0hLQyKZJOdxBuiKSzVNMrAgBAIKMnpJVxHzxo63YAALRWhJDWJjbW3u0AAGilCCGtTUqKFB8vuVz13+5ySQkJNdsBABDAjIeQZcuWKTExUR06dFBSUpK2bNly2u2zsrI0YMAAhYeHKyEhQXfffbe+++67Fqq2Bbjd0tLvp6aeGkRqr2dl1WwHAEAAMxpC1qxZozlz5mjRokXatm2bhgwZotTUVB1sYL7DqlWrdN9992nRokXatWuXli9frjVr1uj+++9v4codlpYmZWdLcadMP42Pr2ln2XYAQBBwWdb3y3AakJSUpBEjRujpp5+WJFVXVyshIUGzZs3SfffdV2f7mTNnateuXcrNzfW2/fd//7fef/99vf322416zLKyMkVFRam0tFSRkZH2PBGneDxSQYFUVFQzByQlhR4QAIAxdn+HGusJqaqq0tatWzVmzJj/FBMSojFjxmjz5s313ufSSy/V1q1bvUM2X3zxhV599VWNGzeuwceprKxUWVmZzyVguN3SqFHSlCk1/xJAAABBxNg6IYcOHZLH41F0dLRPe3R0tD799NN67zN16lQdOnRIP/jBD2RZlk6cOKE77rjjtMMxS5Ys0eLFi22tHQAANJ/xian+yM/P1yOPPKLf/va32rZtm3JycvTKK6/o4YcfbvA+8+bNU2lpqfeyf//+FqwYAAA0xFhPSI8ePeR2u1VSUuLTXlJSopiYmHrvs3DhQt1000269dZbJUmDBg1SRUWFbr/9ds2fP18hIXUzVVhYmMLCwux/AgAAoFmM9YSEhoZq2LBhPpNMq6urlZubq+Tk5Hrvc/To0TpBw/39PAmD82sBAEATGD13zJw5c5SRkaHhw4dr5MiRysrKUkVFhaZPny5JmjZtmuLi4rRkyRJJ0vjx4/XEE0/ooosuUlJSkvbs2aOFCxdq/Pjx3jACAAACg9EQMnnyZH3zzTd64IEHVFxcrKFDh2rDhg3eyar79u3z6flYsGCBXC6XFixYoMLCQvXs2VPjx4/XL3/5S1NPAQAANJHRdUJMCKh1QgAAaEWCZp0QAADQthFCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBF+h5DExEQ99NBD2rdvnxP1AACANsLvEDJ79mzl5OSoX79+uuqqq/Tiiy+qsrLSidoAAEAQa1II2b59u7Zs2aKBAwdq1qxZio2N1cyZM7Vt2zYnagQAAEGo2WfRPX78uH77299q7ty5On78uAYNGqS77rpL06dPl8vlsqtO23AWXQAAmsbu79B2Tb3j8ePHtW7dOq1YsUIbN27UJZdcoltuuUUHDhzQ/fffrzfeeEOrVq1qdoEAACA4+R1Ctm3bphUrVmj16tUKCQnRtGnT9OSTT+q8887zbjNp0iSNGDHC1kIBAEBw8TuEjBgxQldddZWeeeYZTZw4Ue3bt6+zTd++fXX99dfbUiAAAAhOfoeQL774Qn369DntNh07dtSKFSuaXBQAAAh+fh8dc/DgQb3//vt12t9//339v//3/2wpCgAABD+/Q8iMGTO0f//+Ou2FhYWaMWOGLUUBAIDg53cI+eSTT3TxxRfXab/ooov0ySef2FIUAAAIfn6HkLCwMJWUlNRpLyoqUrt2TT7iFwAAtDF+h5Crr75a8+bNU2lpqbftyJEjuv/++3XVVVfZWhwAAAhefnddPP744/rhD3+oPn366KKLLpIkbd++XdHR0XrhhRdsLxAAAAQnv0NIXFycPvroI/35z3/Wjh07FB4erunTp2vKlCn1rhkCAABQnyZN4ujYsaNuv/12u2sBAABtSJNnkn7yySfat2+fqqqqfNp/8pOfNLsoAAAQ/Jq0YuqkSZO0c+dOuVwu1Z6Et/aMuR6Px94KAQBAUPL76JjMzEz17dtXBw8eVEREhP7xj39o06ZNGj58uPLz8x0oEQAABCO/e0I2b96sN998Uz169FBISIhCQkL0gx/8QEuWLNFdd92lDz/80Ik6AQBAkPG7J8Tj8ahz586SpB49eujrr7+WJPXp00e7d++2tzoAABC0/O4JufDCC7Vjxw717dtXSUlJevTRRxUaGqrnnntO/fr1c6JGAAAQhPwOIQsWLFBFRYUk6aGHHtKPf/xjpaSkqHv37lqzZo3tBbZ6Ho9UUCAVFUmxsVJKiuR2m64KAIBWz2XVHt7SDIcPH1bXrl29R8i0ZmVlZYqKilJpaakiIyObt7OcHCkzUzpw4D9t8fHS0qVSWlrz9g0AQCtj63eo/JwTcvz4cbVr104ff/yxT3u3bt0CIoDYKidHSk/3DSCSVFhY056TY6YuAAAChF8hpH379jrrrLNYC8TjqekBqa8TqbZt9uya7QAAQL38Pjpm/vz5uv/++3X48GEn6gkMBQV1e0BOZlnS/v012wEAgHr5PTH16aef1p49e9S7d2/16dNHHTt29Ll927ZtthXXahUV2bsdAABtkN8hZOLEiQ6UEWBiY+3dDgCANsiWo2MCiS0zez0eKTGxZhJqfS+fy1VzlMzevRyuCwAIGkaPjsH33O6aw3ClmsBxstrrWVkEEAAATsPvEBISEiK3293gpc1IS5Oys6W4ON/2+PiadtYJAQDgtPyeE7Ju3Tqf68ePH9eHH36oP/zhD1q8eLFthQWEtDRpwgRWTAUAoAlsmxOyatUqrVmzRn/961/t2J1j7B7PAgCgrWi1c0IuueQS5ebm2rU7AAAQ5GwJIceOHdNvfvMbxZ06PwIAAKABfs8JOfVEdZZl6dtvv1VERIT+9Kc/2VocAAAIXn6HkCeffNInhISEhKhnz55KSkpS165dbS0OAAAEL79DyM033+xAGQAAoK3xe07IihUrtHbt2jrta9eu1R/+8AdbigIAAMHP7xCyZMkS9ejRo057r1699Mgjj9hSFAAACH5+h5B9+/apb9++ddr79Omjffv22VIUAAAIfn6HkF69eumjjz6q075jxw51797dlqIAAEDw8zuETJkyRXfddZfy8vLk8Xjk8Xj05ptvKjMzU9dff70TNQIAgCDk99ExDz/8sL788ktdeeWVateu5u7V1dWaNm0ac0IAAECjNfncMZ999pm2b9+u8PBwDRo0SH369LG7Nkdw7hgAAJrG7u9Qv3tCavXv31/9+/dvdgEAAKBt8ntOyLXXXqtf/epXddofffRR/fSnP7WlKAAAEPz8DiGbNm3SuHHj6rRfc8012rRpky1FAQCA4Od3CCkvL1doaGid9vbt26usrMyWogAAQPDzO4QMGjRIa9asqdP+4osv6vzzz7elKAAAEPz8npi6cOFCpaWl6fPPP9cVV1whScrNzdWqVauUnZ1te4EAACA4+R1Cxo8fr/Xr1+uRRx5Rdna2wsPDNWTIEL355pvq1q2bEzUCAIAg1OR1QmqVlZVp9erVWr58ubZu3SqPx2NXbY5gnRAAAJrG7u9Qv+eE1Nq0aZMyMjLUu3dv/frXv9YVV1yh9957r9kFAQCAtsGv4Zji4mKtXLlSy5cvV1lZma677jpVVlZq/fr1TEoFAAB+aXRPyPjx4zVgwAB99NFHysrK0tdff62nnnrKydoAAEAQa3RPyGuvvaa77rpLd955J8u1AwCAZmt0T8jbb7+tb7/9VsOGDVNSUpKefvppHTp0yMnaAABAEGt0CLnkkkv0+9//XkVFRfrZz36mF198Ub1791Z1dbU2btyob7/91sk6AQBAkGnWIbq7d+/W8uXL9cILL+jIkSO66qqr9PLLL9tZn+04RBcAgKZpNYfoStKAAQP06KOP6sCBA1q9enWziwEAAG1HsxcrCzT0hAAA0DStqicEAACgqQghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIxoFSFk2bJlSkxMVIcOHZSUlKQtW7Y0uO2oUaPkcrnqXH70ox+1YMUAAKC5jIeQNWvWaM6cOVq0aJG2bdumIUOGKDU1VQcPHqx3+5ycHBUVFXkvH3/8sdxut37605+2cOUAAKA5jIeQJ554QrfddpumT5+u888/X88++6wiIiL0/PPP17t9t27dFBMT471s3LhRERERhBAAAAKM0RBSVVWlrVu3asyYMd62kJAQjRkzRps3b27UPpYvX67rr79eHTt2rPf2yspKlZWV+VwAAIB5RkPIoUOH5PF4FB0d7dMeHR2t4uLiM95/y5Yt+vjjj3Xrrbc2uM2SJUsUFRXlvSQkJDS7bgAA0HzGh2OaY/ny5Ro0aJBGjhzZ4Dbz5s1TaWmp97J///4WrBAAADSknckH79Gjh9xut0pKSnzaS0pKFBMTc9r7VlRU6MUXX9RDDz102u3CwsIUFhbW7FoBAIC9jPaEhIaGatiwYcrNzfW2VVdXKzc3V8nJyae979q1a1VZWakbb7zR6TIBAIADjPaESNKcOXOUkZGh4cOHa+TIkcrKylJFRYWmT58uSZo2bZri4uK0ZMkSn/stX75cEydOVPfu3U2UDQAAmsl4CJk8ebK++eYbPfDAAyouLtbQoUO1YcMG72TVffv2KSTEt8Nm9+7devvtt/X3v//dRMkAAMAGLsuyLNNFtKSysjJFRUWptLRUkZGRpssBACBg2P0dGtBHxwAAgMBFCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEa0M11AoPN4PCooKFBRUZFiY2OVkpIit9ttuiwAAFo9Qkgz5OTkKDMzUwcOHPC2xcfHa+nSpUpLSzNYGQAArR/DMU2Uk5Oj9PR0nwAiSYWFhUpPT1dOTo6hygAACAyEkCbweDzKzMyUZVl1bqttmz17tjweT0uXBgBAwCCENEFBQUGdHpCTWZal/fv3q6CgoAWrAgAgsBBCmqCoqMjW7QAAaIsIIU0QGxtr63YAALRFhJAmSElJUXx8vFwuV723u1wuJSQkKCUlpYUrAwAgcBBCmsDtdmvp0qWSVCeI1F7PyspivRAAAE6DENJEaWlpys7OVlxcnE97fHy8srOzWScEAIAzcFn1HWcaxMrKyhQVFaXS0lJFRkY2e3+smAoAaCvs/g5lxdRmcrvdGjVqlOkyAAAIOAzHAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwAhCCAAAMIIQAgAAjCCEAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwAhCCAAAMIIQAgAAjCCEAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwAhCCAAAMIIQAgAAjCCEAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwAhCCAAAMIIQAgAAjCCEAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwwHkKWLVumxMREdejQQUlJSdqyZctptz9y5IhmzJih2NhYhYWF6dxzz9Wrr77aQtUCAAC7tDP54GvWrNGcOXP07LPPKikpSVlZWUpNTdXu3bvVq1evOttXVVXpqquuUq9evZSdna24uDh99dVX6tKlS8sXDwAAmsVlWZZl6sGTkpI0YsQIPf3005Kk6upqJSQkaNasWbrvvvvqbP/ss8/qscce06effqr27ds36jEqKytVWVnpvV5WVqaEhASVlpYqMjLSnicCAEAbUFZWpqioKNu+Q40Nx1RVVWnr1q0aM2bMf4oJCdGYMWO0efPmeu/z8ssvKzk5WTNmzFB0dLQuvPBCPfLII/J4PA0+zpIlSxQVFeW9JCQk2P5cAACA/4yFkEOHDsnj8Sg6OtqnPTo6WsXFxfXe54svvlB2drY8Ho9effVVLVy4UL/+9a/1i1/8osHHmTdvnkpLS72X/fv32/o8AABA0xidE+Kv6upq9erVS88995zcbreGDRumwsJCPfbYY1q0aFG99wkLC1NYWFgLVwoAAM7EWAjp0aOH3G63SkpKfNpLSkoUExNT731iY2PVvn17ud1ub9vAgQNVXFysqqoqhYaGOlozAACwj7HhmNDQUA0bNky5ubneturqauXm5io5Obne+1x22WXas2ePqqurvW3//Oc/FRsbSwABACDAGF0nZM6cOfr973+vP/zhD9q1a5fuvPNOVVRUaPr06ZKkadOmad68ed7t77zzTh0+fFiZmZn65z//qVdeeUWPPPKIZsyYYeopAACAJjI6J2Ty5Mn65ptv9MADD6i4uFhDhw7Vhg0bvJNV9+3bp5CQ/+SkhIQEvf7667r77rs1ePBgxcXFKTMzU3PnzjX1FAAAQBMZXSfEBLuPcQYAoK0ImnVCAABA20YIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABhBCAEAAEYQQgAAgBGEEAAAYAQhBAAAGEEIAQAARhBCAACAEYQQAABgBCEEAAAYQQgBAABGEEIAAIARhBAAAGAEIQQAABjRKkLIsmXLlJiYqA4dOigpKUlbtmxpcNuVK1fK5XL5XDp06NCC1QIAADsYDyFr1qzRnDlztGjRIm3btk1DhgxRamqqDh482OB9IiMjVVRU5L189dVXLVgxAACwg/EQ8sQTT+i2227T9OnTdf755+vZZ59VRESEnn/++Qbv43K5FBMT471ER0e3YMUAAMAO7Uw+eFVVlbZu3ap58+Z520JCQjRmzBht3ry5wfuVl5erT58+qq6u1sUXX6xHHnlEF1xwQb3bVlZWqrKy0nu9tLRUklRWVmbTswAAoG2o/e60LMuW/RkNIYcOHZLH46nTkxEdHa1PP/203vsMGDBAzz//vAYPHqzS0lI9/vjjuvTSS/WPf/xD8fHxdbZfsmSJFi9eXKc9ISHBnicBAEAb869//UtRUVHN3o/RENIUycnJSk5O9l6/9NJLNXDgQP3ud7/Tww8/XGf7efPmac6cOd7r1dXVOnz4sLp37y6Xy2VLTWVlZUpISND+/fsVGRlpyz7RMnjvAhfvXeDivQtcpaWlOuuss9StWzdb9mc0hPTo0UNut1slJSU+7SUlJYqJiWnUPtq3b6+LLrpIe/bsqff2sLAwhYWF+bR16dKlSfWeSWRkJB+oAMV7F7h47wIX713gCgmxZ0qp0YmpoaGhGjZsmHJzc71t1dXVys3N9entOB2Px6OdO3cqNjbWqTIBAIADjA/HzJkzRxkZGRo+fLhGjhyprKwsVVRUaPr06ZKkadOmKS4uTkuWLJEkPfTQQ7rkkkt0zjnn6MiRI3rsscf01Vdf6dZbbzX5NAAAgJ+Mh5DJkyfrm2++0QMPPKDi4mINHTpUGzZs8E5W3bdvn0+3z7///W/ddtttKi4uVteuXTVs2DC9++67Ov/88009BYWFhWnRokV1hn3Q+vHeBS7eu8DFexe47H7vXJZdx9kAAAD4wfhiZQAAoG0ihAAAACMIIQAAwAhCCAAAMIIQYoNly5YpMTFRHTp0UFJSkrZs2WK6JJzBgw8+KJfL5XM577zzTJeFemzatEnjx49X79695XK5tH79ep/bLcvSAw88oNjYWIWHh2vMmDH67LPPzBQLH2d6726++eY6n8OxY8eaKRY+lixZohEjRqhz587q1auXJk6cqN27d/ts891332nGjBnq3r27OnXqpGuvvbbO4qNnQghppjVr1mjOnDlatGiRtm3bpiFDhig1NVUHDx40XRrO4IILLlBRUZH38vbbb5suCfWoqKjQkCFDtGzZsnpvf/TRR/Wb3/xGzz77rN5//3117NhRqamp+u6771q4UpzqTO+dJI0dO9bnc7h69eoWrBANeeuttzRjxgy999572rhxo44fP66rr75aFRUV3m3uvvtu/d///Z/Wrl2rt956S19//bXS0tL8eyALzTJy5EhrxowZ3usej8fq3bu3tWTJEoNV4UwWLVpkDRkyxHQZ8JMka926dd7r1dXVVkxMjPXYY495244cOWKFhYVZq1evNlAhGnLqe2dZlpWRkWFNmDDBSD3wz8GDBy1J1ltvvWVZVs3nrH379tbatWu92+zatcuSZG3evLnR+6UnpBmqqqq0detWjRkzxtsWEhKiMWPGaPPmzQYrQ2N89tln6t27t/r166cbbrhB+/btM10S/LR3714VFxf7fAajoqKUlJTEZzBA5Ofnq1evXhowYIDuvPNO/etf/zJdEupRWloqSd4T123dulXHjx/3+eydd955Ouuss/z67BFCmuHQoUPyeDze1V1rRUdHq7i42FBVaIykpCStXLlSGzZs0DPPPKO9e/cqJSVF3377renS4IfazxmfwcA0duxY/fGPf1Rubq5+9atf6a233tI111wjj8djujScpLq6WrNnz9Zll12mCy+8UFLNZy80NLTOCWH9/ewZX7YdMOGaa67x/vfgwYOVlJSkPn366C9/+YtuueUWg5UBbcf111/v/e9BgwZp8ODBOvvss5Wfn68rr7zSYGU42YwZM/Txxx87Mm+OnpBm6NGjh9xud53ZwCUlJYqJiTFUFZqiS5cuOvfcc7Vnzx7TpcAPtZ8zPoPBoV+/furRowefw1Zk5syZ+tvf/qa8vDzFx8d722NiYlRVVaUjR474bO/vZ48Q0gyhoaEaNmyYcnNzvW3V1dXKzc1VcnKywcrgr/Lycn3++eeKjY01XQr80LdvX8XExPh8BsvKyvT+++/zGQxABw4c0L/+9S8+h62AZVmaOXOm1q1bpzfffFN9+/b1uX3YsGFq3769z2dv9+7d2rdvn1+fPYZjmmnOnDnKyMjQ8OHDNXLkSGVlZamiokLTp083XRpO45577tH48ePVp08fff3111q0aJHcbremTJliujScory83OeX8d69e7V9+3Z169ZNZ511lmbPnq1f/OIX6t+/v/r27auFCxeqd+/emjhxormiIen07123bt20ePFiXXvttYqJidHnn3+ue++9V+ecc45SU1MNVg2pZghm1apV+utf/6rOnTt753lERUUpPDxcUVFRuuWWWzRnzhx169ZNkZGRmjVrlpKTk3XJJZc0/oHsPoynLXrqqaess846ywoNDbVGjhxpvffee6ZLwhlMnjzZio2NtUJDQ624uDhr8uTJ1p49e0yXhXrk5eVZkupcMjIyLMuqOUx34cKFVnR0tBUWFmZdeeWV1u7du80WDcuyTv/eHT161Lr66qutnj17Wu3bt7f69Olj3XbbbVZxcbHpsmFZ9b5vkqwVK1Z4tzl27Jj185//3OratasVERFhTZo0ySoqKvLrcVzfPxgAAECLYk4IAAAwghACAACMIIQAAAAjCCEAAMAIQggAADCCEAIAAIwghAAAACMIIQAAwAhCCICg4HK5tH79etNlAPADIQRAs918881yuVx1LmPHjjVdGoBWjBPYAbDF2LFjtWLFCp+2sLAwQ9UACAT0hACwRVhYmGJiYnwuXbt2lVQzVPLMM8/ommuuUXh4uPr166fs7Gyf++/cuVNXXHGFwsPD1b17d91+++0qLy/32eb555/XBRdcoLCwMMXGxmrmzJk+tx86dEiTJk1SRESE+vfvr5dfftnZJw2gWQghAFrEwoULde2112rHjh264YYbdP3112vXrl2SpIqKCqWmpqpr16764IMPtHbtWr3xxhs+IeOZZ57RjBkzdPvtt2vnzp16+eWXdc455/g8xuLFi3Xdddfpo48+0rhx43TDDTfo8OHDLfo8AfjB1nP/AmiTMjIyLLfbbXXs2NHn8stf/tKyrJrTgt9xxx0+90lKSrLuvPNOy7Is67nnnrO6du1qlZeXe29/5ZVXrJCQEO+p3Xv37m3Nnz+/wRokWQsWLPBeLy8vtyRZr732mm3PE4C9mBMCwBajR4/WM88849PWrVs3738nJyf73JacnKzt27dLknbt2qUhQ4aoY8eO3tsvu+wyVVdXa/fu3XK5XPr666915ZVXnraGwYMHe/+7Y8eOioyM1MGDB5v6lAA4jBACwBYdO3asMzxil/Dw8EZt1759e5/rLpdL1dXVTpQEwAbMCQHQIt5777061wcOHChJGjhwoHbs2KGKigrv7e+8845CQkI0YMAAde7cWYmJicrNzW3RmgE4i54QALaorKxUcXGxT1u7du3Uo0cPSdLatWs1fPhw/eAHP9Cf//xnbdmyRcuXL5ck3XDDDVq0aJEyMjL04IMP6ptvvtGsWbN00003KTo6WpL04IMP6o477lCvXr10zTXX6Ntvv9U777yjWbNmtewTBWAbQggAW2zYsEGxsbE+bQMGDNCnn34qqebIlRdffFE///nPFRsbq9WrV+v888+XJEVEROj1119XZmamRowYoYiICF177bV64oknvPvKyMjQd999pyeffFL33HOPevToofT09JZ7ggBs57IsyzJdBIDg5nK5tG7dOk2cONF0KQBaEeaEAAAAIwghAADACOaEAHAco74A6kNPCAAAMIIQAgAAjCCEAAAAIwghAADACEIIAAAwghACAACMIIQAAAAjCCEAAMCI/w+qg7/ja0Jp/AAAAABJRU5ErkJggg==",
"text/plain": [
""
]
@@ -7325,7 +7325,7 @@
{
"cell_type": "code",
"execution_count": 93,
- "id": "be5a979e",
+ "id": "c6f2d6c4",
"metadata": {
"lines_to_next_cell": 2
},
@@ -7341,7 +7341,7 @@
},
{
"cell_type": "markdown",
- "id": "240618c9",
+ "id": "f920c659",
"metadata": {},
"source": [
"### Time Series Prediction\n",
@@ -7353,7 +7353,7 @@
{
"cell_type": "code",
"execution_count": 94,
- "id": "cf219016",
+ "id": "f3e17682",
"metadata": {},
"outputs": [],
"source": [
@@ -7368,7 +7368,7 @@
},
{
"cell_type": "markdown",
- "id": "2ebf00d3",
+ "id": "e621c2eb",
"metadata": {},
"source": [
"Next we set up the lagged versions of the data, dropping\n",
@@ -7378,7 +7378,7 @@
{
"cell_type": "code",
"execution_count": 95,
- "id": "c0d6bb22",
+ "id": "78707eda",
"metadata": {},
"outputs": [],
"source": [
@@ -7393,7 +7393,7 @@
},
{
"cell_type": "markdown",
- "id": "53d15ddf",
+ "id": "bb83e654",
"metadata": {},
"source": [
"Finally, we extract the response, training indicator, and drop the current day’s `DJ_return` and\n",
@@ -7403,7 +7403,7 @@
{
"cell_type": "code",
"execution_count": 96,
- "id": "9de511d5",
+ "id": "4d894824",
"metadata": {
"lines_to_next_cell": 2
},
@@ -7431,7 +7431,7 @@
},
{
"cell_type": "markdown",
- "id": "9c61eaa2",
+ "id": "f1889769",
"metadata": {},
"source": [
"We first fit a simple linear model and compute the $R^2$ on the test data using\n",
@@ -7441,7 +7441,7 @@
{
"cell_type": "code",
"execution_count": 97,
- "id": "89666a56",
+ "id": "4d7f5ce0",
"metadata": {},
"outputs": [
{
@@ -7463,7 +7463,7 @@
},
{
"cell_type": "markdown",
- "id": "c3997039",
+ "id": "02c7294f",
"metadata": {},
"source": [
"We refit this model, including the factor variable `day_of_week`.\n",
@@ -7474,7 +7474,7 @@
{
"cell_type": "code",
"execution_count": 98,
- "id": "23ebf124",
+ "id": "a6b371bb",
"metadata": {
"lines_to_next_cell": 0
},
@@ -7487,7 +7487,7 @@
},
{
"cell_type": "markdown",
- "id": "8df4e475",
+ "id": "92fda2e1",
"metadata": {},
"source": [
" Note that we do not have\n",
@@ -7498,7 +7498,7 @@
{
"cell_type": "code",
"execution_count": 99,
- "id": "4190a4dc",
+ "id": "a2a8cc85",
"metadata": {
"lines_to_next_cell": 0
},
@@ -7521,7 +7521,7 @@
},
{
"cell_type": "markdown",
- "id": "d98cc235",
+ "id": "68a22c64",
"metadata": {},
"source": [
"This model achieves an $R^2$ of about 46%."
@@ -7529,7 +7529,7 @@
},
{
"cell_type": "markdown",
- "id": "131bfc1c",
+ "id": "1cca42e4",
"metadata": {},
"source": [
"To fit the RNN, we must reshape the data, as it will expect 5 lagged\n",
@@ -7550,7 +7550,7 @@
{
"cell_type": "code",
"execution_count": 100,
- "id": "a2b41f92",
+ "id": "8ee6e6a3",
"metadata": {
"lines_to_next_cell": 0
},
@@ -7581,7 +7581,7 @@
},
{
"cell_type": "markdown",
- "id": "7b301214",
+ "id": "a1f41334",
"metadata": {},
"source": [
"We now reshape the data."
@@ -7590,7 +7590,7 @@
{
"cell_type": "code",
"execution_count": 101,
- "id": "dde73c9e",
+ "id": "d35ceb54",
"metadata": {
"lines_to_next_cell": 0
},
@@ -7613,7 +7613,7 @@
},
{
"cell_type": "markdown",
- "id": "4fa6cd7a",
+ "id": "11137e1d",
"metadata": {},
"source": [
"By specifying the first size as -1, `numpy.reshape()` deduces its size based on the remaining arguments.\n",
@@ -7628,7 +7628,7 @@
{
"cell_type": "code",
"execution_count": 102,
- "id": "6f9d6357",
+ "id": "9e3dc6d5",
"metadata": {},
"outputs": [],
"source": [
@@ -7649,7 +7649,7 @@
},
{
"cell_type": "markdown",
- "id": "a5d720e7",
+ "id": "1fd566f7",
"metadata": {},
"source": [
"We fit the model in a similar fashion to previous networks. We\n",
@@ -7659,14 +7659,13 @@
"early stopping, since then the test performance would be biased.\n",
"\n",
"We form the training dataset similar to\n",
- "our `Hitters` example.\n",
- " "
+ "our `Hitters` example."
]
},
{
"cell_type": "code",
"execution_count": 103,
- "id": "a21ca47e",
+ "id": "df5e5ab6",
"metadata": {},
"outputs": [],
"source": [
@@ -7680,7 +7679,7 @@
},
{
"cell_type": "markdown",
- "id": "0d627892",
+ "id": "16565d83",
"metadata": {},
"source": [
"Following our usual pattern, we inspect the summary."
@@ -7689,7 +7688,7 @@
{
"cell_type": "code",
"execution_count": 104,
- "id": "8fa26b87",
+ "id": "d7f49bec",
"metadata": {
"lines_to_next_cell": 0
},
@@ -7732,7 +7731,7 @@
},
{
"cell_type": "markdown",
- "id": "065db586",
+ "id": "ad57780a",
"metadata": {},
"source": [
"We again put the two datasets into a data module, with a\n",
@@ -7742,7 +7741,7 @@
{
"cell_type": "code",
"execution_count": 105,
- "id": "9b871361",
+ "id": "ea7ce0f4",
"metadata": {
"lines_to_next_cell": 0
},
@@ -7757,7 +7756,7 @@
},
{
"cell_type": "markdown",
- "id": "8e6d61d8",
+ "id": "d0d60c8b",
"metadata": {},
"source": [
"We run some data through our model to be sure the sizes match up correctly."
@@ -7766,7 +7765,7 @@
{
"cell_type": "code",
"execution_count": 106,
- "id": "b63d1f85",
+ "id": "ccd77738",
"metadata": {},
"outputs": [
{
@@ -7789,7 +7788,7 @@
},
{
"cell_type": "markdown",
- "id": "7fc69ade",
+ "id": "c9397b7f",
"metadata": {},
"source": [
"We follow our previous example for setting up a trainer for a\n",
@@ -7800,7 +7799,7 @@
{
"cell_type": "code",
"execution_count": 107,
- "id": "c5f32a4f",
+ "id": "96e04e3f",
"metadata": {},
"outputs": [],
"source": [
@@ -7813,7 +7812,7 @@
},
{
"cell_type": "markdown",
- "id": "ed00be6a",
+ "id": "9d7ef6fc",
"metadata": {},
"source": [
"Fitting the model should by now be familiar.\n",
@@ -7823,7 +7822,7 @@
{
"cell_type": "code",
"execution_count": 108,
- "id": "6bd98eb9",
+ "id": "fc6ba2ca",
"metadata": {
"lines_to_next_cell": 2
},
@@ -7865,7 +7864,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f50cb3862a6e4ddcbcb7131a9c3e6c07",
+ "model_id": "cd881313814b4b319883de36a456b21e",
"version_major": 2,
"version_minor": 0
},
@@ -8537,7 +8536,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "0e613a523fb24350a02e4af53fc31c0b",
+ "model_id": "c0851768dd544162913f87e0e0cb118e",
"version_major": 2,
"version_minor": 0
},
@@ -8551,7 +8550,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c4db1eab382549f1b1beddfad3368138",
+ "model_id": "6cb1dc51cbad4e1f829a074e29d3a47e",
"version_major": 2,
"version_minor": 0
},
@@ -8565,7 +8564,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fe986a9354124fab8835d0b2d93529dd",
+ "model_id": "608984e04fc847d7860dfb48bbcdda9f",
"version_major": 2,
"version_minor": 0
},
@@ -8579,7 +8578,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "b8cb7c8dcfc8407e9bcb453d75fec4fb",
+ "model_id": "bef4bc23212c41c497e518473db55672",
"version_major": 2,
"version_minor": 0
},
@@ -8593,7 +8592,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "b3bb249322a440fea649e953c6f8e6f9",
+ "model_id": "890d82c78d59444ea97f6000b0d17fec",
"version_major": 2,
"version_minor": 0
},
@@ -8607,7 +8606,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fa670100f02b47cf9ec4c3e6bad634e7",
+ "model_id": "84f285e1262e448186175b5f6ea8a100",
"version_major": 2,
"version_minor": 0
},
@@ -8621,7 +8620,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1a89941f764245c2ada50a90a13c2de5",
+ "model_id": "6bcddf29e018487ab3cbd65b9360a31c",
"version_major": 2,
"version_minor": 0
},
@@ -8635,7 +8634,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f1620d945db8415eb67ca9c7c9204437",
+ "model_id": "0f5f0bf0e3094d359222a40cfb883e67",
"version_major": 2,
"version_minor": 0
},
@@ -8649,7 +8648,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ccaab29c24594688aab4e276f0602911",
+ "model_id": "436f0a6e3a7a4457b6b54fb1c19a9fc1",
"version_major": 2,
"version_minor": 0
},
@@ -8663,7 +8662,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "985770bbcdc54a978e25689ec98b9ec8",
+ "model_id": "153517df5e244608a4df90e6d5b3f2fb",
"version_major": 2,
"version_minor": 0
},
@@ -8677,7 +8676,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "649a7264f6e84529ab9292bab0b77432",
+ "model_id": "966bf641ff264d9ba465a989337d24c8",
"version_major": 2,
"version_minor": 0
},
@@ -8691,7 +8690,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "bbd262d3471646e38208a319c863cb75",
+ "model_id": "232ec0a0183e462f92422b1991162466",
"version_major": 2,
"version_minor": 0
},
@@ -8705,7 +8704,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "58ad0974b15546609feec97cc94b6a7a",
+ "model_id": "94eebdb823b9416abdb1454fa8b713a1",
"version_major": 2,
"version_minor": 0
},
@@ -8719,7 +8718,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d6114f44e51d4586b911578aa52ed8e5",
+ "model_id": "63e68c7095d74639a33c6b422dde8e6b",
"version_major": 2,
"version_minor": 0
},
@@ -8733,7 +8732,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d42389c558874de3932eb5bc0c4165cb",
+ "model_id": "858b9ede991d4db5a65f3738145661b0",
"version_major": 2,
"version_minor": 0
},
@@ -8747,7 +8746,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "892652c223b4426b8e809a0cc36985a2",
+ "model_id": "1320a563fa1141f48ec1121a4da566dd",
"version_major": 2,
"version_minor": 0
},
@@ -8761,7 +8760,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "cc6a9c7712ac47e7be436a5e53c1d203",
+ "model_id": "c258eee32312493f820b0be1001b702d",
"version_major": 2,
"version_minor": 0
},
@@ -8775,7 +8774,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "71474f43feee42a78f5b2dd1441ebea8",
+ "model_id": "cfe59e5c336b483595b2c2f3e5002fe5",
"version_major": 2,
"version_minor": 0
},
@@ -8789,7 +8788,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d35c015e070a4066a00638dfea294e20",
+ "model_id": "da49b9baca8d43deb73852ac22411b59",
"version_major": 2,
"version_minor": 0
},
@@ -8803,7 +8802,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "bbe8d6a738a2452eb96907cfd94a865e",
+ "model_id": "2edefd368841420799756fdeb9eb350e",
"version_major": 2,
"version_minor": 0
},
@@ -8817,7 +8816,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c4e37d0e56cf4433bae37ba25dd6addc",
+ "model_id": "fb1ab9dd650c4327b9e08083ea6f855e",
"version_major": 2,
"version_minor": 0
},
@@ -8831,7 +8830,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "508e2b4b875b4f3eb89460503b82a44b",
+ "model_id": "337548c8b3a649b3bbb2aa022d0bc33c",
"version_major": 2,
"version_minor": 0
},
@@ -8845,7 +8844,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fe84b5d4fff64e4e84eb3baf63f49ebb",
+ "model_id": "469f0f8eaf84468689dc81a6866590c6",
"version_major": 2,
"version_minor": 0
},
@@ -8859,7 +8858,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "234a8305cd0e4671bafd6347a508006a",
+ "model_id": "5a3d2d6c73104569b2431592878a0680",
"version_major": 2,
"version_minor": 0
},
@@ -8873,7 +8872,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "9314bb524e4c4c988e0637f0b426dea3",
+ "model_id": "0a4f360d5a1c4e688c806475aa15e2aa",
"version_major": 2,
"version_minor": 0
},
@@ -8887,7 +8886,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "73bb408fb3b14067bc5a00c51f2b46ab",
+ "model_id": "32861129effb47cdb392fa0a20b636c3",
"version_major": 2,
"version_minor": 0
},
@@ -8901,7 +8900,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "80e55275d2694434ba664645a53cfdfb",
+ "model_id": "0713f563c1fc4d6292be6340e83f6417",
"version_major": 2,
"version_minor": 0
},
@@ -8915,7 +8914,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "af57619b39e141b0a849207567f12685",
+ "model_id": "1364d3ae21274234a26921be5a610c57",
"version_major": 2,
"version_minor": 0
},
@@ -8929,7 +8928,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1e9d1664e7094f3a80c4c29a64c69850",
+ "model_id": "c5e4630ea30945fd862bce8a68c9eaff",
"version_major": 2,
"version_minor": 0
},
@@ -8943,7 +8942,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "cbadff921ed84c079d2920fa8f108d79",
+ "model_id": "fb014ea654fa49c6b29fda1c42a4239b",
"version_major": 2,
"version_minor": 0
},
@@ -8957,7 +8956,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1a4f763710f54a64a164ed4e8ade0cd4",
+ "model_id": "fc9065e42c5946f88aa84da055bf968e",
"version_major": 2,
"version_minor": 0
},
@@ -8971,7 +8970,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "7ae34405e0904941bde7ac34156ef5d9",
+ "model_id": "b33c56819c07474596c522b66e69d8e0",
"version_major": 2,
"version_minor": 0
},
@@ -8985,7 +8984,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "758b295e2ebc4f818bf7634dc9e6511b",
+ "model_id": "e227733b97fd411fa91be941aa0826f3",
"version_major": 2,
"version_minor": 0
},
@@ -8999,7 +8998,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "70ed4e60b2724c27bba5e161f5d6c0e9",
+ "model_id": "b0de6788585a43d387ee192d3e919582",
"version_major": 2,
"version_minor": 0
},
@@ -9013,7 +9012,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1838ceec52264c5b9ef4bbf089932af4",
+ "model_id": "95f701a89b174f96a7121b1741fcb9fe",
"version_major": 2,
"version_minor": 0
},
@@ -9027,7 +9026,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c8ab1adbbefd432f84ccff998e3382de",
+ "model_id": "d138f67a0d8d44b69b94c79290ab60fa",
"version_major": 2,
"version_minor": 0
},
@@ -9041,7 +9040,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6e5346be07274ca9b3124ad9db4e0a6d",
+ "model_id": "472095f2f7de47dca63bb953593f60a9",
"version_major": 2,
"version_minor": 0
},
@@ -9055,7 +9054,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "626e911567f949d5bb8aa78b6b60f934",
+ "model_id": "d696f828b464421c95874bae379a6fa0",
"version_major": 2,
"version_minor": 0
},
@@ -9069,7 +9068,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f6d5ce4338784c1cbdaf100334b1407b",
+ "model_id": "a92efff5798b4681b9d9de929e5f6336",
"version_major": 2,
"version_minor": 0
},
@@ -9083,7 +9082,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c810e6fd3ceb4568ae78b53fa213914e",
+ "model_id": "289e5bce5f284ce99e064521ce0e05a9",
"version_major": 2,
"version_minor": 0
},
@@ -9097,7 +9096,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "afc2246d6e184b538ecfe056dc38f16d",
+ "model_id": "fdd3f827c9c34a3190aba38b1b13c21f",
"version_major": 2,
"version_minor": 0
},
@@ -9111,7 +9110,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "61255356db634ba984e8844968f4a5e9",
+ "model_id": "d99ecb21f9e54c9fb262b29adde16bd0",
"version_major": 2,
"version_minor": 0
},
@@ -9125,7 +9124,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "02f1a079b35a44d89dfce052a355c17a",
+ "model_id": "725a40f03b734c21b8b8e67b3212718f",
"version_major": 2,
"version_minor": 0
},
@@ -9139,7 +9138,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "cb0fb5da2654482ebe196bf0f1751b7f",
+ "model_id": "640019ee89d047fd8725565835db0eaf",
"version_major": 2,
"version_minor": 0
},
@@ -9153,7 +9152,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "bc33b4976a164058bceeb2cfb77eff20",
+ "model_id": "1580c64b5a874e6aad7a89abacd5cb60",
"version_major": 2,
"version_minor": 0
},
@@ -9167,7 +9166,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "cba3bae12a654da39ea22a391431f2ff",
+ "model_id": "75eddb18a4c546b1a364977b91a38001",
"version_major": 2,
"version_minor": 0
},
@@ -9181,7 +9180,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "69f0c0bde038485e8c49934eb6ea819d",
+ "model_id": "96302a61558d40549b7802f4c44263eb",
"version_major": 2,
"version_minor": 0
},
@@ -9195,7 +9194,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ac8fff761b724c6cb58569db5feeeaa5",
+ "model_id": "fb7dd989673a4223b66345ef77406828",
"version_major": 2,
"version_minor": 0
},
@@ -9209,7 +9208,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d0cdf39392d24750901d79aa4bef1a76",
+ "model_id": "6e74c6d1b7c64e4596a655a0fbaf1bfb",
"version_major": 2,
"version_minor": 0
},
@@ -9223,7 +9222,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1a0d550efbba47d88357781f7b68e073",
+ "model_id": "d716d0b7820d475ca7653959b52d5450",
"version_major": 2,
"version_minor": 0
},
@@ -9237,7 +9236,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "286d953141b24199a4253f9fc85b6f82",
+ "model_id": "137da5f57ba84efdb51aff612b72db01",
"version_major": 2,
"version_minor": 0
},
@@ -9251,7 +9250,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "67cf98d2686948a6b3bd39efb55b3ef4",
+ "model_id": "bd227089abe34ebda36b2d18df87a86a",
"version_major": 2,
"version_minor": 0
},
@@ -9265,7 +9264,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "608086150668499e85ab742d06ea4ebd",
+ "model_id": "044b5721d12d4dadbc68f2e1ef6db71a",
"version_major": 2,
"version_minor": 0
},
@@ -9279,7 +9278,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "021bf402711e428b97a3e2e96dfcb49e",
+ "model_id": "cc86818b06a740479b3157b29a1cb18e",
"version_major": 2,
"version_minor": 0
},
@@ -9293,7 +9292,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "e0a7bb5628c944b4b570907e91ee7248",
+ "model_id": "dd634e6fc883498cadcb00911c514371",
"version_major": 2,
"version_minor": 0
},
@@ -9307,7 +9306,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "46c080135dd7438ea38e749bbe0cc747",
+ "model_id": "3a52574849754ad5b349a2ef52a33722",
"version_major": 2,
"version_minor": 0
},
@@ -9321,7 +9320,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4ca53ff274f84b3a9c88ace97834f8c5",
+ "model_id": "35f1a57c0f6147ce81b036c866a17275",
"version_major": 2,
"version_minor": 0
},
@@ -9335,7 +9334,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "373a0410ec8444ad957a468cefb21b42",
+ "model_id": "3cb251ea1f6a4ae7a87fb959e362d392",
"version_major": 2,
"version_minor": 0
},
@@ -9349,7 +9348,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "b67298bbb00b47d290167050e011d20c",
+ "model_id": "4e12dfd333064cf5a1fffa8ab56f67a6",
"version_major": 2,
"version_minor": 0
},
@@ -9363,7 +9362,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1dcdd15fe16d401cacf14f9a6f151a17",
+ "model_id": "73e3283065a94da9b0de1b38f87eb801",
"version_major": 2,
"version_minor": 0
},
@@ -9377,7 +9376,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "43883ea84b364edea1d9fe08e2db75d8",
+ "model_id": "d2755e57697a4a01b6514fdba5578bec",
"version_major": 2,
"version_minor": 0
},
@@ -9391,7 +9390,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "0e6e2306c5e043cd98d2c5f41d6fba33",
+ "model_id": "f8f3787f489f46959322dac484b7ed93",
"version_major": 2,
"version_minor": 0
},
@@ -9405,7 +9404,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "31ac9e15ce594f32b36c8898e6500bc9",
+ "model_id": "f24824825bf644ae831c0e922e16a6c7",
"version_major": 2,
"version_minor": 0
},
@@ -9419,7 +9418,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6f20edbc41064e44a166abb5c43d4304",
+ "model_id": "9abde42fb6564285aef92cdc78ac08a4",
"version_major": 2,
"version_minor": 0
},
@@ -9433,7 +9432,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "e6965e8c00a3426ba8206bd8ddbe62b3",
+ "model_id": "18ab584d1482478b9b7d34e90db79dd1",
"version_major": 2,
"version_minor": 0
},
@@ -9447,7 +9446,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6b0624ec65fc4ce1abc177b512766854",
+ "model_id": "7b030704b1b545fcad5ee48c27c6b90c",
"version_major": 2,
"version_minor": 0
},
@@ -9461,7 +9460,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c63fe05c857b4052a9aeaca8f092d047",
+ "model_id": "c47f07fcd58847b1b24f383546eb653c",
"version_major": 2,
"version_minor": 0
},
@@ -9475,7 +9474,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "e949d28f416d47b59fd403bfea38687b",
+ "model_id": "f99c0e8c4b65436dafa5c2a9a5452e06",
"version_major": 2,
"version_minor": 0
},
@@ -9489,7 +9488,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "11797220658a4b4fbf505ffa9118a10a",
+ "model_id": "24f347e1c972488ab6d64bcb07757238",
"version_major": 2,
"version_minor": 0
},
@@ -9503,7 +9502,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "7813aa85a7314b2e8df4b6db5580e21f",
+ "model_id": "cc6b7ff2a86c41cca3a9b423c0297b69",
"version_major": 2,
"version_minor": 0
},
@@ -9517,7 +9516,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2c6ad5889d0b4c69a5847eaab80d1a8e",
+ "model_id": "eeff56e6de874ca3bbacdf08fbcead78",
"version_major": 2,
"version_minor": 0
},
@@ -9531,7 +9530,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f7f8f3aceca14e2b9d6f172a3be239b3",
+ "model_id": "2253d5fd390a4ba1b32e8fd8639187bc",
"version_major": 2,
"version_minor": 0
},
@@ -9545,7 +9544,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d6910bf855634072b7b5e451ae13e1d5",
+ "model_id": "dc58353b22e14f9bb332e8a38b77a717",
"version_major": 2,
"version_minor": 0
},
@@ -9559,7 +9558,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2cb6739f919e40e4ab59d37b2eb4f4e3",
+ "model_id": "caac960a2e374b8fb4bfd726a3b20235",
"version_major": 2,
"version_minor": 0
},
@@ -9573,7 +9572,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2f828a85bd9846be86f63bfe87807643",
+ "model_id": "debee1aed4cc40d5b303d02eedbdfc41",
"version_major": 2,
"version_minor": 0
},
@@ -9587,7 +9586,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "91acc5ec90d542fd91e2fa1a60c2b472",
+ "model_id": "49af03e929d149319965f79777b874d7",
"version_major": 2,
"version_minor": 0
},
@@ -9601,7 +9600,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "cc002d7048f34829bf0e153de53ec761",
+ "model_id": "518f016e8418473fa5c367ba4782ea70",
"version_major": 2,
"version_minor": 0
},
@@ -9615,7 +9614,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c18ba9a746364e29b913561d638c3657",
+ "model_id": "d5d84c78937e4e86809c6752d2ab9b34",
"version_major": 2,
"version_minor": 0
},
@@ -9629,7 +9628,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "592ebdfedc0c4e8fadfd0d8070088221",
+ "model_id": "d0e7561ad6254c608e8ccbe9419bf13d",
"version_major": 2,
"version_minor": 0
},
@@ -9643,7 +9642,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8660bae7cde74d19be0473f0e5ee22e3",
+ "model_id": "62bf8c5f5e884276b3423cb35af947cc",
"version_major": 2,
"version_minor": 0
},
@@ -9657,7 +9656,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "0aa4a50bce0748dbbf9fb78d3caf595d",
+ "model_id": "09fbe3b2afb844e087c8b8131940f52f",
"version_major": 2,
"version_minor": 0
},
@@ -9671,7 +9670,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "78cc5764f0b44b9fb718eb88b75e175d",
+ "model_id": "248d1480e07844f5aae809b8d75f6f05",
"version_major": 2,
"version_minor": 0
},
@@ -9685,7 +9684,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "65233da35c0b4a20a9745a8f0a5da902",
+ "model_id": "b16a871746b7454fa6dbf640904fba60",
"version_major": 2,
"version_minor": 0
},
@@ -9699,7 +9698,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "64c05f6c181a44d29a51ac96098f7bf8",
+ "model_id": "3080997668ed41d9ab15a00e2e56022a",
"version_major": 2,
"version_minor": 0
},
@@ -9713,7 +9712,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8adea85b3c844d31befda6c9b8873c41",
+ "model_id": "4788ab535ba14e80a1f6847da6310b78",
"version_major": 2,
"version_minor": 0
},
@@ -9727,7 +9726,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "3bdb272e874045f3ac0edcb0a987724b",
+ "model_id": "f8c7af5af17445b7a9af29dcf422e74f",
"version_major": 2,
"version_minor": 0
},
@@ -9741,7 +9740,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4bf7256b41f14f37b97415cef52309da",
+ "model_id": "c5e43276790a42fda94871a6b05d611a",
"version_major": 2,
"version_minor": 0
},
@@ -9755,7 +9754,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "74d54ca9ec124a879e927167eb24682f",
+ "model_id": "801b75b2e42742d6bd8680b776df8e35",
"version_major": 2,
"version_minor": 0
},
@@ -9769,7 +9768,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "a523ab0c7c864663840a42f03089040b",
+ "model_id": "a00c72e3f166473a876f02fec7326ff9",
"version_major": 2,
"version_minor": 0
},
@@ -9783,7 +9782,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6fa0919d758b43ff9156627fab054600",
+ "model_id": "66c4ce98f5ba4957b673c1969ac1ec6b",
"version_major": 2,
"version_minor": 0
},
@@ -9797,7 +9796,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "80ecf1da2dd340a7aa6136aa43e7655d",
+ "model_id": "65829521a0704628ad14ef78741bbfc8",
"version_major": 2,
"version_minor": 0
},
@@ -9811,7 +9810,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4cc8c92b9e224ebeab44e4a14df7179b",
+ "model_id": "fab5d683ba714ad58a9aab8de4df7b4f",
"version_major": 2,
"version_minor": 0
},
@@ -9825,7 +9824,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "c9fc2259c77a467fb5abc0f4422e8dc9",
+ "model_id": "e042dbbd1baa44fa9f73d06426c862ef",
"version_major": 2,
"version_minor": 0
},
@@ -9839,7 +9838,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "9c0623c653894e629bb4bbab64c0fe0b",
+ "model_id": "9b23da050f7e4d928362df6059d09c58",
"version_major": 2,
"version_minor": 0
},
@@ -9853,7 +9852,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f30c449b45314a988d24ef7b456e4422",
+ "model_id": "b1f1ad4e73bf410497c46c1e3d4ef017",
"version_major": 2,
"version_minor": 0
},
@@ -9867,7 +9866,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "77ad20ffc8a240acb93bafb56edfa9da",
+ "model_id": "95951bcd163a48a083e71524e3c8c80f",
"version_major": 2,
"version_minor": 0
},
@@ -9881,7 +9880,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f26b8c97f5b74aeb837cf5550934dad2",
+ "model_id": "bfd23af6b76b4c66bb24b6c0af0151db",
"version_major": 2,
"version_minor": 0
},
@@ -9895,7 +9894,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1b14fe9c7b2640e4a732181e4891d04d",
+ "model_id": "a620323d378841ffa3fb4e8af6b7b677",
"version_major": 2,
"version_minor": 0
},
@@ -9909,7 +9908,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ebd93c6972e24dcc87f97210c9226ec5",
+ "model_id": "5c140c009d62482faf2bb955304ddfb5",
"version_major": 2,
"version_minor": 0
},
@@ -9923,7 +9922,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d2b14ad1b9704bd0bc3b958aa8d3122f",
+ "model_id": "eec96bca2672471fa10edafc612715f9",
"version_major": 2,
"version_minor": 0
},
@@ -9937,7 +9936,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "11760a605a8c4595a561f565072d3912",
+ "model_id": "13d227699d96405e9672968a117dd835",
"version_major": 2,
"version_minor": 0
},
@@ -9951,7 +9950,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "efc5f8437a284a4dbfbc1eababe72f5c",
+ "model_id": "bdf0d51cecf64b6b88b2189e61e2697d",
"version_major": 2,
"version_minor": 0
},
@@ -9965,7 +9964,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fca92dc2b3314004b806de3f0476982d",
+ "model_id": "3663a9cc5dd6492c838b8856ee3db172",
"version_major": 2,
"version_minor": 0
},
@@ -9979,7 +9978,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "0c57faff8c244782b4c634632c79fd6d",
+ "model_id": "5b8a90932c5c43449baddb012d3f8d2f",
"version_major": 2,
"version_minor": 0
},
@@ -9993,7 +9992,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8b1608716da04764a9e79b15ff3b9cd0",
+ "model_id": "acfe2fcbcbeb40b689a942d4a384e81e",
"version_major": 2,
"version_minor": 0
},
@@ -10007,7 +10006,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "34b6076acc7c46cd85e0580ed62051f7",
+ "model_id": "a41e9df7b5be41f680c2486bb036eac0",
"version_major": 2,
"version_minor": 0
},
@@ -10021,7 +10020,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "be9d5f1a1fc1411bac32b804ab4a55c6",
+ "model_id": "70cfd7e68ad546fca7b8b4fcb5fe112a",
"version_major": 2,
"version_minor": 0
},
@@ -10035,7 +10034,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "15ba55fa813d429d8c096aeab77dac6d",
+ "model_id": "cc6d28f7b6674cc78526f2a04a232f87",
"version_major": 2,
"version_minor": 0
},
@@ -10049,7 +10048,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "82981797edd24e66a9c7f595777993b3",
+ "model_id": "ae26f55dfe5d44cd9fae433fb8a3ed46",
"version_major": 2,
"version_minor": 0
},
@@ -10063,7 +10062,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f497013dca4544cf9027f8c57b9d3862",
+ "model_id": "b61738f2417244b6b7df1ebb3b3f24d7",
"version_major": 2,
"version_minor": 0
},
@@ -10077,7 +10076,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "18ae423604124c14ad1c546040258830",
+ "model_id": "fdbf1b51bbd54898b58a2de9f695d5ba",
"version_major": 2,
"version_minor": 0
},
@@ -10091,7 +10090,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "bbcf1925befb44f68ae7c057b87d47fc",
+ "model_id": "d438be1b459e4f0f90e1a26704baa0f1",
"version_major": 2,
"version_minor": 0
},
@@ -10105,7 +10104,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "3390fcad4b5a4ed7b0962a3c40c08c6c",
+ "model_id": "164a559d88cd48c58bb43f99cf5819fb",
"version_major": 2,
"version_minor": 0
},
@@ -10119,7 +10118,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8b2672dda8714e74b34df403f44958fb",
+ "model_id": "e142ec45c48e400bbf4cf7dbc8b94e39",
"version_major": 2,
"version_minor": 0
},
@@ -10133,7 +10132,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8f19a36be4da4760be75497c7125b8f0",
+ "model_id": "b98239d615c44f9280cd53bf430b38ef",
"version_major": 2,
"version_minor": 0
},
@@ -10147,7 +10146,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4a2a1c7d9d20421e9e92870a6a2e9660",
+ "model_id": "ee3012ec548c4468ab19394fcc61dfe1",
"version_major": 2,
"version_minor": 0
},
@@ -10161,7 +10160,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f0286c8429b84e2ab0c163e1b4eef1d0",
+ "model_id": "59abff92475945148512c124b31620ae",
"version_major": 2,
"version_minor": 0
},
@@ -10175,7 +10174,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "dd58ef8e610842f2b301171926de7182",
+ "model_id": "10742df4535742c8acdcdbea8d8d6a02",
"version_major": 2,
"version_minor": 0
},
@@ -10189,7 +10188,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "539ca6d6148543548ecd3dcf70ed7c11",
+ "model_id": "7e3d33d2a59f4e2c8413b43cfaee41d1",
"version_major": 2,
"version_minor": 0
},
@@ -10203,7 +10202,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "06e7f0d966004f43b3be4b20ccedee56",
+ "model_id": "1fd03ae4594b4574a55f06d248d8b61a",
"version_major": 2,
"version_minor": 0
},
@@ -10217,7 +10216,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fda62ae60c6c4677a6ea5636f934dc92",
+ "model_id": "976c6fee189c41b4b5445895fb180c8d",
"version_major": 2,
"version_minor": 0
},
@@ -10231,7 +10230,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "3baf1bb80b444609bbfdea5378d88b16",
+ "model_id": "198e1fa4f5124895bc0ee188984ea726",
"version_major": 2,
"version_minor": 0
},
@@ -10245,7 +10244,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f668c7e605ea48fb8c8ccc3ce9942537",
+ "model_id": "c78ca1847595417aa71358a1c1b1a4b0",
"version_major": 2,
"version_minor": 0
},
@@ -10259,7 +10258,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "8ab646cb72bc4395ab928bd90d12876f",
+ "model_id": "af7a5a5a341348f2a0be2f3e77656549",
"version_major": 2,
"version_minor": 0
},
@@ -10273,7 +10272,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "81a2b942d66144f394a057e50cf01f7c",
+ "model_id": "b5ab2cc2a47b42828c7a6780a6db2e00",
"version_major": 2,
"version_minor": 0
},
@@ -10287,7 +10286,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "a2c733eb3a2f40e0b80254de8610baa9",
+ "model_id": "f972c01912c545948b56ea640af2c5b0",
"version_major": 2,
"version_minor": 0
},
@@ -10301,7 +10300,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d3cee07e2b804c9f84e6d1c6985f6eb6",
+ "model_id": "213b3d4ee66d42e1b57a82d35b720112",
"version_major": 2,
"version_minor": 0
},
@@ -10315,7 +10314,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "e7a1d5c5a3d2447b99b09d54782e92e4",
+ "model_id": "ddfc7dcdd1c94636929318d51a61e048",
"version_major": 2,
"version_minor": 0
},
@@ -10329,7 +10328,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2d6dff1e8e8d492c8020df32915020f6",
+ "model_id": "3fdce7be7f074ec589421caa0319862f",
"version_major": 2,
"version_minor": 0
},
@@ -10343,7 +10342,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1c58bb14675c42759eb18385d3f2c364",
+ "model_id": "180334cb0f4c4cc6a5f2eeedc55a986b",
"version_major": 2,
"version_minor": 0
},
@@ -10357,7 +10356,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6e846537940449eba9b3df06d6908d2c",
+ "model_id": "d2e9e0572d4c48bd9dcf25960be64cde",
"version_major": 2,
"version_minor": 0
},
@@ -10371,7 +10370,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "eaabc8c0805b4ce38620516da7b5dd2f",
+ "model_id": "0e26b9ff0a7642e0b8400f0a937eeb30",
"version_major": 2,
"version_minor": 0
},
@@ -10385,7 +10384,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "0b54cea4ca634312ac62cef9554c2abd",
+ "model_id": "bf9537d5986b4aacad134c66a4242b0e",
"version_major": 2,
"version_minor": 0
},
@@ -10399,7 +10398,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "7d538586b87440b89506a951ea660c85",
+ "model_id": "e4ab38c6e45d4628b56bbe5dac9458d7",
"version_major": 2,
"version_minor": 0
},
@@ -10413,7 +10412,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "06ff3bed3b2c44368623e1fe4d16c42d",
+ "model_id": "18e800771f6f439bb9f15de7edaf8274",
"version_major": 2,
"version_minor": 0
},
@@ -10427,7 +10426,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6034c4e13c63492399314dd1d0e86900",
+ "model_id": "ee30326da017481f94e780628f0ec74d",
"version_major": 2,
"version_minor": 0
},
@@ -10441,7 +10440,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "1d2a3ec474f84d7dbd2b1d0811b5679a",
+ "model_id": "ebaaaf47fecb406facb8804280ed88e2",
"version_major": 2,
"version_minor": 0
},
@@ -10455,7 +10454,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "eedba0809dc948c6b8338bde323e79a5",
+ "model_id": "ac274611a2704a2ab1468b205859dfc1",
"version_major": 2,
"version_minor": 0
},
@@ -10469,7 +10468,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "b476ab3908ea4301a13f5cc23ff44fa2",
+ "model_id": "41be5520b1964125872189d604272dc4",
"version_major": 2,
"version_minor": 0
},
@@ -10483,7 +10482,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "aff3135a532a4ee88010da77f492cf4d",
+ "model_id": "666d79b38fcd49c79cac956f8b2f7677",
"version_major": 2,
"version_minor": 0
},
@@ -10497,7 +10496,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ffe38591306e4351a4228d7f17d91a24",
+ "model_id": "2253e50224c642a7a56858b1c135213e",
"version_major": 2,
"version_minor": 0
},
@@ -10511,7 +10510,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2a1a7c1af8fa4e98b60723cbc3766c0b",
+ "model_id": "f01094a315c4420e9aba161bd526a1e0",
"version_major": 2,
"version_minor": 0
},
@@ -10525,7 +10524,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "fb73984ee683427195a75edb8a65dfd1",
+ "model_id": "652fb20eb89245a8ac16173eeb553633",
"version_major": 2,
"version_minor": 0
},
@@ -10539,7 +10538,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "7fed65b24c3e4cccb75b5e190e192e99",
+ "model_id": "92757d397a9944e9bf89a627d34d670a",
"version_major": 2,
"version_minor": 0
},
@@ -10553,7 +10552,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "40c7a7a509f94bbdb99ff06868239a58",
+ "model_id": "d4b73d5c186347d9a05f2486c5baafee",
"version_major": 2,
"version_minor": 0
},
@@ -10567,7 +10566,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "043b17d4db7c4a8c92529fac3371ae87",
+ "model_id": "4daeb823d61246a0aa572689807c117d",
"version_major": 2,
"version_minor": 0
},
@@ -10581,7 +10580,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "9340de6a00d54d7e8efb980fb7a63b88",
+ "model_id": "4da85fb13a6241efa01e2e144209cd5f",
"version_major": 2,
"version_minor": 0
},
@@ -10595,7 +10594,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "69596ddf1da94aed9d62d104734a11ad",
+ "model_id": "6f4c663a0b6449828fcacf1d77b0fad1",
"version_major": 2,
"version_minor": 0
},
@@ -10609,7 +10608,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "83228734f253473ab9b36daa64130a36",
+ "model_id": "ada51e9d1ee84f7c8d7cda87a9fed382",
"version_major": 2,
"version_minor": 0
},
@@ -10623,7 +10622,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "9fce07d5848d49b9acbd80959f48d055",
+ "model_id": "035517fa34c84edb8520548a6a6f5f2f",
"version_major": 2,
"version_minor": 0
},
@@ -10637,7 +10636,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "23ac188be0de4418997c43a01c865381",
+ "model_id": "ddc0d23180304537a5d5a408daed4159",
"version_major": 2,
"version_minor": 0
},
@@ -10651,7 +10650,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "81a145df7fda42b08319ec1963375f71",
+ "model_id": "c4c0bccb88c34e5da862f7bf33948498",
"version_major": 2,
"version_minor": 0
},
@@ -10665,7 +10664,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "a006b6be707d4cf49143c0588abefcae",
+ "model_id": "27c5c425ce414190aae3c840ca8df1e0",
"version_major": 2,
"version_minor": 0
},
@@ -10686,7 +10685,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "3a233b74289744058b15d52d3362d9ef",
+ "model_id": "23414392e3a74a4b8dff5fe1a30f6eec",
"version_major": 2,
"version_minor": 0
},
@@ -10745,7 +10744,7 @@
},
{
"cell_type": "markdown",
- "id": "3c78b138",
+ "id": "fc55d4f9",
"metadata": {},
"source": [
"We could also fit a model without the `nn.RNN()` layer by just\n",
@@ -10762,7 +10761,7 @@
{
"cell_type": "code",
"execution_count": 109,
- "id": "5586a609",
+ "id": "c60876d7",
"metadata": {},
"outputs": [],
"source": [
@@ -10777,7 +10776,7 @@
},
{
"cell_type": "markdown",
- "id": "c1c361b4",
+ "id": "c7fc165f",
"metadata": {},
"source": [
"Creating a data module follows a familiar pattern."
@@ -10786,7 +10785,7 @@
{
"cell_type": "code",
"execution_count": 110,
- "id": "b72ecb13",
+ "id": "282f7e1c",
"metadata": {},
"outputs": [],
"source": [
@@ -10799,7 +10798,7 @@
},
{
"cell_type": "markdown",
- "id": "32016e95",
+ "id": "310271e1",
"metadata": {},
"source": [
"We build a `NonLinearARModel()` that takes as input the 20 features and a hidden layer with 32 units. The remaining steps are familiar."
@@ -10808,7 +10807,7 @@
{
"cell_type": "code",
"execution_count": 111,
- "id": "595df68b",
+ "id": "038fea74",
"metadata": {},
"outputs": [],
"source": [
@@ -10827,7 +10826,7 @@
{
"cell_type": "code",
"execution_count": 112,
- "id": "e8142533",
+ "id": "68d309b2",
"metadata": {},
"outputs": [],
"source": [
@@ -10841,7 +10840,7 @@
},
{
"cell_type": "markdown",
- "id": "86d4e139",
+ "id": "998d317c",
"metadata": {},
"source": [
"We continue with the usual training steps, fit the model,\n",
@@ -10851,7 +10850,7 @@
{
"cell_type": "code",
"execution_count": 113,
- "id": "47bdb236",
+ "id": "9fc113a1",
"metadata": {
"lines_to_next_cell": 0
},
@@ -10893,7 +10892,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f7abedb50db348d49e14abb6ac8ee82a",
+ "model_id": "6327380ca56a49628cb311d7382fe96d",
"version_major": 2,
"version_minor": 0
},
@@ -11194,7 +11193,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "0ae34f21f0364f47ae24e5b0a0758062",
+ "model_id": "e9c0c0840a4e4fe3bd9aa771a035ec2a",
"version_major": 2,
"version_minor": 0
},
@@ -11251,7 +11250,7 @@
},
{
"cell_type": "markdown",
- "id": "51f435d5",
+ "id": "66cd716d",
"metadata": {},
"source": [
" \n",
@@ -11263,8 +11262,8 @@
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
- "formats": "ipynb,Rmd",
- "main_language": "python"
+ "main_language": "python",
+ "notebook_metadata_filter": "-all"
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",