Files
deeplearn-torch/Chapter_4.ipynb

3568 lines
296 KiB
Plaintext
Raw Normal View History

2026-01-14 15:19:22 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:10:33.113447Z",
"start_time": "2021-04-05T02:10:31.845159Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"import torch\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torchvision \n",
"from torchvision import transforms\n",
"\n",
"from torch.utils.data import Dataset, DataLoader\n",
"\n",
"from tqdm.autonotebook import tqdm\n",
"\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.pyplot import imshow\n",
"\n",
"import pandas as pd\n",
"\n",
"from sklearn.metrics import accuracy_score\n",
"\n",
"import time\n",
"\n",
"from idlmam import train_simple_network, Flatten, weight_reset"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:10:33.119112Z",
"start_time": "2021-04-05T02:10:33.115084Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from IPython.display import set_matplotlib_formats\n",
"set_matplotlib_formats('png', 'pdf')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:10:33.126087Z",
"start_time": "2021-04-05T02:10:33.120528Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"torch.backends.cudnn.deterministic=True\n",
"from idlmam import set_seed, moveTo\n",
"set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:10:33.139614Z",
"start_time": "2021-04-05T02:10:33.127481Z"
},
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"device = torch.device(\"cuda\") if torch.cuda.is_available() else torch.device(\"cpu\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:10:33.176455Z",
"start_time": "2021-04-05T02:10:33.148272Z"
}
},
"outputs": [],
"source": [
"mnist_data_train = torchvision.datasets.MNIST(\"./data\", train=True, download=True, transform=transforms.ToTensor())\n",
"mnist_data_test = torchvision.datasets.MNIST(\"./data\", train=False, download=True, transform=transforms.ToTensor())\n",
" \n",
"mnist_train_loader = DataLoader(mnist_data_train, batch_size=64, shuffle=True)\n",
"mnist_test_loader = DataLoader(mnist_data_test, batch_size=64)\n",
"\n",
"#How many values are in the input? We use this to help determine the size of subsequent layers\n",
"D = 28*28 #28 * 28 images \n",
"#Hidden layer size\n",
"n = 256 \n",
"#How many channels are in the input?\n",
"C = 1\n",
"#How many classes are there?\n",
"classes = 10\n",
"\n",
"#Create our regular model \n",
"model_regular = nn.Sequential(\n",
" Flatten(), \n",
" nn.Linear(D, n), \n",
" nn.Tanh(),\n",
" nn.Linear(n, n), \n",
" nn.Tanh(),\n",
" nn.Linear(n, n), \n",
" nn.Tanh(),\n",
" nn.Linear(n, classes),\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:11:50.740875Z",
"start_time": "2021-04-05T02:10:33.178585Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "da2683ae8fa54706b89441415af56c1f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=10.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"loss_func = nn.CrossEntropyLoss()\n",
"regular_results = train_simple_network(model_regular, loss_func, mnist_train_loader, test_loader=mnist_test_loader, score_funcs={'Accuracy': accuracy_score}, device=device, epochs=10)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:11:50.747301Z",
"start_time": "2021-04-05T02:11:50.742556Z"
}
},
"outputs": [],
"source": [
"#Create the layer of weights of our network that we plan to share. \n",
"h_2 = nn.Linear(n, n)\n",
"model_shared = nn.Sequential(\n",
" Flatten(), \n",
" nn.Linear(D, n), \n",
" nn.Tanh(),\n",
" h_2, #First use\n",
" nn.Tanh(),\n",
" h_2, #Second use, now sharing the weights\n",
" nn.Tanh(),\n",
" nn.Linear(n, classes),\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:06.451415Z",
"start_time": "2021-04-05T02:11:50.748533Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8caeb31dafb64ce08931dc7765f4f3fd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=10.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=938.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=157.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"shared_results = train_simple_network(model_shared, loss_func, mnist_train_loader, test_loader=mnist_test_loader, score_funcs={'Accuracy': accuracy_score}, device=device, epochs=10)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:06.703906Z",
"start_time": "2021-04-05T02:13:06.452654Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Now we can plot the results, and compare them\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=regular_results, label='Normal')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=shared_results, label='Shared')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.424029Z",
"start_time": "2021-04-05T02:13:06.705150Z"
}
},
"outputs": [],
"source": [
"zip_file_url = \"https://download.pytorch.org/tutorial/data.zip\"\n",
"\n",
"import requests, zipfile, io\n",
"r = requests.get(zip_file_url)\n",
"z = zipfile.ZipFile(io.BytesIO(r.content))\n",
"z.extractall()\n",
"\n",
"#Zip file is organized as data/names/[LANG].txt , where [LANG] is a specific language"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.578702Z",
"start_time": "2021-04-05T02:13:07.425705Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Arabic : 2000\n",
"Chinese : 268\n",
"Czech : 519\n",
"Dutch : 297\n",
"English : 3668\n",
"French : 277\n",
"German : 724\n",
"Greek : 203\n",
"Irish : 232\n",
"Italian : 709\n",
"Japanese : 991\n",
"Korean : 94\n",
"Polish : 139\n",
"Portuguese : 74\n",
"Russian : 9408\n",
"Scottish : 100\n",
"Spanish : 298\n",
"Vietnamese : 73\n"
]
}
],
"source": [
"namge_language_data = {}\n",
"\n",
"#We will use some code to remove UNICODE tokens to make life easy for us processing wise\n",
"#e.g., convert something like \"Ślusàrski\" to Slusarski\n",
"import unicodedata\n",
"import string\n",
"\n",
"all_letters = string.ascii_letters + \" .,;'\"\n",
"n_letters = len(all_letters)\n",
"alphabet = {}\n",
"for i in range(n_letters):\n",
" alphabet[all_letters[i]] = i\n",
" \n",
"# Turn a Unicode string to plain ASCII, thanks to https://stackoverflow.com/a/518232/2809427\n",
"def unicodeToAscii(s):\n",
" return ''.join(\n",
" c for c in unicodedata.normalize('NFD', s)\n",
" if unicodedata.category(c) != 'Mn'\n",
" and c in all_letters\n",
" )\n",
"\n",
"#Loop through every language, open the zip file entry, and read all the lines from the text file. \n",
"for zip_path in z.namelist():\n",
" if \"data/names/\" in zip_path and zip_path.endswith(\".txt\"):\n",
" lang = zip_path[len(\"data/names/\"):-len(\".txt\")]\n",
" with z.open(zip_path) as myfile:\n",
" lang_names = [unicodeToAscii(line).lower() for line in str(myfile.read(), encoding='utf-8').strip().split(\"\\n\")]\n",
" namge_language_data[lang] = lang_names\n",
" print(lang, \": \", len(lang_names)) #Print out the name of each language too. "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.587570Z",
"start_time": "2021-04-05T02:13:07.580165Z"
}
},
"outputs": [],
"source": [
"class LanguageNameDataset(Dataset):\n",
" \n",
" def __init__(self, lang_name_dict, vocabulary):\n",
" self.label_names = [x for x in lang_name_dict.keys()]\n",
" self.data = []\n",
" self.labels = []\n",
" self.vocabulary = vocabulary\n",
" for y, language in enumerate(self.label_names):\n",
" for sample in lang_name_dict[language]:\n",
" self.data.append(sample)\n",
" self.labels.append(y)\n",
" \n",
" def __len__(self):\n",
" return len(self.data)\n",
" \n",
" def string2InputVec(self, input_string):\n",
" \"\"\"\n",
" This method will convert any input string into a vector of long values, according to the vocabulary used by this object. \n",
" input_string: the string to convert to a tensor\n",
" \"\"\"\n",
" T = len(input_string) #How many characters long is the string?\n",
" \n",
" #Create a new tensor to store the result in\n",
" name_vec = torch.zeros((T), dtype=torch.long)\n",
" #iterate through the string and place the appropriate values into the tensor\n",
" for pos, character in enumerate(input_string):\n",
" name_vec[pos] = self.vocabulary[character]\n",
" \n",
" return name_vec\n",
" \n",
" def __getitem__(self, idx):\n",
" name = self.data[idx]\n",
" label = self.labels[idx]\n",
" \n",
" #Conver the correct class label into a tensor for PyTorch\n",
" label_vec = torch.tensor([label], dtype=torch.long)\n",
" \n",
" return self.string2InputVec(name), label"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.597263Z",
"start_time": "2021-04-05T02:13:07.589150Z"
}
},
"outputs": [],
"source": [
"dataset = LanguageNameDataset(namge_language_data, alphabet)\n",
"\n",
"train_data, test_data = torch.utils.data.random_split(dataset, (len(dataset)-300, 300))\n",
"train_loader = DataLoader(train_data, batch_size=1, shuffle=True)\n",
"test_loader = DataLoader(test_data, batch_size=1, shuffle=False)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.606766Z",
"start_time": "2021-04-05T02:13:07.598682Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([5]) torch.Size([5, 2])\n",
"tensor([[ 0.7626, 0.1343],\n",
" [ 1.5189, 0.6567],\n",
" [ 1.5189, 0.6567],\n",
" [ 0.7626, 0.1343],\n",
" [-0.5718, 0.2879]])\n"
]
}
],
"source": [
"with torch.no_grad():\n",
" input_sequence = torch.tensor([0, 1, 1, 0, 2], dtype=torch.long)\n",
" embd = nn.Embedding(3, 2)\n",
" x_seq = embd(input_sequence)\n",
" print(input_sequence.shape, x_seq.shape)\n",
" print(x_seq)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.613422Z",
"start_time": "2021-04-05T02:13:07.608156Z"
}
},
"outputs": [],
"source": [
"class LastTimeStep(nn.Module):\n",
" \"\"\"\n",
" A class for extracting the hidden activations of the last time step following \n",
" the output of a PyTorch RNN module. \n",
" \"\"\"\n",
" def __init__(self, rnn_layers=1, bidirectional=False):\n",
" super(LastTimeStep, self).__init__()\n",
" self.rnn_layers = rnn_layers\n",
" if bidirectional:\n",
" self.num_driections = 2\n",
" else:\n",
" self.num_driections = 1 \n",
" \n",
" def forward(self, input):\n",
" #Result is either a tupe (out, h_t)\n",
" #or a tuple (out, (h_t, c_t))\n",
" rnn_output = input[0]\n",
" last_step = input[1] #this will be h_t\n",
" if(type(last_step) == tuple):#unless it's a tuple, \n",
" last_step = last_step[0]#then h_t is the first item in the tuple\n",
" batch_size = last_step.shape[1] #per docs, shape is: '(num_layers * num_directions, batch, hidden_size)'\n",
" #reshaping so that everything is separate \n",
" last_step = last_step.view(self.rnn_layers, self.num_driections, batch_size, -1)\n",
" #We want the last layer's results\n",
" last_step = last_step[self.rnn_layers-1] \n",
" #Re order so batch comes first\n",
" last_step = last_step.permute(1, 0, 2)\n",
" #Finally, flatten the last two dimensions into one\n",
" return last_step.reshape(batch_size, -1)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:13:07.620042Z",
"start_time": "2021-04-05T02:13:07.614864Z"
}
},
"outputs": [],
"source": [
"D = 64\n",
"vocab_size = len(all_letters)\n",
"hidden_nodes = 256\n",
"classes = len(dataset.label_names)\n",
"\n",
"first_rnn = nn.Sequential(\n",
" nn.Embedding(vocab_size, D), #(B, T) -> (B, T, D)\n",
" nn.RNN(D, hidden_nodes, batch_first=True), #(B, T, D) -> ( (B,T,D) , (S, B, D) )\n",
" #the tanh activation is built into the RNN object, so we don't need to do it here\n",
" LastTimeStep(), #We need to take the RNN output and reduce it to one item, (B, D)\n",
" nn.Linear(hidden_nodes, classes), #(B, D) -> (B, classes)\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.189455Z",
"start_time": "2021-04-05T02:13:07.621526Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6b316251899a4dc4a8acc7cd95a72ecb",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=5.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=19774.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=300.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=19774.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=300.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=19774.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=300.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=19774.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=300.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=19774.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=300.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"loss_func = nn.CrossEntropyLoss()\n",
"batch_one_train = train_simple_network(first_rnn, loss_func, train_loader, test_loader=test_loader, score_funcs={'Accuracy': accuracy_score}, device=device, epochs=5)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.442889Z",
"start_time": "2021-04-05T02:17:46.190875Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=batch_one_train, label='RNN')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.509455Z",
"start_time": "2021-04-05T02:17:46.444214Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Arabic : 0.002683540151338093 %\n",
"Chinese : 0.2679025521501899 %\n",
"Czech : 10.59301644563675 %\n",
"Dutch : 7.299012690782547 %\n",
"English : 36.81915104389191 %\n",
"French : 0.5335223395377398 %\n",
"German : 37.42799460887909 %\n",
"Greek : 0.018611310224514455 %\n",
"Irish : 0.7783998735249043 %\n",
"Italian : 1.1141937226057053 %\n",
"Japanese : 0.00488687728648074 %\n",
"Korean : 0.421459274366498 %\n",
"Polish : 1.1676722206175327 %\n",
"Portuguese : 0.08807195699773729 %\n",
"Russian : 1.2793921865522861 %\n",
"Scottish : 1.6346706077456474 %\n",
"Spanish : 0.14639737782999873 %\n",
"Vietnamese : 0.40296311490237713 %\n"
]
}
],
"source": [
"pred_rnn = first_rnn.to(\"cpu\").eval()\n",
"with torch.no_grad():\n",
" preds = F.softmax(pred_rnn(dataset.string2InputVec(\"frank\").reshape(1,-1)), dim=-1)\n",
" for class_id in range(len(dataset.label_names)):\n",
" print(dataset.label_names[class_id], \":\", preds[0,class_id].item()*100 , \"%\")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.516173Z",
"start_time": "2021-04-05T02:17:46.511040Z"
}
},
"outputs": [],
"source": [
"def pad_and_pack(batch):\n",
" #1, 2, & 3: organize the batch input lengths, inputs, and outputs as seperate lists\n",
" input_tensors = []\n",
" labels = []\n",
" lengths = []\n",
" for x, y in batch:\n",
" input_tensors.append(x)\n",
" labels.append(y)\n",
" lengths.append(x.shape[0]) #Assume shape is (T, *)\n",
" #4: create the padded version of the input\n",
" x_padded = torch.nn.utils.rnn.pad_sequence(input_tensors, batch_first=False)\n",
" #5: create the packed version from the padded & lengths\n",
" x_packed = torch.nn.utils.rnn.pack_padded_sequence(x_padded, lengths, batch_first=False, enforce_sorted=False)\n",
" #Convert the lengths into a tensor\n",
" y_batched = torch.as_tensor(labels, dtype=torch.long)\n",
" #6: return a tuple of the packed inputs and their labels\n",
" return x_packed, y_batched\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.521723Z",
"start_time": "2021-04-05T02:17:46.517329Z"
}
},
"outputs": [],
"source": [
"class EmbeddingPackable(nn.Module):\n",
" \"\"\"\n",
" The embedding layer in PyTorch does not support Packed Sequence objects. \n",
" This wrapper class will fix that. If a normal input comes in, it will \n",
" use the regular Embedding layer. Otherwise, it will work on the packed \n",
" sequence to return a new Packed sequence of the appropriate result. \n",
" \"\"\"\n",
" def __init__(self, embd_layer):\n",
" super(EmbeddingPackable, self).__init__()\n",
" self.embd_layer = embd_layer \n",
" \n",
" def forward(self, input):\n",
" if type(input) == torch.nn.utils.rnn.PackedSequence:\n",
" # We need to unpack the input, \n",
" sequences, lengths = torch.nn.utils.rnn.pad_packed_sequence(input.cpu(), batch_first=True)\n",
" #Embed it\n",
" sequences = self.embd_layer(sequences.to(input.data.device))\n",
" #And pack it into a new sequence\n",
" return torch.nn.utils.rnn.pack_padded_sequence(sequences, lengths.cpu(), \n",
" batch_first=True, enforce_sorted=False)\n",
" else:#apply to normal data\n",
" return self.embd_layer(input)\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.527559Z",
"start_time": "2021-04-05T02:17:46.522964Z"
}
},
"outputs": [],
"source": [
"B = 16\n",
"train_loader = DataLoader(train_data, batch_size=B, shuffle=True, collate_fn=pad_and_pack)\n",
"test_loader = DataLoader(test_data, batch_size=B, shuffle=False, collate_fn=pad_and_pack)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:17:46.536853Z",
"start_time": "2021-04-05T02:17:46.530407Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"text/plain": [
"Sequential(\n",
" (0): EmbeddingPackable(\n",
" (embd_layer): Embedding(57, 64)\n",
" )\n",
" (1): RNN(64, 256, batch_first=True)\n",
" (2): LastTimeStep()\n",
" (3): Linear(in_features=256, out_features=18, bias=True)\n",
")"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rnn_packed = nn.Sequential(\n",
" EmbeddingPackable(nn.Embedding(vocab_size, D)), #(B, T) -> (B, T, D)\n",
" nn.RNN(D, hidden_nodes, batch_first=True), #(B, T, D) -> ( (B,T,D) , (S, B, D) )\n",
" LastTimeStep(), #We need to take the RNN output and reduce it to one item, (B, D)\n",
" nn.Linear(hidden_nodes, classes), #(B, D) -> (B, classes)\n",
")\n",
"\n",
"rnn_packed.to(device)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:19:39.317005Z",
"start_time": "2021-04-05T02:17:46.538194Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3af97b85c32145739e5713fda57950f7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=20.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"packed_train = train_simple_network(rnn_packed, loss_func, train_loader, test_loader=test_loader, score_funcs={'Accuracy': accuracy_score}, device=device, epochs=20)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:19:39.582038Z",
"start_time": "2021-04-05T02:19:39.318290Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAuu0lEQVR4nO3deZwU1bn/8c/jsC+yo7IPiCD7MqKgIogQEEQxKrhEiLlBTNCY341LNDeaG80mMYohIvEaN1zAgMEFlxhAXJBFEWRflQFklX2dmef3RzXQDD1DDzPd1TPzfb9e/ZruqnOqnqnp6afrnKpzzN0RERHJ7bSwAxARkdSkBCEiIjEpQYiISExKECIiEpMShIiIxFQm7ACKUu3atb1JkyZhhyEiUmzMmzdvq7vXibWuRCWIJk2aMHfu3LDDEBEpNszs67zWqYlJRERiUoIQEZGYlCBERCSmEtUHISLxO3z4MJmZmRw4cCDsUCQJKlSoQIMGDShbtmzcdZQgREqpzMxMqlatSpMmTTCzsMORBHJ3tm3bRmZmJunp6XHXS2gTk5n1NbNlZrbSzO6Nsb6amb1hZl+a2SIz+2G8dUWkcA4cOECtWrWUHEoBM6NWrVoFPltMWIIwszRgDNAPaAVcb2atchX7KbDY3dsDPYA/m1m5OOuKSCEpOZQep/K3TmQTUxdgpbuvBjCzV4ArgcVRZRyoakHkVYDtQBZwfhx1JeLdRd+yaP3OQm2jVb1q9G1zZhFFJCIlQSITRH1gXdTrTIIP/mh/BaYAG4CqwGB3zzGzeOoCYGbDgeEAjRo1KprIi5GpCzdy2/jPASjMl8FrOjVQgpCkS0tLo23btmRlZZGens4LL7xA9erVWbt2Lenp6YwePZrbb78dgJEjR5KRkcGwYcMYNmwY77//PqtXr6Z8+fJs3bqVjIwM1q5dm+/+evTowcaNG6lYsSIHDx7k5z//OcOHD8+3zmOPPcbw4cOpVKlSnmUefPBBqlSpwi9+8YsCH4OJEyfy4IMPsmTJEmbPnk1GRkaBt5EoiUwQsT6ucs9O9D1gPnAp0Ax438xmxlk3WOg+DhgHkJGRUapmP1r27W7+e+KXdGxUnVeGX0D5MmlhhyRSIBUrVmT+/PkADB06lDFjxnD//fcDULduXR5//HFuvfVWypUrd0LdtLQ0nnnmGW677bYC7XP8+PFkZGSwfft2mjVrxrBhw2Ju/4jHHnuMm266Kd8EURht2rRh0qRJ3HrrrQnZfmEkspM6E2gY9boBwZlCtB8CkzywElgDtIyzbqm2c99hhr8wl8rlyzD2ps5KDlLsde3alfXr1x99XadOHXr16sVzzz0Xs/ydd97JX/7yF7Kysk5pf3v27KFy5cqkpQX/O7fddhsZGRm0bt2aBx54AIDRo0ezYcMGevbsSc+ePQF455136NSpE+3bt6dXr15Ht7d48WJ69OhB06ZNGT16dNxxnHvuubRo0eKUfodES+QZxByguZmlA+uBIcANucp8A/QCZprZGUALYDWwI466pVZ2jvOzV79gw479vDL8As44vULYIUkx95s3FrF4w64i3WareqfzwBWt4yqbnZ3NBx98wI9+9KPjlt97773069ePW2655YQ6jRo14qKLLuKFF17giiuuOG5dhw4djp6Z5HbjjTdSvnx5VqxYwWOPPXY0QTz88MPUrFmT7OxsevXqxYIFC7jjjjt49NFHmTZtGrVr12bLli38+Mc/5sMPPyQ9PZ3t27cf3e7SpUuZNm0au3fvpkWLFtx2222ULVuWiy++mN27d58Qx6hRo7jsssviOj5hSViCcPcsMxsJvAukAc+4+yIzGxFZPxb4LfCsmS0kaFa6x923AsSqm6hYi5tH31/G9GVbeHhQGzo3rhl2OCKnbP/+/XTo0IG1a9fSuXNnevfufdz69PR0unTpwksvvRSz/n333cfAgQPp37//ccvzSg5wrIlpy5YtdOvWjb59+9K4cWMmTJjAuHHjyMrKYuPGjSxevJh27dodV3fWrFl079796L0ENWse+//r378/5cuXp3z58tStW5dNmzbRoEEDZs6cWZBDklISeqOcu78NvJ1r2dio5xuAPvHWlaBTesy0VVzfpSE3nt847HCkhIj3m35RO9IHsXPnTgYMGMCYMWO44447jitz3333cc0119C9e/cT6p999tl06NCBCRMmFHjfderUoVOnTnz22Wfk5OQwatQo5syZQ40aNRg2bFjMewbcPc/LRcuXL3/0eVpa2tGmr+J8BqGxmIqR6E7pBweG8w8tkgjVqlVj9OjRjBo1isOHDx+3rmXLlrRq1Yo333wzZt3777+fUaNGFXif+/bt44svvqBZs2bs2rWLypUrU61aNTZt2sTUqVOPlqtaterRD/iuXbsyY8YM1qxZA3BcE1NeZs6cyfz58094pHpyACWIYkOd0lLSdezYkfbt2/PKK6+csO7+++8nMzMzZr3WrVvTqVOn45Z16NAhz/3ceOONdOjQgc6dOzNs2DA6d+5M+/bt6dixI61bt+aWW27hwgsvPFp++PDh9OvXj549e1KnTh3GjRvH1VdfTfv27Rk8ePCp/bJRJk+eTIMGDfj000/p378/3/ve9wq9zaJi7iXnytCMjAwviRMGZec4tzw7h09WbeWV4Reo30GKxJIlSzj33HPDDkOSKNbf3MzmuXvMmy80WF8x8Oj7y5ixXJ3SIpJcamJKceqUFpGwKEGksCOd0p3UKS0iIVCCSFHRndJPqlNaREKgBJGCsnOcO14J7pQee1Mn3SktIqFQJ3UK+vN76pQWkfDpDCLFvL1wI3+brk5pKR3S0tLo0KEDbdq04YorrmDHjh0ArF27FjPjiSeeOFp25MiRPPvsswAMGzaM+vXrc/DgQQC2bt1KkyZNYu6jSZMmtG3blvbt29OnTx++/fbbPON59tlnGTlyZJH8bifbZiL2BfD666+zeHHRTJ2jBJFCln27m1+oU1pKkSNDbXz11VfUrFmTMWPGHF13ZLjvQ4cOxax7ZLjveEybNo0vv/ySjIwMfve73xVJ7KlKCaIEUqe0lHbJGO67e/furFy5ktmzZ9OtWzc6duxIt27dWLZs2Qll33rrLbp27crWrVvZtGkTgwYNon379rRv355PPvkEgBdffJEuXbrQoUMHbr31VrKzswH4xz/+wTnnnMMll1zCxx9/fNK4hg0bxh133EG3bt1o2rQpr732GgDTp0+ne/fuDBo0iFatWjFixAhycnIAqFKlytH6r732GsOGDeOTTz5hypQp3HXXXXTo0IFVq1bFfWxiUR9ECojulNbw3RKKqffCtwuLdptntoV+f4iraLKG+37zzTdp27YtLVu25MMPP6RMmTL8+9//5r777uOf//zn0XKTJ0/m0Ucf5e2336ZGjRoMHjyYSy65hMmTJ5Odnc2ePXtYsmQJr776Kh9//DFly5blJz/5CePHj6d379488MADzJs3j2rVqtGzZ086dux40mOwceNGPvroI5YuXcrAgQO55pprAJg9ezaLFy+mcePG9O3bl0mTJh1dl1u3bt0YOHAgAwYMyLNMQShBpIAjd0r/blBbdUpLqZKs4b579uxJWloa7dq146GHHmLnzp0MHTqUFStWYGbHDRA4bdo05s6dy3vvvcfpp58OwH/+8x+ef/55IGjaqlatGi+88ALz5s3jvPPOO/q71K1bl88++4wePXpQp04dAAYPHszy5ctPeiyuuuoqTjvtNFq1asWmTZuOLu/SpQtNmzYF4Prrr+ejjz4qkg//eChBhGzt1r2MnbGaazs34IbzS9+c2pIi4vymX9SSNdz3kQl/jrjzzjvp2bMnkydPZu3atfTo0ePouqZNm7J69WqWL1+e7/zQ7s7QoUP5/e9/f9zy119/Pc8hwfMTPVx49Bh5ubd15HX08lhDkxcF9UGEbMy0lZQ5zbirb2pOOSiSDMke7nvnzp3Ur18f4OiVUUc0btyYSZMmcfPNN7NoUTBPWa9evXjyySeBoDls165d9OrVi9dee43NmzcDwdDfX3/9Neeffz7Tp09n27ZtHD58mIkTJxYottx
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=batch_one_train, label='RNN: Batch=1')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=packed_train, label='RNN:Pakced Input')"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:19:39.832368Z",
"start_time": "2021-04-05T02:19:39.583652Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='total time', ylabel='test Accuracy'>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='total time', y='test Accuracy', data=batch_one_train, label='RNN: Batch=1')\n",
"sns.lineplot(x='total time', y='test Accuracy', data=packed_train, label='RNN:Pakced Input')"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:19:39.901151Z",
"start_time": "2021-04-05T02:19:39.833986Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Arabic : 0.586722744628787 %\n",
"Chinese : 0.5682710558176041 %\n",
"Czech : 15.79725593328476 %\n",
"Dutch : 5.215919017791748 %\n",
"English : 42.07158088684082 %\n",
"French : 1.7968742176890373 %\n",
"German : 13.949412107467651 %\n",
"Greek : 0.40299338288605213 %\n",
"Irish : 2.425672672688961 %\n",
"Italian : 5.216174945235252 %\n",
"Japanese : 0.3031977219507098 %\n",
"Korean : 0.7202120032161474 %\n",
"Polish : 2.772565931081772 %\n",
"Portuguese : 0.9149040095508099 %\n",
"Russian : 4.370814561843872 %\n",
"Scottish : 1.0111995041370392 %\n",
"Spanish : 1.2703102082014084 %\n",
"Vietnamese : 0.6059217266738415 %\n"
]
}
],
"source": [
"pred_rnn = rnn_packed.to(\"cpu\").eval()\n",
"\n",
"with torch.no_grad():\n",
" preds = F.softmax(pred_rnn(dataset.string2InputVec(\"frank\").reshape(1,-1)), dim=-1)\n",
" for class_id in range(len(dataset.label_names)):\n",
" print(dataset.label_names[class_id], \":\", preds[0,class_id].item()*100 , \"%\")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:22:10.628335Z",
"start_time": "2021-04-05T02:19:39.902969Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "356efdc9c90d4534aa381cc713b8bd23",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=20.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"rnn_3layer = nn.Sequential(\n",
" EmbeddingPackable(nn.Embedding(vocab_size, D)), #(B, T) -> (B, T, D)\n",
" nn.RNN(D, hidden_nodes, num_layers=3, batch_first=True), #(B, T, D) -> ( (B,T,D) , (S, B, D) )\n",
" LastTimeStep(rnn_layers=3), #We need to take the RNN output and reduce it to one item, (B, D)\n",
" nn.Linear(hidden_nodes, classes), #(B, D) -> (B, classes)\n",
")\n",
"\n",
"rnn_3layer.to(device)\n",
"rnn_3layer_results = train_simple_network(rnn_3layer, loss_func, train_loader, test_loader=test_loader, score_funcs={'Accuracy': accuracy_score}, device=device, epochs=20, lr=0.01)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:22:10.895760Z",
"start_time": "2021-04-05T02:22:10.629737Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=packed_train, label='RNN: 1-Layer')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=rnn_3layer_results, label='RNN: 3-Layer')"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:25:25.544944Z",
"start_time": "2021-04-05T02:22:10.897146Z"
},
"tags": [
"remove_output"
]
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f83b2184a5b54713bdd62fc769d7d38e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Epoch'), FloatProgress(value=0.0, max=20.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Training'), FloatProgress(value=0.0, max=1236.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value='Testing'), FloatProgress(value=0.0, max=19.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"rnn_3layer_bidir = nn.Sequential(\n",
" EmbeddingPackable(nn.Embedding(vocab_size, D)), #(B, T) -> (B, T, D)\n",
" nn.RNN(D, hidden_nodes, num_layers=3, batch_first=True, bidirectional=True), #(B, T, D) -> ( (B,T,D) , (S, B, D) )\n",
" LastTimeStep(rnn_layers=3, bidirectional=True), #We need to take the RNN output and reduce it to one item, (B, D)\n",
" nn.Linear(hidden_nodes*2, classes), #(B, D) -> (B, classes)\n",
")\n",
"\n",
"rnn_3layer_bidir.to(device)\n",
"rnn_3layer_bidir_results = train_simple_network(rnn_3layer_bidir, loss_func, train_loader, test_loader=test_loader, score_funcs={'Accuracy': accuracy_score}, device=device, epochs=20, lr=0.01)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2021-04-05T02:25:25.846176Z",
"start_time": "2021-04-05T02:25:25.546310Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='epoch', ylabel='test Accuracy'>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x='epoch', y='test Accuracy', data=packed_train, label='RNN: 1-Layer')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=rnn_3layer_results, label='RNN: 3-Layer')\n",
"sns.lineplot(x='epoch', y='test Accuracy', data=rnn_3layer_bidir_results, label='RNN: 3-Layer BiDir')"
]
}
],
"metadata": {
"author": "A Note About Classification &amp; Meaning",
"celltoolbar": "Tags",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autoclose": false,
"autocomplete": true,
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
},
"latex_metadata": {
"title": "Recurrent Neural Networks"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}