Copy disabled (too large)
Download .txt
Showing preview only (35,530K chars total). Download the full file to get everything.
Repository: arj7192/MasteringPyTorchV2
Branch: main
Commit: 2f9dd18b4cef
Files: 110
Total size: 45.5 MB
Directory structure:
gitextract_0oyxwd3s/
├── .gitignore
├── Chapter01/
│ ├── mnist_pytorch.ipynb
│ └── mnist_tensorflow.ipynb
├── Chapter02/
│ ├── DenseNetBlock.ipynb
│ ├── GoogLeNet.ipynb
│ ├── ResNetBlock.ipynb
│ ├── imagenet1000_clsidx_to_labels.txt
│ ├── lenet.ipynb
│ ├── transfer_learning_alexnet.ipynb
│ └── vgg13_pretrained_run_inference.ipynb
├── Chapter03/
│ └── image_captioning_pytorch.ipynb
├── Chapter04/
│ ├── lstm.ipynb
│ └── rnn.ipynb
├── Chapter05/
│ ├── out_of_the_box_transformers.ipynb
│ ├── rand_wire_nn.ipynb
│ └── transformer.ipynb
├── Chapter06/
│ └── GNN.ipynb
├── Chapter07/
│ ├── music_generation.ipynb
│ ├── text_generation.ipynb
│ ├── text_generation_out_of_the_box.ipynb
│ └── text_generation_out_of_the_box_gpt3.ipynb
├── Chapter08/
│ └── neural_style_transfer.ipynb
├── Chapter09/
│ ├── dcgan.ipynb
│ └── pix2pix_architecture.ipynb
├── Chapter10/
│ ├── image_generation_using_diffusion.ipynb
│ ├── taj_mahal_image.ipynb
│ └── text_to_image_generation_using_stable_diffusion_v1_5.ipynb
├── Chapter11/
│ └── pong.ipynb
├── Chapter12/
│ ├── convnet_distributed.py
│ ├── convnet_distributed_cuda.py
│ ├── convnet_undistributed.py
│ ├── convnet_undistributed_cuda.py
│ └── convnet_undistributed_cuda_amp.py
├── Chapter13/
│ ├── Dockerfile
│ ├── convnet.onnx
│ ├── convnet.pb
│ ├── convnet.pth
│ ├── convnet.py
│ ├── convnet_handler.py
│ ├── convnet_tf/
│ │ ├── convnet_float16.tflite
│ │ ├── convnet_float32.tflite
│ │ ├── fingerprint.pb
│ │ ├── saved_model.pb
│ │ └── variables/
│ │ ├── variables.data-00000-of-00001
│ │ └── variables.index
│ ├── cpp_convnet/
│ │ ├── CMakeLists.txt
│ │ └── cpp_convnet.cpp
│ ├── example.py
│ ├── make_request.py
│ ├── mnist_pytorch.ipynb
│ ├── model_scripting.ipynb
│ ├── model_store/
│ │ └── convnet.mar
│ ├── model_tracing.ipynb
│ ├── onnx.ipynb
│ ├── requirements.txt
│ ├── run_inference.ipynb
│ ├── scripted_convnet.pt
│ ├── server.py
│ └── traced_convnet.pt
├── Chapter14/
│ ├── Android/
│ │ ├── app/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets/
│ │ │ │ └── optimized_for_mobile_traced_model.pt
│ │ │ ├── java/
│ │ │ │ └── org/
│ │ │ │ └── pytorch/
│ │ │ │ └── mastering_pytorch_v2_mnist/
│ │ │ │ └── MainActivity.java
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── layout/
│ │ │ │ └── activity_main.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── mobile_optimized_model.py
│ │ └── settings.gradle
│ └── iOS/
│ └── HelloWorld/
│ ├── HelloWorld/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── CaptureViewController.swift
│ │ ├── Info.plist
│ │ ├── PreviewViewController.swift
│ │ ├── SceneDelegate.swift
│ │ ├── TorchBridge/
│ │ │ ├── HelloWorld-Bridging-Header.h
│ │ │ ├── TorchModule.h
│ │ │ └── TorchModule.mm
│ │ ├── UIImage+Helper.swift
│ │ └── model/
│ │ ├── digits.txt
│ │ └── model.pt
│ ├── HelloWorld.xcodeproj/
│ │ └── project.pbxproj
│ └── Podfile
├── Chapter15/
│ ├── fastai.ipynb
│ ├── poutyne.ipynb
│ ├── pytorch_lightning.ipynb
│ └── pytorch_profiler.ipynb
├── Chapter16/
│ ├── automl-pytorch.ipynb
│ └── optuna_pytorch.ipynb
├── Chapter17/
│ ├── captum_interpretability.ipynb
│ └── pytorch_interpretability.ipynb
├── Chapter18/
│ └── torch-recsys.ipynb
├── Chapter19/
│ ├── HuggingFaceAccelerate.ipynb
│ ├── HuggingFaceDatasets.ipynb
│ ├── HuggingFaceHub.ipynb
│ ├── HuggingFaceOptimum.ipynb
│ └── HuggingFacePyTorch.ipynb
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
================================================
FILE: Chapter01/mnist_pytorch.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## import modules"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: torch==2.2 in /opt/anaconda3/lib/python3.8/site-packages (2.2.0)\n",
"Requirement already satisfied: filelock in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2) (3.12.2)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2) (1.12)\n",
"Requirement already satisfied: networkx in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2) (3.1)\n",
"Requirement already satisfied: jinja2 in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2) (2023.10.0)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/anaconda3/lib/python3.8/site-packages (from jinja2->torch==2.2) (2.1.1)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/anaconda3/lib/python3.8/site-packages (from sympy->torch==2.2) (1.3.0)\n",
"Requirement already satisfied: torchvision==0.17 in /opt/anaconda3/lib/python3.8/site-packages (0.17.0)\n",
"Requirement already satisfied: numpy in /opt/anaconda3/lib/python3.8/site-packages (from torchvision==0.17) (1.23.1)\n",
"Requirement already satisfied: requests in /opt/anaconda3/lib/python3.8/site-packages (from torchvision==0.17) (2.28.1)\n",
"Requirement already satisfied: torch==2.2.0 in /opt/anaconda3/lib/python3.8/site-packages (from torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /opt/anaconda3/lib/python3.8/site-packages (from torchvision==0.17) (10.0.1)\n",
"Requirement already satisfied: filelock in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2.0->torchvision==0.17) (3.12.2)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2.0->torchvision==0.17) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2.0->torchvision==0.17) (1.12)\n",
"Requirement already satisfied: networkx in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2.0->torchvision==0.17) (3.1)\n",
"Requirement already satisfied: jinja2 in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2.0->torchvision==0.17) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/anaconda3/lib/python3.8/site-packages (from torch==2.2.0->torchvision==0.17) (2023.10.0)\n",
"Requirement already satisfied: charset-normalizer<3,>=2 in /opt/anaconda3/lib/python3.8/site-packages (from requests->torchvision==0.17) (2.0.4)\n",
"Requirement already satisfied: idna<4,>=2.5 in /opt/anaconda3/lib/python3.8/site-packages (from requests->torchvision==0.17) (3.3)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/anaconda3/lib/python3.8/site-packages (from requests->torchvision==0.17) (1.26.10)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /opt/anaconda3/lib/python3.8/site-packages (from requests->torchvision==0.17) (2022.6.15)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/anaconda3/lib/python3.8/site-packages (from jinja2->torch==2.2.0->torchvision==0.17) (2.1.1)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/anaconda3/lib/python3.8/site-packages (from sympy->torch==2.2.0->torchvision==0.17) (1.3.0)\n",
"Collecting matplotlib==3.5.2\n",
" Downloading matplotlib-3.5.2-cp38-cp38-macosx_10_9_x86_64.whl (7.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.3/7.3 MB\u001b[0m \u001b[31m5.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0mm\n",
"\u001b[?25hRequirement already satisfied: cycler>=0.10 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (4.25.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (1.4.4)\n",
"Requirement already satisfied: numpy>=1.17 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (1.23.1)\n",
"Requirement already satisfied: packaging>=20.0 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (21.3)\n",
"Requirement already satisfied: pillow>=6.2.0 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (10.0.1)\n",
"Requirement already satisfied: pyparsing>=2.2.1 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (3.0.9)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /opt/anaconda3/lib/python3.8/site-packages (from matplotlib==3.5.2) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in /opt/anaconda3/lib/python3.8/site-packages (from python-dateutil>=2.7->matplotlib==3.5.2) (1.16.0)\n",
"Installing collected packages: matplotlib\n",
" Attempting uninstall: matplotlib\n",
" Found existing installation: matplotlib 3.7.2\n",
" Uninstalling matplotlib-3.7.2:\n",
" Successfully uninstalled matplotlib-3.7.2\n",
"\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
"catboost 0.26.1 requires graphviz, which is not installed.\n",
"catboost 0.26.1 requires plotly, which is not installed.\u001b[0m\u001b[31m\n",
"\u001b[0mSuccessfully installed matplotlib-3.5.2\n"
]
}
],
"source": [
"!pip install torch==2.2\n",
"!pip install torchvision==0.17\n",
"!pip install matplotlib==3.5.2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torch.optim as optim\n",
"from torch.utils.data import DataLoader\n",
"from torchvision import datasets, transforms\n",
"\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## define model architecture"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class ConvNet(nn.Module):\n",
" def __init__(self):\n",
" super(ConvNet, self).__init__()\n",
" self.cn1 = nn.Conv2d(1, 16, 3, 1)\n",
" self.cn2 = nn.Conv2d(16, 32, 3, 1)\n",
" self.dp1 = nn.Dropout2d(0.10)\n",
" self.dp2 = nn.Dropout2d(0.25)\n",
" self.fc1 = nn.Linear(4608, 64) # 4608 is basically 12 X 12 X 32\n",
" self.fc2 = nn.Linear(64, 10)\n",
" \n",
" def forward(self, x):\n",
" x = self.cn1(x)\n",
" x = F.relu(x)\n",
" x = self.cn2(x)\n",
" x = F.relu(x)\n",
" x = F.max_pool2d(x, 2)\n",
" x = self.dp1(x)\n",
" x = torch.flatten(x, 1)\n",
" x = self.fc1(x)\n",
" x = F.relu(x)\n",
" x = self.dp2(x)\n",
" x = self.fc2(x)\n",
" op = F.log_softmax(x, dim=1)\n",
" return op"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## define training and inference routines"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def train(model, device, train_dataloader, optim, epoch):\n",
" model.train()\n",
" for b_i, (X, y) in enumerate(train_dataloader):\n",
" X, y = X.to(device), y.to(device)\n",
" optim.zero_grad()\n",
" pred_prob = model(X)\n",
" loss = F.nll_loss(pred_prob, y) # nll is the negative likelihood loss\n",
" loss.backward()\n",
" optim.step()\n",
" if b_i % 10 == 0:\n",
" print('epoch: {} [{}/{} ({:.0f}%)]\\t training loss: {:.6f}'.format(\n",
" epoch, b_i * len(X), len(train_dataloader.dataset),\n",
" 100. * b_i / len(train_dataloader), loss.item()))\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def test(model, device, test_dataloader):\n",
" model.eval()\n",
" loss = 0\n",
" success = 0\n",
" with torch.no_grad():\n",
" for X, y in test_dataloader:\n",
" X, y = X.to(device), y.to(device)\n",
" pred_prob = model(X)\n",
" loss += F.nll_loss(pred_prob, y, reduction='sum').item() # loss summed across the batch\n",
" pred = pred_prob.argmax(dim=1, keepdim=True) # us argmax to get the most likely prediction\n",
" success += pred.eq(y.view_as(pred)).sum().item()\n",
"\n",
" loss /= len(test_dataloader.dataset)\n",
"\n",
" print('\\nTest dataset: Overall Loss: {:.4f}, Overall Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
" loss, success, len(test_dataloader.dataset),\n",
" 100. * success / len(test_dataloader.dataset)))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## create data loaders"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# The mean and standard deviation values are calculated as the mean of all pixel values of all images in the training dataset\n",
"train_dataloader = torch.utils.data.DataLoader(\n",
" datasets.MNIST('../data', train=True, download=True,\n",
" transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1302,), (0.3069,))])), # train_X.mean()/256. and train_X.std()/256.\n",
" batch_size=32, shuffle=True)\n",
"\n",
"test_dataloader = torch.utils.data.DataLoader(\n",
" datasets.MNIST('../data', train=False, \n",
" transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1302,), (0.3069,)) \n",
" ])),\n",
" batch_size=500, shuffle=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## define optimizer and run training epochs"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"torch.manual_seed(0)\n",
"device = torch.device(\"cpu\")\n",
"\n",
"model = ConvNet()\n",
"optimizer = optim.Adadelta(model.parameters(), lr=0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## model training"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/anaconda3/lib/python3.8/site-packages/torch/nn/functional.py:1347: UserWarning: dropout2d: Received a 2-D input to dropout2d, which is deprecated and will result in an error in a future release. To retain the behavior and silence this warning, please use dropout instead. Note that dropout2d exists to provide channel-wise dropout on inputs with 2 spatial dimensions, a channel dimension, and an optional batch dimension (i.e. 3D or 4D inputs).\n",
" warnings.warn(warn_msg)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 1 [0/60000 (0%)]\t training loss: 2.310609\n",
"epoch: 1 [320/60000 (1%)]\t training loss: 1.924133\n",
"epoch: 1 [640/60000 (1%)]\t training loss: 1.313336\n",
"epoch: 1 [960/60000 (2%)]\t training loss: 0.796470\n",
"epoch: 1 [1280/60000 (2%)]\t training loss: 0.819801\n",
"epoch: 1 [1600/60000 (3%)]\t training loss: 0.678443\n",
"epoch: 1 [1920/60000 (3%)]\t training loss: 0.477794\n",
"epoch: 1 [2240/60000 (4%)]\t training loss: 0.527351\n",
"epoch: 1 [2560/60000 (4%)]\t training loss: 0.469222\n",
"epoch: 1 [2880/60000 (5%)]\t training loss: 0.243136\n",
"epoch: 1 [3200/60000 (5%)]\t training loss: 0.526528\n",
"epoch: 1 [3520/60000 (6%)]\t training loss: 0.271501\n",
"epoch: 1 [3840/60000 (6%)]\t training loss: 0.473249\n",
"epoch: 1 [4160/60000 (7%)]\t training loss: 0.425321\n",
"epoch: 1 [4480/60000 (7%)]\t training loss: 0.321529\n",
"epoch: 1 [4800/60000 (8%)]\t training loss: 0.492590\n",
"epoch: 1 [5120/60000 (9%)]\t training loss: 0.153583\n",
"epoch: 1 [5440/60000 (9%)]\t training loss: 0.378470\n",
"epoch: 1 [5760/60000 (10%)]\t training loss: 0.081257\n",
"epoch: 1 [6080/60000 (10%)]\t training loss: 0.179030\n",
"epoch: 1 [6400/60000 (11%)]\t training loss: 0.288427\n",
"epoch: 1 [6720/60000 (11%)]\t training loss: 0.074618\n",
"epoch: 1 [7040/60000 (12%)]\t training loss: 0.361489\n",
"epoch: 1 [7360/60000 (12%)]\t training loss: 0.040892\n",
"epoch: 1 [7680/60000 (13%)]\t training loss: 0.366419\n",
"epoch: 1 [8000/60000 (13%)]\t training loss: 0.233954\n",
"epoch: 1 [8320/60000 (14%)]\t training loss: 0.352702\n",
"epoch: 1 [8640/60000 (14%)]\t training loss: 0.197109\n",
"epoch: 1 [8960/60000 (15%)]\t training loss: 0.052798\n",
"epoch: 1 [9280/60000 (15%)]\t training loss: 0.335245\n",
"epoch: 1 [9600/60000 (16%)]\t training loss: 0.237222\n",
"epoch: 1 [9920/60000 (17%)]\t training loss: 0.201199\n",
"epoch: 1 [10240/60000 (17%)]\t training loss: 0.176377\n",
"epoch: 1 [10560/60000 (18%)]\t training loss: 0.373226\n",
"epoch: 1 [10880/60000 (18%)]\t training loss: 0.076131\n",
"epoch: 1 [11200/60000 (19%)]\t training loss: 0.058454\n",
"epoch: 1 [11520/60000 (19%)]\t training loss: 0.224688\n",
"epoch: 1 [11840/60000 (20%)]\t training loss: 0.055108\n",
"epoch: 1 [12160/60000 (20%)]\t training loss: 0.394658\n",
"epoch: 1 [12480/60000 (21%)]\t training loss: 0.023986\n",
"epoch: 1 [12800/60000 (21%)]\t training loss: 0.076887\n",
"epoch: 1 [13120/60000 (22%)]\t training loss: 0.130194\n",
"epoch: 1 [13440/60000 (22%)]\t training loss: 0.169833\n",
"epoch: 1 [13760/60000 (23%)]\t training loss: 0.063333\n",
"epoch: 1 [14080/60000 (23%)]\t training loss: 0.057037\n",
"epoch: 1 [14400/60000 (24%)]\t training loss: 0.076323\n",
"epoch: 1 [14720/60000 (25%)]\t training loss: 0.150843\n",
"epoch: 1 [15040/60000 (25%)]\t training loss: 0.344049\n",
"epoch: 1 [15360/60000 (26%)]\t training loss: 0.075826\n",
"epoch: 1 [15680/60000 (26%)]\t training loss: 0.104628\n",
"epoch: 1 [16000/60000 (27%)]\t training loss: 0.106275\n",
"epoch: 1 [16320/60000 (27%)]\t training loss: 0.165156\n",
"epoch: 1 [16640/60000 (28%)]\t training loss: 0.049361\n",
"epoch: 1 [16960/60000 (28%)]\t training loss: 0.271804\n",
"epoch: 1 [17280/60000 (29%)]\t training loss: 0.061669\n",
"epoch: 1 [17600/60000 (29%)]\t training loss: 0.034274\n",
"epoch: 1 [17920/60000 (30%)]\t training loss: 0.030790\n",
"epoch: 1 [18240/60000 (30%)]\t training loss: 0.026090\n",
"epoch: 1 [18560/60000 (31%)]\t training loss: 0.051671\n",
"epoch: 1 [18880/60000 (31%)]\t training loss: 0.227361\n",
"epoch: 1 [19200/60000 (32%)]\t training loss: 0.064720\n",
"epoch: 1 [19520/60000 (33%)]\t training loss: 0.061596\n",
"epoch: 1 [19840/60000 (33%)]\t training loss: 0.071337\n",
"epoch: 1 [20160/60000 (34%)]\t training loss: 0.121726\n",
"epoch: 1 [20480/60000 (34%)]\t training loss: 0.051323\n",
"epoch: 1 [20800/60000 (35%)]\t training loss: 0.219196\n",
"epoch: 1 [21120/60000 (35%)]\t training loss: 0.294058\n",
"epoch: 1 [21440/60000 (36%)]\t training loss: 0.256530\n",
"epoch: 1 [21760/60000 (36%)]\t training loss: 0.091234\n",
"epoch: 1 [22080/60000 (37%)]\t training loss: 0.095530\n",
"epoch: 1 [22400/60000 (37%)]\t training loss: 0.127754\n",
"epoch: 1 [22720/60000 (38%)]\t training loss: 0.277246\n",
"epoch: 1 [23040/60000 (38%)]\t training loss: 0.074074\n",
"epoch: 1 [23360/60000 (39%)]\t training loss: 0.130422\n",
"epoch: 1 [23680/60000 (39%)]\t training loss: 0.229541\n",
"epoch: 1 [24000/60000 (40%)]\t training loss: 0.163723\n",
"epoch: 1 [24320/60000 (41%)]\t training loss: 0.051963\n",
"epoch: 1 [24640/60000 (41%)]\t training loss: 0.121045\n",
"epoch: 1 [24960/60000 (42%)]\t training loss: 0.031830\n",
"epoch: 1 [25280/60000 (42%)]\t training loss: 0.028205\n",
"epoch: 1 [25600/60000 (43%)]\t training loss: 0.565695\n",
"epoch: 1 [25920/60000 (43%)]\t training loss: 0.433864\n",
"epoch: 1 [26240/60000 (44%)]\t training loss: 0.144377\n",
"epoch: 1 [26560/60000 (44%)]\t training loss: 0.039207\n",
"epoch: 1 [26880/60000 (45%)]\t training loss: 0.201661\n",
"epoch: 1 [27200/60000 (45%)]\t training loss: 0.010683\n",
"epoch: 1 [27520/60000 (46%)]\t training loss: 0.033056\n",
"epoch: 1 [27840/60000 (46%)]\t training loss: 0.115183\n",
"epoch: 1 [28160/60000 (47%)]\t training loss: 0.051090\n",
"epoch: 1 [28480/60000 (47%)]\t training loss: 0.360858\n",
"epoch: 1 [28800/60000 (48%)]\t training loss: 0.127048\n",
"epoch: 1 [29120/60000 (49%)]\t training loss: 0.255457\n",
"epoch: 1 [29440/60000 (49%)]\t training loss: 0.016145\n",
"epoch: 1 [29760/60000 (50%)]\t training loss: 0.059749\n",
"epoch: 1 [30080/60000 (50%)]\t training loss: 0.499278\n",
"epoch: 1 [30400/60000 (51%)]\t training loss: 0.137309\n",
"epoch: 1 [30720/60000 (51%)]\t training loss: 0.225040\n",
"epoch: 1 [31040/60000 (52%)]\t training loss: 0.098170\n",
"epoch: 1 [31360/60000 (52%)]\t training loss: 0.060538\n",
"epoch: 1 [31680/60000 (53%)]\t training loss: 0.026351\n",
"epoch: 1 [32000/60000 (53%)]\t training loss: 0.007564\n",
"epoch: 1 [32320/60000 (54%)]\t training loss: 0.145845\n",
"epoch: 1 [32640/60000 (54%)]\t training loss: 0.094645\n",
"epoch: 1 [32960/60000 (55%)]\t training loss: 0.056865\n",
"epoch: 1 [33280/60000 (55%)]\t training loss: 0.260084\n",
"epoch: 1 [33600/60000 (56%)]\t training loss: 0.168328\n",
"epoch: 1 [33920/60000 (57%)]\t training loss: 0.011110\n",
"epoch: 1 [34240/60000 (57%)]\t training loss: 0.026420\n",
"epoch: 1 [34560/60000 (58%)]\t training loss: 0.004366\n",
"epoch: 1 [34880/60000 (58%)]\t training loss: 0.111717\n",
"epoch: 1 [35200/60000 (59%)]\t training loss: 0.283059\n",
"epoch: 1 [35520/60000 (59%)]\t training loss: 0.224866\n",
"epoch: 1 [35840/60000 (60%)]\t training loss: 0.026307\n",
"epoch: 1 [36160/60000 (60%)]\t training loss: 0.135638\n",
"epoch: 1 [36480/60000 (61%)]\t training loss: 0.077742\n",
"epoch: 1 [36800/60000 (61%)]\t training loss: 0.121565\n",
"epoch: 1 [37120/60000 (62%)]\t training loss: 0.048123\n",
"epoch: 1 [37440/60000 (62%)]\t training loss: 0.205519\n",
"epoch: 1 [37760/60000 (63%)]\t training loss: 0.037749\n",
"epoch: 1 [38080/60000 (63%)]\t training loss: 0.112108\n",
"epoch: 1 [38400/60000 (64%)]\t training loss: 0.035309\n",
"epoch: 1 [38720/60000 (65%)]\t training loss: 0.307914\n",
"epoch: 1 [39040/60000 (65%)]\t training loss: 0.037798\n",
"epoch: 1 [39360/60000 (66%)]\t training loss: 0.163565\n",
"epoch: 1 [39680/60000 (66%)]\t training loss: 0.016590\n",
"epoch: 1 [40000/60000 (67%)]\t training loss: 0.125728\n",
"epoch: 1 [40320/60000 (67%)]\t training loss: 0.070039\n",
"epoch: 1 [40640/60000 (68%)]\t training loss: 0.189903\n",
"epoch: 1 [40960/60000 (68%)]\t training loss: 0.192647\n",
"epoch: 1 [41280/60000 (69%)]\t training loss: 0.210488\n",
"epoch: 1 [41600/60000 (69%)]\t training loss: 0.151223\n",
"epoch: 1 [41920/60000 (70%)]\t training loss: 0.033853\n",
"epoch: 1 [42240/60000 (70%)]\t training loss: 0.011853\n",
"epoch: 1 [42560/60000 (71%)]\t training loss: 0.033307\n",
"epoch: 1 [42880/60000 (71%)]\t training loss: 0.066634\n",
"epoch: 1 [43200/60000 (72%)]\t training loss: 0.034860\n",
"epoch: 1 [43520/60000 (73%)]\t training loss: 0.248715\n",
"epoch: 1 [43840/60000 (73%)]\t training loss: 0.050338\n",
"epoch: 1 [44160/60000 (74%)]\t training loss: 0.135645\n",
"epoch: 1 [44480/60000 (74%)]\t training loss: 0.055865\n",
"epoch: 1 [44800/60000 (75%)]\t training loss: 0.268789\n",
"epoch: 1 [45120/60000 (75%)]\t training loss: 0.020588\n",
"epoch: 1 [45440/60000 (76%)]\t training loss: 0.171121\n",
"epoch: 1 [45760/60000 (76%)]\t training loss: 0.005132\n",
"epoch: 1 [46080/60000 (77%)]\t training loss: 0.215396\n",
"epoch: 1 [46400/60000 (77%)]\t training loss: 0.037551\n",
"epoch: 1 [46720/60000 (78%)]\t training loss: 0.094870\n",
"epoch: 1 [47040/60000 (78%)]\t training loss: 0.059404\n",
"epoch: 1 [47360/60000 (79%)]\t training loss: 0.017817\n",
"epoch: 1 [47680/60000 (79%)]\t training loss: 0.217799\n",
"epoch: 1 [48000/60000 (80%)]\t training loss: 0.191721\n",
"epoch: 1 [48320/60000 (81%)]\t training loss: 0.150701\n",
"epoch: 1 [48640/60000 (81%)]\t training loss: 0.017619\n",
"epoch: 1 [48960/60000 (82%)]\t training loss: 0.069778\n",
"epoch: 1 [49280/60000 (82%)]\t training loss: 0.158947\n",
"epoch: 1 [49600/60000 (83%)]\t training loss: 0.290616\n",
"epoch: 1 [49920/60000 (83%)]\t training loss: 0.105221\n",
"epoch: 1 [50240/60000 (84%)]\t training loss: 0.061812\n",
"epoch: 1 [50560/60000 (84%)]\t training loss: 0.004145\n",
"epoch: 1 [50880/60000 (85%)]\t training loss: 0.005473\n",
"epoch: 1 [51200/60000 (85%)]\t training loss: 0.220915\n",
"epoch: 1 [51520/60000 (86%)]\t training loss: 0.017501\n",
"epoch: 1 [51840/60000 (86%)]\t training loss: 0.013362\n",
"epoch: 1 [52160/60000 (87%)]\t training loss: 0.009321\n",
"epoch: 1 [52480/60000 (87%)]\t training loss: 0.007591\n",
"epoch: 1 [52800/60000 (88%)]\t training loss: 0.029359\n",
"epoch: 1 [53120/60000 (89%)]\t training loss: 0.022190\n",
"epoch: 1 [53440/60000 (89%)]\t training loss: 0.018408\n",
"epoch: 1 [53760/60000 (90%)]\t training loss: 0.032187\n",
"epoch: 1 [54080/60000 (90%)]\t training loss: 0.004509\n",
"epoch: 1 [54400/60000 (91%)]\t training loss: 0.111185\n",
"epoch: 1 [54720/60000 (91%)]\t training loss: 0.013186\n",
"epoch: 1 [55040/60000 (92%)]\t training loss: 0.002159\n",
"epoch: 1 [55360/60000 (92%)]\t training loss: 0.068637\n",
"epoch: 1 [55680/60000 (93%)]\t training loss: 0.043358\n",
"epoch: 1 [56000/60000 (93%)]\t training loss: 0.044577\n",
"epoch: 1 [56320/60000 (94%)]\t training loss: 0.169021\n",
"epoch: 1 [56640/60000 (94%)]\t training loss: 0.048147\n",
"epoch: 1 [56960/60000 (95%)]\t training loss: 0.033871\n",
"epoch: 1 [57280/60000 (95%)]\t training loss: 0.078123\n",
"epoch: 1 [57600/60000 (96%)]\t training loss: 0.003498\n",
"epoch: 1 [57920/60000 (97%)]\t training loss: 0.067773\n",
"epoch: 1 [58240/60000 (97%)]\t training loss: 0.039868\n",
"epoch: 1 [58560/60000 (98%)]\t training loss: 0.006756\n",
"epoch: 1 [58880/60000 (98%)]\t training loss: 0.088010\n",
"epoch: 1 [59200/60000 (99%)]\t training loss: 0.009668\n",
"epoch: 1 [59520/60000 (99%)]\t training loss: 0.038931\n",
"epoch: 1 [59840/60000 (100%)]\t training loss: 0.028638\n",
"\n",
"Test dataset: Overall Loss: 0.0499, Overall Accuracy: 9833/10000 (98%)\n",
"\n",
"epoch: 2 [0/60000 (0%)]\t training loss: 0.066743\n",
"epoch: 2 [320/60000 (1%)]\t training loss: 0.035735\n",
"epoch: 2 [640/60000 (1%)]\t training loss: 0.182664\n",
"epoch: 2 [960/60000 (2%)]\t training loss: 0.090483\n",
"epoch: 2 [1280/60000 (2%)]\t training loss: 0.050396\n",
"epoch: 2 [1600/60000 (3%)]\t training loss: 0.004779\n",
"epoch: 2 [1920/60000 (3%)]\t training loss: 0.059000\n",
"epoch: 2 [2240/60000 (4%)]\t training loss: 0.030913\n",
"epoch: 2 [2560/60000 (4%)]\t training loss: 0.134559\n",
"epoch: 2 [2880/60000 (5%)]\t training loss: 0.006864\n",
"epoch: 2 [3200/60000 (5%)]\t training loss: 0.062958\n",
"epoch: 2 [3520/60000 (6%)]\t training loss: 0.012911\n",
"epoch: 2 [3840/60000 (6%)]\t training loss: 0.073052\n",
"epoch: 2 [4160/60000 (7%)]\t training loss: 0.028548\n",
"epoch: 2 [4480/60000 (7%)]\t training loss: 0.031011\n",
"epoch: 2 [4800/60000 (8%)]\t training loss: 0.032590\n",
"epoch: 2 [5120/60000 (9%)]\t training loss: 0.160481\n",
"epoch: 2 [5440/60000 (9%)]\t training loss: 0.135742\n",
"epoch: 2 [5760/60000 (10%)]\t training loss: 0.085907\n",
"epoch: 2 [6080/60000 (10%)]\t training loss: 0.037062\n",
"epoch: 2 [6400/60000 (11%)]\t training loss: 0.025930\n",
"epoch: 2 [6720/60000 (11%)]\t training loss: 0.041119\n",
"epoch: 2 [7040/60000 (12%)]\t training loss: 0.014384\n",
"epoch: 2 [7360/60000 (12%)]\t training loss: 0.056245\n",
"epoch: 2 [7680/60000 (13%)]\t training loss: 0.023416\n",
"epoch: 2 [8000/60000 (13%)]\t training loss: 0.245681\n",
"epoch: 2 [8320/60000 (14%)]\t training loss: 0.030427\n",
"epoch: 2 [8640/60000 (14%)]\t training loss: 0.011094\n",
"epoch: 2 [8960/60000 (15%)]\t training loss: 0.012776\n",
"epoch: 2 [9280/60000 (15%)]\t training loss: 0.004189\n",
"epoch: 2 [9600/60000 (16%)]\t training loss: 0.042231\n",
"epoch: 2 [9920/60000 (17%)]\t training loss: 0.003491\n",
"epoch: 2 [10240/60000 (17%)]\t training loss: 0.009471\n",
"epoch: 2 [10560/60000 (18%)]\t training loss: 0.001351\n",
"epoch: 2 [10880/60000 (18%)]\t training loss: 0.087280\n",
"epoch: 2 [11200/60000 (19%)]\t training loss: 0.015589\n",
"epoch: 2 [11520/60000 (19%)]\t training loss: 0.011971\n",
"epoch: 2 [11840/60000 (20%)]\t training loss: 0.071871\n",
"epoch: 2 [12160/60000 (20%)]\t training loss: 0.035999\n",
"epoch: 2 [12480/60000 (21%)]\t training loss: 0.102427\n",
"epoch: 2 [12800/60000 (21%)]\t training loss: 0.005153\n",
"epoch: 2 [13120/60000 (22%)]\t training loss: 0.167679\n",
"epoch: 2 [13440/60000 (22%)]\t training loss: 0.041726\n",
"epoch: 2 [13760/60000 (23%)]\t training loss: 0.083872\n",
"epoch: 2 [14080/60000 (23%)]\t training loss: 0.072814\n",
"epoch: 2 [14400/60000 (24%)]\t training loss: 0.030447\n",
"epoch: 2 [14720/60000 (25%)]\t training loss: 0.006873\n",
"epoch: 2 [15040/60000 (25%)]\t training loss: 0.001949\n",
"epoch: 2 [15360/60000 (26%)]\t training loss: 0.100623\n",
"epoch: 2 [15680/60000 (26%)]\t training loss: 0.041959\n",
"epoch: 2 [16000/60000 (27%)]\t training loss: 0.094071\n",
"epoch: 2 [16320/60000 (27%)]\t training loss: 0.184591\n",
"epoch: 2 [16640/60000 (28%)]\t training loss: 0.012853\n",
"epoch: 2 [16960/60000 (28%)]\t training loss: 0.352203\n",
"epoch: 2 [17280/60000 (29%)]\t training loss: 0.046161\n",
"epoch: 2 [17600/60000 (29%)]\t training loss: 0.060286\n",
"epoch: 2 [17920/60000 (30%)]\t training loss: 0.121418\n",
"epoch: 2 [18240/60000 (30%)]\t training loss: 0.084083\n",
"epoch: 2 [18560/60000 (31%)]\t training loss: 0.004302\n",
"epoch: 2 [18880/60000 (31%)]\t training loss: 0.080175\n",
"epoch: 2 [19200/60000 (32%)]\t training loss: 0.128859\n",
"epoch: 2 [19520/60000 (33%)]\t training loss: 0.009961\n",
"epoch: 2 [19840/60000 (33%)]\t training loss: 0.101917\n",
"epoch: 2 [20160/60000 (34%)]\t training loss: 0.025515\n",
"epoch: 2 [20480/60000 (34%)]\t training loss: 0.102060\n",
"epoch: 2 [20800/60000 (35%)]\t training loss: 0.009890\n",
"epoch: 2 [21120/60000 (35%)]\t training loss: 0.040348\n",
"epoch: 2 [21440/60000 (36%)]\t training loss: 0.051989\n",
"epoch: 2 [21760/60000 (36%)]\t training loss: 0.013302\n",
"epoch: 2 [22080/60000 (37%)]\t training loss: 0.002935\n",
"epoch: 2 [22400/60000 (37%)]\t training loss: 0.003164\n",
"epoch: 2 [22720/60000 (38%)]\t training loss: 0.005639\n",
"epoch: 2 [23040/60000 (38%)]\t training loss: 0.129042\n",
"epoch: 2 [23360/60000 (39%)]\t training loss: 0.078029\n",
"epoch: 2 [23680/60000 (39%)]\t training loss: 0.121032\n",
"epoch: 2 [24000/60000 (40%)]\t training loss: 0.021409\n",
"epoch: 2 [24320/60000 (41%)]\t training loss: 0.041222\n",
"epoch: 2 [24640/60000 (41%)]\t training loss: 0.079237\n",
"epoch: 2 [24960/60000 (42%)]\t training loss: 0.072457\n",
"epoch: 2 [25280/60000 (42%)]\t training loss: 0.020107\n",
"epoch: 2 [25600/60000 (43%)]\t training loss: 0.097704\n",
"epoch: 2 [25920/60000 (43%)]\t training loss: 0.015694\n",
"epoch: 2 [26240/60000 (44%)]\t training loss: 0.002661\n",
"epoch: 2 [26560/60000 (44%)]\t training loss: 0.009346\n",
"epoch: 2 [26880/60000 (45%)]\t training loss: 0.080469\n",
"epoch: 2 [27200/60000 (45%)]\t training loss: 0.442272\n",
"epoch: 2 [27520/60000 (46%)]\t training loss: 0.084519\n",
"epoch: 2 [27840/60000 (46%)]\t training loss: 0.005169\n",
"epoch: 2 [28160/60000 (47%)]\t training loss: 0.039863\n",
"epoch: 2 [28480/60000 (47%)]\t training loss: 0.113534\n",
"epoch: 2 [28800/60000 (48%)]\t training loss: 0.011214\n",
"epoch: 2 [29120/60000 (49%)]\t training loss: 0.004197\n",
"epoch: 2 [29440/60000 (49%)]\t training loss: 0.044293\n",
"epoch: 2 [29760/60000 (50%)]\t training loss: 0.060770\n",
"epoch: 2 [30080/60000 (50%)]\t training loss: 0.018572\n",
"epoch: 2 [30400/60000 (51%)]\t training loss: 0.018867\n",
"epoch: 2 [30720/60000 (51%)]\t training loss: 0.021905\n",
"epoch: 2 [31040/60000 (52%)]\t training loss: 0.161985\n",
"epoch: 2 [31360/60000 (52%)]\t training loss: 0.069258\n",
"epoch: 2 [31680/60000 (53%)]\t training loss: 0.011681\n",
"epoch: 2 [32000/60000 (53%)]\t training loss: 0.004882\n",
"epoch: 2 [32320/60000 (54%)]\t training loss: 0.002653\n",
"epoch: 2 [32640/60000 (54%)]\t training loss: 0.020022\n",
"epoch: 2 [32960/60000 (55%)]\t training loss: 0.001444\n",
"epoch: 2 [33280/60000 (55%)]\t training loss: 0.146469\n",
"epoch: 2 [33600/60000 (56%)]\t training loss: 0.011301\n",
"epoch: 2 [33920/60000 (57%)]\t training loss: 0.016578\n",
"epoch: 2 [34240/60000 (57%)]\t training loss: 0.318212\n",
"epoch: 2 [34560/60000 (58%)]\t training loss: 0.004377\n",
"epoch: 2 [34880/60000 (58%)]\t training loss: 0.088107\n",
"epoch: 2 [35200/60000 (59%)]\t training loss: 0.010620\n",
"epoch: 2 [35520/60000 (59%)]\t training loss: 0.040719\n",
"epoch: 2 [35840/60000 (60%)]\t training loss: 0.008403\n",
"epoch: 2 [36160/60000 (60%)]\t training loss: 0.028752\n",
"epoch: 2 [36480/60000 (61%)]\t training loss: 0.088192\n",
"epoch: 2 [36800/60000 (61%)]\t training loss: 0.001631\n",
"epoch: 2 [37120/60000 (62%)]\t training loss: 0.501989\n",
"epoch: 2 [37440/60000 (62%)]\t training loss: 0.006784\n",
"epoch: 2 [37760/60000 (63%)]\t training loss: 0.084303\n",
"epoch: 2 [38080/60000 (63%)]\t training loss: 0.014205\n",
"epoch: 2 [38400/60000 (64%)]\t training loss: 0.027547\n",
"epoch: 2 [38720/60000 (65%)]\t training loss: 0.086213\n",
"epoch: 2 [39040/60000 (65%)]\t training loss: 0.024095\n",
"epoch: 2 [39360/60000 (66%)]\t training loss: 0.011048\n",
"epoch: 2 [39680/60000 (66%)]\t training loss: 0.129801\n",
"epoch: 2 [40000/60000 (67%)]\t training loss: 0.021900\n",
"epoch: 2 [40320/60000 (67%)]\t training loss: 0.214183\n",
"epoch: 2 [40640/60000 (68%)]\t training loss: 0.482380\n",
"epoch: 2 [40960/60000 (68%)]\t training loss: 0.035452\n",
"epoch: 2 [41280/60000 (69%)]\t training loss: 0.068610\n",
"epoch: 2 [41600/60000 (69%)]\t training loss: 0.177852\n",
"epoch: 2 [41920/60000 (70%)]\t training loss: 0.005523\n",
"epoch: 2 [42240/60000 (70%)]\t training loss: 0.008331\n",
"epoch: 2 [42560/60000 (71%)]\t training loss: 0.056608\n",
"epoch: 2 [42880/60000 (71%)]\t training loss: 0.007651\n",
"epoch: 2 [43200/60000 (72%)]\t training loss: 0.003149\n",
"epoch: 2 [43520/60000 (73%)]\t training loss: 0.052926\n",
"epoch: 2 [43840/60000 (73%)]\t training loss: 0.267129\n",
"epoch: 2 [44160/60000 (74%)]\t training loss: 0.175253\n",
"epoch: 2 [44480/60000 (74%)]\t training loss: 0.009212\n",
"epoch: 2 [44800/60000 (75%)]\t training loss: 0.003933\n",
"epoch: 2 [45120/60000 (75%)]\t training loss: 0.056013\n",
"epoch: 2 [45440/60000 (76%)]\t training loss: 0.033882\n",
"epoch: 2 [45760/60000 (76%)]\t training loss: 0.049231\n",
"epoch: 2 [46080/60000 (77%)]\t training loss: 0.099665\n",
"epoch: 2 [46400/60000 (77%)]\t training loss: 0.021581\n",
"epoch: 2 [46720/60000 (78%)]\t training loss: 0.108349\n",
"epoch: 2 [47040/60000 (78%)]\t training loss: 0.065199\n",
"epoch: 2 [47360/60000 (79%)]\t training loss: 0.038825\n",
"epoch: 2 [47680/60000 (79%)]\t training loss: 0.032651\n",
"epoch: 2 [48000/60000 (80%)]\t training loss: 0.101691\n",
"epoch: 2 [48320/60000 (81%)]\t training loss: 0.225020\n",
"epoch: 2 [48640/60000 (81%)]\t training loss: 0.023284\n",
"epoch: 2 [48960/60000 (82%)]\t training loss: 0.009814\n",
"epoch: 2 [49280/60000 (82%)]\t training loss: 0.002712\n",
"epoch: 2 [49600/60000 (83%)]\t training loss: 0.008352\n",
"epoch: 2 [49920/60000 (83%)]\t training loss: 0.116699\n",
"epoch: 2 [50240/60000 (84%)]\t training loss: 0.034111\n",
"epoch: 2 [50560/60000 (84%)]\t training loss: 0.002953\n",
"epoch: 2 [50880/60000 (85%)]\t training loss: 0.007287\n",
"epoch: 2 [51200/60000 (85%)]\t training loss: 0.003475\n",
"epoch: 2 [51520/60000 (86%)]\t training loss: 0.221789\n",
"epoch: 2 [51840/60000 (86%)]\t training loss: 0.004132\n",
"epoch: 2 [52160/60000 (87%)]\t training loss: 0.003032\n",
"epoch: 2 [52480/60000 (87%)]\t training loss: 0.111290\n",
"epoch: 2 [52800/60000 (88%)]\t training loss: 0.038240\n",
"epoch: 2 [53120/60000 (89%)]\t training loss: 0.003252\n",
"epoch: 2 [53440/60000 (89%)]\t training loss: 0.127635\n",
"epoch: 2 [53760/60000 (90%)]\t training loss: 0.197244\n",
"epoch: 2 [54080/60000 (90%)]\t training loss: 0.002290\n",
"epoch: 2 [54400/60000 (91%)]\t training loss: 0.404068\n",
"epoch: 2 [54720/60000 (91%)]\t training loss: 0.105248\n",
"epoch: 2 [55040/60000 (92%)]\t training loss: 0.021728\n",
"epoch: 2 [55360/60000 (92%)]\t training loss: 0.073713\n",
"epoch: 2 [55680/60000 (93%)]\t training loss: 0.005018\n",
"epoch: 2 [56000/60000 (93%)]\t training loss: 0.028373\n",
"epoch: 2 [56320/60000 (94%)]\t training loss: 0.000962\n",
"epoch: 2 [56640/60000 (94%)]\t training loss: 0.033431\n",
"epoch: 2 [56960/60000 (95%)]\t training loss: 0.011923\n",
"epoch: 2 [57280/60000 (95%)]\t training loss: 0.091363\n",
"epoch: 2 [57600/60000 (96%)]\t training loss: 0.077149\n",
"epoch: 2 [57920/60000 (97%)]\t training loss: 0.144766\n",
"epoch: 2 [58240/60000 (97%)]\t training loss: 0.071787\n",
"epoch: 2 [58560/60000 (98%)]\t training loss: 0.003696\n",
"epoch: 2 [58880/60000 (98%)]\t training loss: 0.006127\n",
"epoch: 2 [59200/60000 (99%)]\t training loss: 0.020462\n",
"epoch: 2 [59520/60000 (99%)]\t training loss: 0.017625\n",
"epoch: 2 [59840/60000 (100%)]\t training loss: 0.011167\n",
"\n",
"Test dataset: Overall Loss: 0.0420, Overall Accuracy: 9859/10000 (99%)\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 2 [37440/60000 (62%)]\t training loss: 0.004772\n",
"epoch: 2 [37760/60000 (63%)]\t training loss: 0.067643\n",
"epoch: 2 [38080/60000 (63%)]\t training loss: 0.014400\n",
"epoch: 2 [38400/60000 (64%)]\t training loss: 0.029562\n",
"epoch: 2 [38720/60000 (65%)]\t training loss: 0.091197\n",
"epoch: 2 [39040/60000 (65%)]\t training loss: 0.013406\n",
"epoch: 2 [39360/60000 (66%)]\t training loss: 0.004593\n",
"epoch: 2 [39680/60000 (66%)]\t training loss: 0.168198\n",
"epoch: 2 [40000/60000 (67%)]\t training loss: 0.011329\n",
"epoch: 2 [40320/60000 (67%)]\t training loss: 0.245803\n",
"epoch: 2 [40640/60000 (68%)]\t training loss: 0.528659\n",
"epoch: 2 [40960/60000 (68%)]\t training loss: 0.044822\n",
"epoch: 2 [41280/60000 (69%)]\t training loss: 0.083322\n",
"epoch: 2 [41600/60000 (69%)]\t training loss: 0.153098\n",
"epoch: 2 [41920/60000 (70%)]\t training loss: 0.009117\n",
"epoch: 2 [42240/60000 (70%)]\t training loss: 0.011295\n",
"epoch: 2 [42560/60000 (71%)]\t training loss: 0.046957\n",
"epoch: 2 [42880/60000 (71%)]\t training loss: 0.005710\n",
"epoch: 2 [43200/60000 (72%)]\t training loss: 0.001676\n",
"epoch: 2 [43520/60000 (73%)]\t training loss: 0.046940\n",
"epoch: 2 [43840/60000 (73%)]\t training loss: 0.260874\n",
"epoch: 2 [44160/60000 (74%)]\t training loss: 0.129744\n",
"epoch: 2 [44480/60000 (74%)]\t training loss: 0.009345\n",
"epoch: 2 [44800/60000 (75%)]\t training loss: 0.004784\n",
"epoch: 2 [45120/60000 (75%)]\t training loss: 0.060891\n",
"epoch: 2 [45440/60000 (76%)]\t training loss: 0.061104\n",
"epoch: 2 [45760/60000 (76%)]\t training loss: 0.020632\n",
"epoch: 2 [46080/60000 (77%)]\t training loss: 0.083816\n",
"epoch: 2 [46400/60000 (77%)]\t training loss: 0.042209\n",
"epoch: 2 [46720/60000 (78%)]\t training loss: 0.136387\n",
"epoch: 2 [47040/60000 (78%)]\t training loss: 0.026391\n",
"epoch: 2 [47360/60000 (79%)]\t training loss: 0.043673\n",
"epoch: 2 [47680/60000 (79%)]\t training loss: 0.024578\n",
"epoch: 2 [48000/60000 (80%)]\t training loss: 0.070994\n",
"epoch: 2 [48320/60000 (81%)]\t training loss: 0.221534\n",
"epoch: 2 [48640/60000 (81%)]\t training loss: 0.063217\n",
"epoch: 2 [48960/60000 (82%)]\t training loss: 0.008979\n",
"epoch: 2 [49280/60000 (82%)]\t training loss: 0.002270\n",
"epoch: 2 [49600/60000 (83%)]\t training loss: 0.011848\n",
"epoch: 2 [49920/60000 (83%)]\t training loss: 0.112140\n",
"epoch: 2 [50240/60000 (84%)]\t training loss: 0.016166\n",
"epoch: 2 [50560/60000 (84%)]\t training loss: 0.003836\n",
"epoch: 2 [50880/60000 (85%)]\t training loss: 0.003403\n",
"epoch: 2 [51200/60000 (85%)]\t training loss: 0.033328\n",
"epoch: 2 [51520/60000 (86%)]\t training loss: 0.188970\n",
"epoch: 2 [51840/60000 (86%)]\t training loss: 0.008271\n",
"epoch: 2 [52160/60000 (87%)]\t training loss: 0.004005\n",
"epoch: 2 [52480/60000 (87%)]\t training loss: 0.134851\n",
"epoch: 2 [52800/60000 (88%)]\t training loss: 0.030210\n",
"epoch: 2 [53120/60000 (89%)]\t training loss: 0.003869\n",
"epoch: 2 [53440/60000 (89%)]\t training loss: 0.136203\n",
"epoch: 2 [53760/60000 (90%)]\t training loss: 0.209959\n",
"epoch: 2 [54080/60000 (90%)]\t training loss: 0.003821\n",
"epoch: 2 [54400/60000 (91%)]\t training loss: 0.423098\n",
"epoch: 2 [54720/60000 (91%)]\t training loss: 0.145483\n",
"epoch: 2 [55040/60000 (92%)]\t training loss: 0.032753\n",
"epoch: 2 [55360/60000 (92%)]\t training loss: 0.091253\n",
"epoch: 2 [55680/60000 (93%)]\t training loss: 0.008338\n",
"epoch: 2 [56000/60000 (93%)]\t training loss: 0.038908\n",
"epoch: 2 [56320/60000 (94%)]\t training loss: 0.001388\n",
"epoch: 2 [56640/60000 (94%)]\t training loss: 0.070186\n",
"epoch: 2 [56960/60000 (95%)]\t training loss: 0.014708\n",
"epoch: 2 [57280/60000 (95%)]\t training loss: 0.019372\n",
"epoch: 2 [57600/60000 (96%)]\t training loss: 0.054575\n",
"epoch: 2 [57920/60000 (97%)]\t training loss: 0.126219\n",
"epoch: 2 [58240/60000 (97%)]\t training loss: 0.055399\n",
"epoch: 2 [58560/60000 (98%)]\t training loss: 0.007698\n",
"epoch: 2 [58880/60000 (98%)]\t training loss: 0.002685\n",
"epoch: 2 [59200/60000 (99%)]\t training loss: 0.016287\n",
"epoch: 2 [59520/60000 (99%)]\t training loss: 0.012645\n",
"epoch: 2 [59840/60000 (100%)]\t training loss: 0.007993\n",
"\n",
"Test dataset: Overall Loss: 0.0416, Overall Accuracy: 9864/10000 (99%)\n",
"\n"
]
}
],
"source": [
"for epoch in range(1, 3):\n",
" train(model, device, train_dataloader, optimizer, epoch)\n",
" test(model, device, test_dataloader)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## run inference on trained model"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAaqElEQVR4nO3df2xV9f3H8VeL9ILaXiylvb2jQEEFwy8ng9rwYygNtC4GtEtA/QMWAoFdzLDzx7qIKFvSjSWOuCD+s8BMxF+JQCRLMym2hNliqDDCph3tugGBFsVxbylSGP18/yDer1cKeMq9ffdeno/kJPTe8+l9ezzhyWlvT9Occ04AAPSxdOsBAAA3JwIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBM3GI9wLd1d3frxIkTyszMVFpamvU4AACPnHPq6OhQMBhUevrVr3P6XYBOnDihgoIC6zEAADfo2LFjGj58+FWf73dfgsvMzLQeAQAQB9f7+zxhAdq4caNGjRqlQYMGqaioSB9//PF3WseX3QAgNVzv7/OEBOjtt99WRUWF1q5dq08++USTJ0/WvHnzdOrUqUS8HAAgGbkEmDZtmguFQtGPL1265ILBoKuqqrru2nA47CSxsbGxsSX5Fg6Hr/n3fdyvgC5cuKDGxkaVlJREH0tPT1dJSYnq6+uv2L+rq0uRSCRmAwCkvrgH6IsvvtClS5eUl5cX83heXp7a2tqu2L+qqkp+vz+68Q44ALg5mL8LrrKyUuFwOLodO3bMeiQAQB+I+88B5eTkaMCAAWpvb495vL29XYFA4Ir9fT6ffD5fvMcAAPRzcb8CysjI0JQpU1RTUxN9rLu7WzU1NSouLo73ywEAklRC7oRQUVGhxYsX6wc/+IGmTZumDRs2qLOzUz/5yU8S8XIAgCSUkAAtXLhQn3/+uV544QW1tbXp3nvvVXV19RVvTAAA3LzSnHPOeohvikQi8vv91mMAAG5QOBxWVlbWVZ83fxccAODmRIAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATMQ9QC+++KLS0tJitnHjxsX7ZQAASe6WRHzS8ePHa9euXf//Irck5GUAAEksIWW45ZZbFAgEEvGpAQApIiHfAzpy5IiCwaBGjx6tJ554QkePHr3qvl1dXYpEIjEbACD1xT1ARUVF2rJli6qrq7Vp0ya1trZq5syZ6ujo6HH/qqoq+f3+6FZQUBDvkQAA/VCac84l8gXOnDmjkSNH6uWXX9bSpUuveL6rq0tdXV3RjyORCBECgBQQDoeVlZV11ecT/u6AIUOG6O6771Zzc3OPz/t8Pvl8vkSPAQDoZxL+c0Bnz55VS0uL8vPzE/1SAIAkEvcAPf3006qrq9O///1vffTRR3rkkUc0YMAAPfbYY/F+KQBAEov7l+COHz+uxx57TKdPn9awYcM0Y8YMNTQ0aNiwYfF+KQBAEkv4mxC8ikQi8vv91mMAAG7Q9d6EwL3gAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATCf+FdOhbP/7xjz2vWbZsWa9e68SJE57XnD9/3vOaN954w/OatrY2z2skXfUXJwKIP66AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYCLNOeesh/imSCQiv99vPUbS+te//uV5zahRo+I/iLGOjo5erfv73/8e50kQb8ePH/e8Zv369b16rf379/dqHS4Lh8PKysq66vNcAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJm6xHgDxtWzZMs9rJk2a1KvX+vTTTz2vueeeezyvue+++zyvmT17tuc1knT//fd7XnPs2DHPawoKCjyv6Uv/+9//PK/5/PPPPa/Jz8/3vKY3jh492qt13Iw0sbgCAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMcDPSFFNTU9Mna3qrurq6T17njjvu6NW6e++91/OaxsZGz2umTp3qeU1fOn/+vOc1//znPz2v6c0NbbOzsz2vaWlp8bwGiccVEADABAECAJjwHKA9e/bo4YcfVjAYVFpamrZv3x7zvHNOL7zwgvLz8zV48GCVlJToyJEj8ZoXAJAiPAeos7NTkydP1saNG3t8fv369XrllVf02muvad++fbrttts0b968Xn1NGQCQujy/CaGsrExlZWU9Puec04YNG/T8889r/vz5kqTXX39deXl52r59uxYtWnRj0wIAUkZcvwfU2tqqtrY2lZSURB/z+/0qKipSfX19j2u6uroUiURiNgBA6otrgNra2iRJeXl5MY/n5eVFn/u2qqoq+f3+6FZQUBDPkQAA/ZT5u+AqKysVDoej27Fjx6xHAgD0gbgGKBAISJLa29tjHm9vb48+920+n09ZWVkxGwAg9cU1QIWFhQoEAjE/WR+JRLRv3z4VFxfH86UAAEnO87vgzp49q+bm5ujHra2tOnjwoLKzszVixAitXr1av/71r3XXXXepsLBQa9asUTAY1IIFC+I5NwAgyXkO0P79+/XAAw9EP66oqJAkLV68WFu2bNGzzz6rzs5OLV++XGfOnNGMGTNUXV2tQYMGxW9qAEDSS3POOeshvikSicjv91uPAcCj8vJyz2veeecdz2sOHz7sec03/9HsxZdfftmrdbgsHA5f8/v65u+CAwDcnAgQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGDC869jAJD6cnNzPa959dVXPa9JT/f+b+B169Z5XsNdrfsnroAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABPcjBTAFUKhkOc1w4YN87zmv//9r+c1TU1Nntegf+IKCABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwwc1IgRQ2ffr0Xq37xS9+EedJerZgwQLPaw4fPhz/QWCCKyAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQ3IwVS2EMPPdSrdQMHDvS8pqamxvOa+vp6z2uQOrgCAgCYIEAAABOeA7Rnzx49/PDDCgaDSktL0/bt22OeX7JkidLS0mK20tLSeM0LAEgRngPU2dmpyZMna+PGjVfdp7S0VCdPnoxub7755g0NCQBIPZ7fhFBWVqaysrJr7uPz+RQIBHo9FAAg9SXke0C1tbXKzc3V2LFjtXLlSp0+ffqq+3Z1dSkSicRsAIDUF/cAlZaW6vXXX1dNTY1++9vfqq6uTmVlZbp06VKP+1dVVcnv90e3goKCeI8EAOiH4v5zQIsWLYr+eeLEiZo0aZLGjBmj2tpazZkz54r9KysrVVFREf04EokQIQC4CST8bdijR49WTk6Ompube3ze5/MpKysrZgMApL6EB+j48eM6ffq08vPzE/1SAIAk4vlLcGfPno25mmltbdXBgweVnZ2t7OxsvfTSSyovL1cgEFBLS4ueffZZ3XnnnZo3b15cBwcAJDfPAdq/f78eeOCB6Mdff/9m8eLF2rRpkw4dOqQ//elPOnPmjILBoObOnatf/epX8vl88ZsaAJD00pxzznqIb4pEIvL7/dZjAP3O4MGDPa/Zu3dvr15r/Pjxntc8+OCDntd89NFHntcgeYTD4Wt+X597wQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMBE3H8lN4DEeOaZZzyv+f73v9+r16qurva8hjtbwyuugAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE9yMFDDwox/9yPOaNWvWeF4TiUQ8r5GkdevW9Wod4AVXQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACW5GCtygoUOHel7zyiuveF4zYMAAz2v+/Oc/e14jSQ0NDb1aB3jBFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIKbkQLf0JsbflZXV3teU1hY6HlNS0uL5zVr1qzxvAboK1wBAQBMECAAgAlPAaqqqtLUqVOVmZmp3NxcLViwQE1NTTH7nD9/XqFQSEOHDtXtt9+u8vJytbe3x3VoAEDy8xSguro6hUIhNTQ06IMPPtDFixc1d+5cdXZ2Rvd56qmn9P777+vdd99VXV2dTpw4oUcffTTugwMAkpunNyF8+5utW7ZsUW5urhobGzVr1iyFw2H98Y9/1NatW/Xggw9KkjZv3qx77rlHDQ0Nuv/+++M3OQAgqd3Q94DC4bAkKTs7W5LU2NioixcvqqSkJLrPuHHjNGLECNXX1/f4Obq6uhSJRGI2AEDq63WAuru7tXr1ak2fPl0TJkyQJLW1tSkjI0NDhgyJ2TcvL09tbW09fp6qqir5/f7oVlBQ0NuRAABJpNcBCoVCOnz4sN56660bGqCyslLhcDi6HTt27IY+HwAgOfTqB1FXrVqlnTt3as+ePRo+fHj08UAgoAsXLujMmTMxV0Ht7e0KBAI9fi6fzyefz9ebMQAASczTFZBzTqtWrdK2bdu0e/fuK36ae8qUKRo4cKBqamqijzU1Neno0aMqLi6Oz8QAgJTg6QooFApp69at2rFjhzIzM6Pf1/H7/Ro8eLD8fr+WLl2qiooKZWdnKysrS08++aSKi4t5BxwAIIanAG3atEmSNHv27JjHN2/erCVLlkiSfv/73ys9PV3l5eXq6urSvHnz9Oqrr8ZlWABA6khzzjnrIb4pEonI7/dbj4Gb1N133+15zWeffZaASa40f/58z2vef//9BEwCfDfhcFhZWVlXfZ57wQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMBEr34jKtDfjRw5slfr/vKXv8R5kp4988wzntfs3LkzAZMAdrgCAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMcDNSpKTly5f3at2IESPiPEnP6urqPK9xziVgEsAOV0AAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAluRop+b8aMGZ7XPPnkkwmYBEA8cQUEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJjgZqTo92bOnOl5ze23356ASXrW0tLiec3Zs2cTMAmQXLgCAgCYIEAAABOeAlRVVaWpU6cqMzNTubm5WrBggZqammL2mT17ttLS0mK2FStWxHVoAEDy8xSguro6hUIhNTQ06IMPPtDFixc1d+5cdXZ2xuy3bNkynTx5MrqtX78+rkMDAJKfpzchVFdXx3y8ZcsW5ebmqrGxUbNmzYo+fuuttyoQCMRnQgBASrqh7wGFw2FJUnZ2dszjb7zxhnJycjRhwgRVVlbq3LlzV/0cXV1dikQiMRsAIPX1+m3Y3d3dWr16taZPn64JEyZEH3/88cc1cuRIBYNBHTp0SM8995yampr03nvv9fh5qqqq9NJLL/V2DABAkup1gEKhkA4fPqy9e/fGPL58+fLonydOnKj8/HzNmTNHLS0tGjNmzBWfp7KyUhUVFdGPI5GICgoKejsWACBJ9CpAq1at0s6dO7Vnzx4NHz78mvsWFRVJkpqbm3sMkM/nk8/n680YAIAk5ilAzjk9+eST2rZtm2pra1VYWHjdNQcPHpQk5efn92pAAEBq8hSgUCikrVu3aseOHcrMzFRbW5skye/3a/DgwWppadHWrVv10EMPaejQoTp06JCeeuopzZo1S5MmTUrIfwAAIDl5CtCmTZskXf5h02/avHmzlixZooyMDO3atUsbNmxQZ2enCgoKVF5erueffz5uAwMAUoPnL8FdS0FBgerq6m5oIADAzYG7YQPf8Le//c3zmjlz5nhe8+WXX3peA6QabkYKADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJhIc9e7xXUfi0Qi8vv91mMAAG5QOBxWVlbWVZ/nCggAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJfhegfnZrOgBAL13v7/N+F6COjg7rEQAAcXC9v8/73d2wu7u7deLECWVmZiotLS3muUgkooKCAh07duyad1hNdRyHyzgOl3EcLuM4XNYfjoNzTh0dHQoGg0pPv/p1zi19ONN3kp6eruHDh19zn6ysrJv6BPsax+EyjsNlHIfLOA6XWR+H7/Jrdfrdl+AAADcHAgQAMJFUAfL5fFq7dq18Pp/1KKY4DpdxHC7jOFzGcbgsmY5Dv3sTAgDg5pBUV0AAgNRBgAAAJggQAMAEAQIAmEiaAG3cuFGjRo3SoEGDVFRUpI8//th6pD734osvKi0tLWYbN26c9VgJt2fPHj388MMKBoNKS0vT9u3bY553zumFF15Qfn6+Bg8erJKSEh05csRm2AS63nFYsmTJFedHaWmpzbAJUlVVpalTpyozM1O5ublasGCBmpqaYvY5f/68QqGQhg4dqttvv13l5eVqb283mjgxvstxmD179hXnw4oVK4wm7llSBOjtt99WRUWF1q5dq08++USTJ0/WvHnzdOrUKevR+tz48eN18uTJ6LZ3717rkRKus7NTkydP1saNG3t8fv369XrllVf02muvad++fbrttts0b948nT9/vo8nTazrHQdJKi0tjTk/3nzzzT6cMPHq6uoUCoXU0NCgDz74QBcvXtTcuXPV2dkZ3eepp57S+++/r3fffVd1dXU6ceKEHn30UcOp4++7HAdJWrZsWcz5sH79eqOJr8IlgWnTprlQKBT9+NKlSy4YDLqqqirDqfre2rVr3eTJk63HMCXJbdu2Lfpxd3e3CwQC7ne/+130sTNnzjifz+fefPNNgwn7xrePg3POLV682M2fP99kHiunTp1yklxdXZ1z7vL/+4EDB7p33303us+nn37qJLn6+nqrMRPu28fBOed++MMfup/97Gd2Q30H/f4K6MKFC2psbFRJSUn0sfT0dJWUlKi+vt5wMhtHjhxRMBjU6NGj9cQTT+jo0aPWI5lqbW1VW1tbzPnh9/tVVFR0U54ftbW1ys3N1dixY7Vy5UqdPn3aeqSECofDkqTs7GxJUmNjoy5evBhzPowbN04jRoxI6fPh28fha2+88YZycnI0YcIEVVZW6ty5cxbjXVW/uxnpt33xxRe6dOmS8vLyYh7Py8vTZ599ZjSVjaKiIm3ZskVjx47VyZMn9dJLL2nmzJk6fPiwMjMzrccz0dbWJkk9nh9fP3ezKC0t1aOPPqrCwkK1tLTol7/8pcrKylRfX68BAwZYjxd33d3dWr16taZPn64JEyZIunw+ZGRkaMiQITH7pvL50NNxkKTHH39cI0eOVDAY1KFDh/Tcc8+pqalJ7733nuG0sfp9gPD/ysrKon+eNGmSioqKNHLkSL3zzjtaunSp4WToDxYtWhT988SJEzVp0iSNGTNGtbW1mjNnjuFkiREKhXT48OGb4vug13K147B8+fLonydOnKj8/HzNmTNHLS0tGjNmTF+P2aN+/yW4nJwcDRgw4Ip3sbS3tysQCBhN1T8MGTJEd999t5qbm61HMfP1OcD5caXRo0crJycnJc+PVatWaefOnfrwww9jfn1LIBDQhQsXdObMmZj9U/V8uNpx6ElRUZEk9avzod8HKCMjQ1OmTFFNTU30se7ubtXU1Ki4uNhwMntnz55VS0uL8vPzrUcxU1hYqEAgEHN+RCIR7du376Y/P44fP67Tp0+n1PnhnNOqVau0bds27d69W4WFhTHPT5kyRQMHDow5H5qamnT06NGUOh+udxx6cvDgQUnqX+eD9bsgvou33nrL+Xw+t2XLFvePf/zDLV++3A0ZMsS1tbVZj9anfv7zn7va2lrX2trq/vrXv7qSkhKXk5PjTp06ZT1aQnV0dLgDBw64AwcOOEnu5ZdfdgcOHHD/+c9/nHPO/eY3v3FDhgxxO3bscIcOHXLz5893hYWF7quvvjKePL6udRw6Ojrc008/7err611ra6vbtWuXu++++9xdd93lzp8/bz163KxcudL5/X5XW1vrTp48Gd3OnTsX3WfFihVuxIgRbvfu3W7//v2uuLjYFRcXG04df9c7Ds3NzW7dunVu//79rrW11e3YscONHj3azZo1y3jyWEkRIOec+8Mf/uBGjBjhMjIy3LRp01xDQ4P1SH1u4cKFLj8/32VkZLjvfe97buHCha65udl6rIT78MMPnaQrtsWLFzvnLr8Ve82aNS4vL8/5fD43Z84c19TUZDt0AlzrOJw7d87NnTvXDRs2zA0cONCNHDnSLVu2LOX+kdbTf78kt3nz5ug+X331lfvpT3/q7rjjDnfrrbe6Rx55xJ08edJu6AS43nE4evSomzVrlsvOznY+n8/deeed7plnnnHhcNh28G/h1zEAAEz0++8BAQBSEwECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABg4v8AjVqFRqQZEfIAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"test_samples = enumerate(test_dataloader)\n",
"b_i, (sample_data, sample_targets) = next(test_samples)\n",
"\n",
"plt.imshow(sample_data[0][0], cmap='gray', interpolation='none')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model prediction is : 7\n",
"Ground truth is : 7\n"
]
}
],
"source": [
"print(f\"Model prediction is : {model(sample_data).data.max(1)[1][0]}\")\n",
"print(f\"Ground truth is : {sample_targets[0]}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.18"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: Chapter01/mnist_tensorflow.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## import modules"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow\n",
" Downloading tensorflow-2.11.1-cp39-cp39-macosx_10_14_x86_64.whl (244.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m244.3/244.3 MB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:02\u001b[0m\n",
"\u001b[?25hCollecting astunparse>=1.6.0\n",
" Using cached astunparse-1.6.3-py2.py3-none-any.whl (12 kB)\n",
"Collecting flatbuffers>=2.0\n",
" Downloading flatbuffers-23.3.3-py2.py3-none-any.whl (26 kB)\n",
"Requirement already satisfied: absl-py>=1.0.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (1.4.0)\n",
"Requirement already satisfied: six>=1.12.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (1.16.0)\n",
"Collecting tensorflow-io-gcs-filesystem>=0.23.1\n",
" Downloading tensorflow_io_gcs_filesystem-0.31.0-cp39-cp39-macosx_10_14_x86_64.whl (1.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: h5py>=2.9.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (3.7.0)\n",
"Requirement already satisfied: numpy>=1.20 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (1.23.5)\n",
"Requirement already satisfied: wrapt>=1.11.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (1.14.1)\n",
"Collecting gast<=0.4.0,>=0.2.1\n",
" Using cached gast-0.4.0-py3-none-any.whl (9.8 kB)\n",
"Requirement already satisfied: grpcio<2.0,>=1.24.3 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (1.51.3)\n",
"Collecting protobuf<3.20,>=3.9.2\n",
" Using cached protobuf-3.19.6-cp39-cp39-macosx_10_9_x86_64.whl (980 kB)\n",
"Collecting google-pasta>=0.1.1\n",
" Using cached google_pasta-0.2.0-py3-none-any.whl (57 kB)\n",
"Requirement already satisfied: typing-extensions>=3.6.6 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (4.4.0)\n",
"Collecting tensorboard<2.12,>=2.11\n",
" Downloading tensorboard-2.11.2-py3-none-any.whl (6.0 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.0/6.0 MB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hCollecting keras<2.12,>=2.11.0\n",
" Downloading keras-2.11.0-py2.py3-none-any.whl (1.7 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hCollecting tensorflow-estimator<2.12,>=2.11.0\n",
" Downloading tensorflow_estimator-2.11.0-py2.py3-none-any.whl (439 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m439.2/439.2 kB\u001b[0m \u001b[31m6.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: packaging in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (22.0)\n",
"Requirement already satisfied: setuptools in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorflow) (65.4.0)\n",
"Collecting termcolor>=1.1.0\n",
" Downloading termcolor-2.2.0-py3-none-any.whl (6.6 kB)\n",
"Collecting libclang>=13.0.0\n",
" Downloading libclang-15.0.6.1-py2.py3-none-macosx_10_9_x86_64.whl (25.0 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m25.0/25.0 MB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hCollecting opt-einsum>=2.3.2\n",
" Using cached opt_einsum-3.3.0-py3-none-any.whl (65 kB)\n",
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from astunparse>=1.6.0->tensorflow) (0.37.1)\n",
"Requirement already satisfied: markdown>=2.6.8 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorboard<2.12,>=2.11->tensorflow) (3.4.1)\n",
"Requirement already satisfied: requests<3,>=2.21.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorboard<2.12,>=2.11->tensorflow) (2.28.1)\n",
"Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorboard<2.12,>=2.11->tensorflow) (0.4.6)\n",
"Requirement already satisfied: werkzeug>=1.0.1 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorboard<2.12,>=2.11->tensorflow) (2.2.2)\n",
"Collecting tensorboard-data-server<0.7.0,>=0.6.0\n",
" Using cached tensorboard_data_server-0.6.1-py3-none-macosx_10_9_x86_64.whl (3.5 MB)\n",
"Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorboard<2.12,>=2.11->tensorflow) (1.8.1)\n",
"Requirement already satisfied: google-auth<3,>=1.6.3 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from tensorboard<2.12,>=2.11->tensorflow) (2.16.2)\n",
"Requirement already satisfied: pyasn1-modules>=0.2.1 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.12,>=2.11->tensorflow) (0.2.8)\n",
"Requirement already satisfied: rsa<5,>=3.1.4 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.12,>=2.11->tensorflow) (4.9)\n",
"Requirement already satisfied: cachetools<6.0,>=2.0.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.12,>=2.11->tensorflow) (5.3.0)\n",
"Requirement already satisfied: requests-oauthlib>=0.7.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.12,>=2.11->tensorflow) (1.3.1)\n",
"Requirement already satisfied: importlib-metadata>=4.4 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from markdown>=2.6.8->tensorboard<2.12,>=2.11->tensorflow) (4.11.3)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.12,>=2.11->tensorflow) (1.26.14)\n",
"Requirement already satisfied: charset-normalizer<3,>=2 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.12,>=2.11->tensorflow) (2.1.1)\n",
"Requirement already satisfied: idna<4,>=2.5 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.12,>=2.11->tensorflow) (3.4)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.12,>=2.11->tensorflow) (2022.12.7)\n",
"Requirement already satisfied: MarkupSafe>=2.1.1 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from werkzeug>=1.0.1->tensorboard<2.12,>=2.11->tensorflow) (2.1.2)\n",
"Requirement already satisfied: zipp>=0.5 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.12,>=2.11->tensorflow) (3.11.0)\n",
"Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.12,>=2.11->tensorflow) (0.4.8)\n",
"Requirement already satisfied: oauthlib>=3.0.0 in /Users/ashish.jha/opt/anaconda3/envs/mastering_pytorch/lib/python3.9/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.12,>=2.11->tensorflow) (3.2.2)\n",
"Installing collected packages: libclang, flatbuffers, termcolor, tensorflow-io-gcs-filesystem, tensorflow-estimator, tensorboard-data-server, protobuf, opt-einsum, keras, google-pasta, gast, astunparse, tensorboard, tensorflow\n",
" Attempting uninstall: tensorboard-data-server\n",
" Found existing installation: tensorboard-data-server 0.7.0\n",
" Uninstalling tensorboard-data-server-0.7.0:\n",
" Successfully uninstalled tensorboard-data-server-0.7.0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: protobuf\n",
" Found existing installation: protobuf 4.21.9\n",
" Uninstalling protobuf-4.21.9:\n",
" Successfully uninstalled protobuf-4.21.9\n",
" Attempting uninstall: tensorboard\n",
" Found existing installation: tensorboard 2.12.0\n",
" Uninstalling tensorboard-2.12.0:\n",
" Successfully uninstalled tensorboard-2.12.0\n",
"Successfully installed astunparse-1.6.3 flatbuffers-23.3.3 gast-0.4.0 google-pasta-0.2.0 keras-2.11.0 libclang-15.0.6.1 opt-einsum-3.3.0 protobuf-3.19.6 tensorboard-2.11.2 tensorboard-data-server-0.6.1 tensorflow-2.11.1 tensorflow-estimator-2.11.0 tensorflow-io-gcs-filesystem-0.31.0 termcolor-2.2.0\n"
]
}
],
"source": [
"!pip install tensorflow==2.11.1\n",
"!pip install matplotlib==3.5.2"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-24 23:11:48.683362: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n",
"To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
]
}
],
"source": [
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## define model architecture"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"class ConvNet(tf.keras.Model):\n",
" def __init__(self):\n",
" super(ConvNet, self).__init__()\n",
" self.cn1 = tf.keras.layers.Conv2D(16, 3, activation='relu', input_shape=(28, 28, 1))\n",
" self.cn2 = tf.keras.layers.Conv2D(32, 3, activation='relu')\n",
" self.dp1 = tf.keras.layers.Dropout(0.10)\n",
" self.dp2 = tf.keras.layers.Dropout(0.25)\n",
" self.flatten = tf.keras.layers.Flatten()\n",
" self.fc1 = tf.keras.layers.Dense(64, activation='relu')\n",
" self.fc2 = tf.keras.layers.Dense(10, activation='softmax')\n",
" \n",
" def call(self, x):\n",
" x = self.cn1(x)\n",
" x = self.cn2(x)\n",
" x = tf.keras.layers.MaxPooling2D(pool_size=(2, 2))(x)\n",
" x = self.dp1(x)\n",
" x = self.flatten(x)\n",
" x = self.fc1(x)\n",
" x = self.dp2(x)\n",
" x = self.fc2(x)\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## create data loaders"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-24 23:11:52.845124: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n",
"To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
]
}
],
"source": [
"# Load the MNIST dataset.\n",
"(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() \n",
"\n",
"# Normalize pixel values between 0 and 1\n",
"x_train = x_train.astype(\"float32\") / 255.0\n",
"x_test = x_test.astype(\"float32\") / 255.0\n",
"\n",
"# Add a channels dimension (required for CNN)\n",
"x_train = x_train[..., tf.newaxis]\n",
"x_test = x_test[..., tf.newaxis]\n",
"\n",
"# Create a dataloader for training.\n",
"train_dataloader = tf.data.Dataset.from_tensor_slices((x_train, y_train))\n",
"train_dataloader = train_dataloader.shuffle(10000)\n",
"train_dataloader = train_dataloader.batch(32)\n",
"\n",
"# Create a dataloader for testing.\n",
"test_dataloader = tf.data.Dataset.from_tensor_slices((x_test, y_test))\n",
"test_dataloader = test_dataloader.batch(500)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## define optimizer and run training epochs"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"tf.random.set_seed(0)\n",
"model = ConvNet()\n",
"optimizer = tf.keras.optimizers.experimental.Adadelta(learning_rate=0.5)\n",
"model.compile(optimizer=optimizer,\n",
"loss='sparse_categorical_crossentropy',\n",
"metrics=['accuracy'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## model training"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/3\n",
"1875/1875 [==============================] - 36s 19ms/step - loss: 0.2213 - accuracy: 0.9328 - val_loss: 0.0611 - val_accuracy: 0.9798\n",
"Epoch 2/3\n",
"1875/1875 [==============================] - 50s 27ms/step - loss: 0.0857 - accuracy: 0.9751 - val_loss: 0.0423 - val_accuracy: 0.9857\n",
"Epoch 3/3\n",
"1875/1875 [==============================] - 59s 31ms/step - loss: 0.0641 - accuracy: 0.9807 - val_loss: 0.0412 - val_accuracy: 0.9862\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x7f80a8499ca0>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Train the model using the tf.data.Dataset API\n",
"model.fit(train_dataloader, epochs=3, validation_data=test_dataloader)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## run inference on trained model"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAaqElEQVR4nO3df2xV9f3H8VeL9ILaXiylvb2jQEEFwy8ng9rwYygNtC4GtEtA/QMWAoFdzLDzx7qIKFvSjSWOuCD+s8BMxF+JQCRLMym2hNliqDDCph3tugGBFsVxbylSGP18/yDer1cKeMq9ffdeno/kJPTe8+l9ezzhyWlvT9Occ04AAPSxdOsBAAA3JwIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBM3GI9wLd1d3frxIkTyszMVFpamvU4AACPnHPq6OhQMBhUevrVr3P6XYBOnDihgoIC6zEAADfo2LFjGj58+FWf73dfgsvMzLQeAQAQB9f7+zxhAdq4caNGjRqlQYMGqaioSB9//PF3WseX3QAgNVzv7/OEBOjtt99WRUWF1q5dq08++USTJ0/WvHnzdOrUqUS8HAAgGbkEmDZtmguFQtGPL1265ILBoKuqqrru2nA47CSxsbGxsSX5Fg6Hr/n3fdyvgC5cuKDGxkaVlJREH0tPT1dJSYnq6+uv2L+rq0uRSCRmAwCkvrgH6IsvvtClS5eUl5cX83heXp7a2tqu2L+qqkp+vz+68Q44ALg5mL8LrrKyUuFwOLodO3bMeiQAQB+I+88B5eTkaMCAAWpvb495vL29XYFA4Ir9fT6ffD5fvMcAAPRzcb8CysjI0JQpU1RTUxN9rLu7WzU1NSouLo73ywEAklRC7oRQUVGhxYsX6wc/+IGmTZumDRs2qLOzUz/5yU8S8XIAgCSUkAAtXLhQn3/+uV544QW1tbXp3nvvVXV19RVvTAAA3LzSnHPOeohvikQi8vv91mMAAG5QOBxWVlbWVZ83fxccAODmRIAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATMQ9QC+++KLS0tJitnHjxsX7ZQAASe6WRHzS8ePHa9euXf//Irck5GUAAEksIWW45ZZbFAgEEvGpAQApIiHfAzpy5IiCwaBGjx6tJ554QkePHr3qvl1dXYpEIjEbACD1xT1ARUVF2rJli6qrq7Vp0ya1trZq5syZ6ujo6HH/qqoq+f3+6FZQUBDvkQAA/VCac84l8gXOnDmjkSNH6uWXX9bSpUuveL6rq0tdXV3RjyORCBECgBQQDoeVlZV11ecT/u6AIUOG6O6771Zzc3OPz/t8Pvl8vkSPAQDoZxL+c0Bnz55VS0uL8vPzE/1SAIAkEvcAPf3006qrq9O///1vffTRR3rkkUc0YMAAPfbYY/F+KQBAEov7l+COHz+uxx57TKdPn9awYcM0Y8YMNTQ0aNiwYfF+KQBAEkv4mxC8ikQi8vv91mMAAG7Q9d6EwL3gAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATCf+FdOhbP/7xjz2vWbZsWa9e68SJE57XnD9/3vOaN954w/OatrY2z2skXfUXJwKIP66AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYCLNOeesh/imSCQiv99vPUbS+te//uV5zahRo+I/iLGOjo5erfv73/8e50kQb8ePH/e8Zv369b16rf379/dqHS4Lh8PKysq66vNcAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJm6xHgDxtWzZMs9rJk2a1KvX+vTTTz2vueeeezyvue+++zyvmT17tuc1knT//fd7XnPs2DHPawoKCjyv6Uv/+9//PK/5/PPPPa/Jz8/3vKY3jh492qt13Iw0sbgCAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMcDPSFFNTU9Mna3qrurq6T17njjvu6NW6e++91/OaxsZGz2umTp3qeU1fOn/+vOc1//znPz2v6c0NbbOzsz2vaWlp8bwGiccVEADABAECAJjwHKA9e/bo4YcfVjAYVFpamrZv3x7zvHNOL7zwgvLz8zV48GCVlJToyJEj8ZoXAJAiPAeos7NTkydP1saNG3t8fv369XrllVf02muvad++fbrttts0b968Xn1NGQCQujy/CaGsrExlZWU9Puec04YNG/T8889r/vz5kqTXX39deXl52r59uxYtWnRj0wIAUkZcvwfU2tqqtrY2lZSURB/z+/0qKipSfX19j2u6uroUiURiNgBA6otrgNra2iRJeXl5MY/n5eVFn/u2qqoq+f3+6FZQUBDPkQAA/ZT5u+AqKysVDoej27Fjx6xHAgD0gbgGKBAISJLa29tjHm9vb48+920+n09ZWVkxGwAg9cU1QIWFhQoEAjE/WR+JRLRv3z4VFxfH86UAAEnO87vgzp49q+bm5ujHra2tOnjwoLKzszVixAitXr1av/71r3XXXXepsLBQa9asUTAY1IIFC+I5NwAgyXkO0P79+/XAAw9EP66oqJAkLV68WFu2bNGzzz6rzs5OLV++XGfOnNGMGTNUXV2tQYMGxW9qAEDSS3POOeshvikSicjv91uPAcCj8vJyz2veeecdz2sOHz7sec03/9HsxZdfftmrdbgsHA5f8/v65u+CAwDcnAgQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGDC869jAJD6cnNzPa959dVXPa9JT/f+b+B169Z5XsNdrfsnroAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABPcjBTAFUKhkOc1w4YN87zmv//9r+c1TU1Nntegf+IKCABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwwc1IgRQ2ffr0Xq37xS9+EedJerZgwQLPaw4fPhz/QWCCKyAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQ3IwVS2EMPPdSrdQMHDvS8pqamxvOa+vp6z2uQOrgCAgCYIEAAABOeA7Rnzx49/PDDCgaDSktL0/bt22OeX7JkidLS0mK20tLSeM0LAEgRngPU2dmpyZMna+PGjVfdp7S0VCdPnoxub7755g0NCQBIPZ7fhFBWVqaysrJr7uPz+RQIBHo9FAAg9SXke0C1tbXKzc3V2LFjtXLlSp0+ffqq+3Z1dSkSicRsAIDUF/cAlZaW6vXXX1dNTY1++9vfqq6uTmVlZbp06VKP+1dVVcnv90e3goKCeI8EAOiH4v5zQIsWLYr+eeLEiZo0aZLGjBmj2tpazZkz54r9KysrVVFREf04EokQIQC4CST8bdijR49WTk6Ompube3ze5/MpKysrZgMApL6EB+j48eM6ffq08vPzE/1SAIAk4vlLcGfPno25mmltbdXBgweVnZ2t7OxsvfTSSyovL1cgEFBLS4ueffZZ3XnnnZo3b15cBwcAJDfPAdq/f78eeOCB6Mdff/9m8eLF2rRpkw4dOqQ//elPOnPmjILBoObOnatf/epX8vl88ZsaAJD00pxzznqIb4pEIvL7/dZjAP3O4MGDPa/Zu3dvr15r/Pjxntc8+OCDntd89NFHntcgeYTD4Wt+X597wQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMBE3H8lN4DEeOaZZzyv+f73v9+r16qurva8hjtbwyuugAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE9yMFDDwox/9yPOaNWvWeF4TiUQ8r5GkdevW9Wod4AVXQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACW5GCtygoUOHel7zyiuveF4zYMAAz2v+/Oc/e14jSQ0NDb1aB3jBFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIKbkQLf0JsbflZXV3teU1hY6HlNS0uL5zVr1qzxvAboK1wBAQBMECAAgAlPAaqqqtLUqVOVmZmp3NxcLViwQE1NTTH7nD9/XqFQSEOHDtXtt9+u8vJytbe3x3VoAEDy8xSguro6hUIhNTQ06IMPPtDFixc1d+5cdXZ2Rvd56qmn9P777+vdd99VXV2dTpw4oUcffTTugwMAkpunNyF8+5utW7ZsUW5urhobGzVr1iyFw2H98Y9/1NatW/Xggw9KkjZv3qx77rlHDQ0Nuv/+++M3OQAgqd3Q94DC4bAkKTs7W5LU2NioixcvqqSkJLrPuHHjNGLECNXX1/f4Obq6uhSJRGI2AEDq63WAuru7tXr1ak2fPl0TJkyQJLW1tSkjI0NDhgyJ2TcvL09tbW09fp6qqir5/f7oVlBQ0NuRAABJpNcBCoVCOnz4sN56660bGqCyslLhcDi6HTt27IY+HwAgOfTqB1FXrVqlnTt3as+ePRo+fHj08UAgoAsXLujMmTMxV0Ht7e0KBAI9fi6fzyefz9ebMQAASczTFZBzTqtWrdK2bdu0e/fuK36ae8qUKRo4cKBqamqijzU1Neno0aMqLi6Oz8QAgJTg6QooFApp69at2rFjhzIzM6Pf1/H7/Ro8eLD8fr+WLl2qiooKZWdnKysrS08++aSKi4t5BxwAIIanAG3atEmSNHv27JjHN2/erCVLlkiSfv/73ys9PV3l5eXq6urSvHnz9Oqrr8ZlWABA6khzzjnrIb4pEonI7/dbj4Gb1N133+15zWeffZaASa40f/58z2vef//9BEwCfDfhcFhZWVlXfZ57wQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMBEr34jKtDfjRw5slfr/vKXv8R5kp4988wzntfs3LkzAZMAdrgCAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMcDNSpKTly5f3at2IESPiPEnP6urqPK9xziVgEsAOV0AAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAluRop+b8aMGZ7XPPnkkwmYBEA8cQUEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJjgZqTo92bOnOl5ze23356ASXrW0tLiec3Zs2cTMAmQXLgCAgCYIEAAABOeAlRVVaWpU6cqMzNTubm5WrBggZqammL2mT17ttLS0mK2FStWxHVoAEDy8xSguro6hUIhNTQ06IMPPtDFixc1d+5cdXZ2xuy3bNkynTx5MrqtX78+rkMDAJKfpzchVFdXx3y8ZcsW5ebmqrGxUbNmzYo+fuuttyoQCMRnQgBASrqh7wGFw2FJUnZ2dszjb7zxhnJycjRhwgRVVlbq3LlzV/0cXV1dikQiMRsAIPX1+m3Y3d3dWr16taZPn64JEyZEH3/88cc1cuRIBYNBHTp0SM8995yampr03nvv9fh5qqqq9NJLL/V2DABAkup1gEKhkA4fPqy9e/fGPL58+fLonydOnKj8/HzNmTNHLS0tGjNmzBWfp7KyUhUVFdGPI5GICgoKejsWACBJ9CpAq1at0s6dO7Vnzx4NHz78mvsWFRVJkpqbm3sMkM/nk8/n680YAIAk5ilAzjk9+eST2rZtm2pra1VYWHjdNQcPHpQk5efn92pAAEBq8hSgUCikrVu3aseOHcrMzFRbW5skye/3a/DgwWppadHWrVv10EMPaejQoTp06JCeeuopzZo1S5MmTUrIfwAAIDl5CtCmTZskXf5h02/avHmzlixZooyMDO3atUsbNmxQZ2enCgoKVF5erueffz5uAwMAUoPnL8FdS0FBgerq6m5oIADAzYG7YQPf8Le//c3zmjlz5nhe8+WXX3peA6QabkYKADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJhIc9e7xXUfi0Qi8vv91mMAAG5QOBxWVlbWVZ/nCggAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJfhegfnZrOgBAL13v7/N+F6COjg7rEQAAcXC9v8/73d2wu7u7deLECWVmZiotLS3muUgkooKCAh07duyad1hNdRyHyzgOl3EcLuM4XNYfjoNzTh0dHQoGg0pPv/p1zi19ONN3kp6eruHDh19zn6ysrJv6BPsax+EyjsNlHIfLOA6XWR+H7/Jrdfrdl+AAADcHAgQAMJFUAfL5fFq7dq18Pp/1KKY4DpdxHC7jOFzGcbgsmY5Dv3sTAgDg5pBUV0AAgNRBgAAAJggQAMAEAQIAmEiaAG3cuFGjRo3SoEGDVFRUpI8//th6pD734osvKi0tLWYbN26c9VgJt2fPHj388MMKBoNKS0vT9u3bY553zumFF15Qfn6+Bg8erJKSEh05csRm2AS63nFYsmTJFedHaWmpzbAJUlVVpalTpyozM1O5ublasGCBmpqaYvY5f/68QqGQhg4dqttvv13l5eVqb283mjgxvstxmD179hXnw4oVK4wm7llSBOjtt99WRUWF1q5dq08++USTJ0/WvHnzdOrUKevR+tz48eN18uTJ6LZ3717rkRKus7NTkydP1saNG3t8fv369XrllVf02muvad++fbrttts0b948nT9/vo8nTazrHQdJKi0tjTk/3nzzzT6cMPHq6uoUCoXU0NCgDz74QBcvXtTcuXPV2dkZ3eepp57S+++/r3fffVd1dXU6ceKEHn30UcOp4++7HAdJWrZsWcz5sH79eqOJr8IlgWnTprlQKBT9+NKlSy4YDLqqqirDqfre2rVr3eTJk63HMCXJbdu2Lfpxd3e3CwQC7ne/+130sTNnzjifz+fefPNNgwn7xrePg3POLV682M2fP99kHiunTp1yklxdXZ1z7vL/+4EDB7p33303us+nn37qJLn6+nqrMRPu28fBOed++MMfup/97Gd2Q30H/f4K6MKFC2psbFRJSUn0sfT0dJWUlKi+vt5wMhtHjhxRMBjU6NGj9cQTT+jo0aPWI5lqbW1VW1tbzPnh9/tVVFR0U54ftbW1ys3N1dixY7Vy5UqdPn3aeqSECofDkqTs7GxJUmNjoy5evBhzPowbN04jRoxI6fPh28fha2+88YZycnI0YcIEVVZW6ty5cxbjXVW/uxnpt33xxRe6dOmS8vLyYh7Py8vTZ599ZjSVjaKiIm3ZskVjx47VyZMn9dJLL2nmzJk6fPiwMjMzrccz0dbWJkk9nh9fP3ezKC0t1aOPPqrCwkK1tLTol7/8pcrKylRfX68BAwZYjxd33d3dWr16taZPn64JEyZIunw+ZGRkaMiQITH7pvL50NNxkKTHH39cI0eOVDAY1KFDh/Tcc8+pqalJ7733nuG0sfp9gPD/ysrKon+eNGmSioqKNHLkSL3zzjtaunSp4WToDxYtWhT988SJEzVp0iSNGTNGtbW1mjNnjuFkiREKhXT48OGb4vug13K147B8+fLonydOnKj8/HzNmTNHLS0tGjNmTF+P2aN+/yW4nJwcDRgw4Ip3sbS3tysQCBhN1T8MGTJEd999t5qbm61HMfP1OcD5caXRo0crJycnJc+PVatWaefOnfrwww9jfn1LIBDQhQsXdObMmZj9U/V8uNpx6ElRUZEk9avzod8HKCMjQ1OmTFFNTU30se7ubtXU1Ki4uNhwMntnz55VS0uL8vPzrUcxU1hYqEAgEHN+RCIR7du376Y/P44fP67Tp0+n1PnhnNOqVau0bds27d69W4WFhTHPT5kyRQMHDow5H5qamnT06NGUOh+udxx6cvDgQUnqX+eD9bsgvou33nrL+Xw+t2XLFvePf/zDLV++3A0ZMsS1tbVZj9anfv7zn7va2lrX2trq/vrXv7qSkhKXk5PjTp06ZT1aQnV0dLgDBw64AwcOOEnu5ZdfdgcOHHD/+c9/nHPO/eY3v3FDhgxxO3bscIcOHXLz5893hYWF7quvvjKePL6udRw6Ojrc008/7err611ra6vbtWuXu++++9xdd93lzp8/bz163KxcudL5/X5XW1vrTp48Gd3OnTsX3WfFihVuxIgRbvfu3W7//v2uuLjYFRcXG04df9c7Ds3NzW7dunVu//79rrW11e3YscONHj3azZo1y3jyWEkRIOec+8Mf/uBGjBjhMjIy3LRp01xDQ4P1SH1u4cKFLj8/32VkZLjvfe97buHCha65udl6rIT78MMPnaQrtsWLFzvnLr8Ve82aNS4vL8/5fD43Z84c19TUZDt0AlzrOJw7d87NnTvXDRs2zA0cONCNHDnSLVu2LOX+kdbTf78kt3nz5ug+X331lfvpT3/q7rjjDnfrrbe6Rx55xJ08edJu6AS43nE4evSomzVrlsvOznY+n8/deeed7plnnnHhcNh28G/h1zEAAEz0++8BAQBSEwECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABg4v8AjVqFRqQZEfIAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"test_samples = enumerate(test_dataloader)\n",
"b_i, (sample_data, sample_targets) = next(test_samples)\n",
"plt.imshow(sample_data[0], cmap='gray', interpolation='none')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model prediction is : 7\n",
"Ground truth is : 7\n"
]
}
],
"source": [
"print(f\"Model prediction is : {tf.math.argmax(model(sample_data)[0])}\")\n",
"print(f\"Ground truth is : {sample_targets[0]}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.16"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: Chapter02/DenseNetBlock.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import torch.nn as nn"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"class DenseBlock(nn.Module):\n",
" def __init__(self, input_num_planes, rate_inc):\n",
" super(DenseBlock, self).__init__()\n",
" self.batch_norm1 = nn.BatchNorm2d(input_num_planes)\n",
" self.conv_layer1 = nn.Conv2d(in_channels=input_num_planes, out_channels=4*rate_inc, kernel_size=1, bias=False)\n",
" self.batch_norm2 = nn.BatchNorm2d(4*rate_inc)\n",
" self.conv_layer2 = nn.Conv2d(in_channels=4*rate_inc, out_channels=rate_inc, kernel_size=3, padding=1, bias=False)\n",
" def forward(self, inp):\n",
" op = self.conv_layer1(F.relu(self.batch_norm1(inp)))\n",
" op = self.conv_layer2(F.relu(self.batch_norm2(op)))\n",
" op = torch.cat([op,inp], 1)\n",
" return op\n",
"\n",
"class TransBlock(nn.Module):\n",
" def __init__(self, input_num_planes, output_num_planes):\n",
" super(TransBlock, self).__init__()\n",
" self.batch_norm = nn.BatchNorm2d(input_num_planes)\n",
" self.conv_layer = nn.Conv2d(in_channels=input_num_planes, out_channels=output_num_planes, kernel_size=1, bias=False)\n",
" def forward(self, inp):\n",
" op = self.conv_layer(F.relu(self.batch_norm(inp)))\n",
" op = F.avg_pool2d(op, 2)\n",
" return op"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: Chapter02/GoogLeNet.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: torch==2.2 in /opt/conda/lib/python3.10/site-packages (2.2.0)\n",
"Requirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.13.1)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (1.12)\n",
"Requirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.2.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2023.12.2)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (8.9.2.26)\n",
"Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.3.1)\n",
"Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (11.0.2.54)\n",
"Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (10.3.2.106)\n",
"Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (11.4.5.107)\n",
"Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.0.106)\n",
"Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2.19.3)\n",
"Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: triton==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2.2.0)\n",
"Requirement already satisfied: nvidia-nvjitlink-cu12 in /opt/conda/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2) (12.3.101)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch==2.2) (2.1.3)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/conda/lib/python3.10/site-packages (from sympy->torch==2.2) (1.3.0)\n",
"Requirement already satisfied: torchvision==0.17 in /opt/conda/lib/python3.10/site-packages (0.17.0)\n",
"Requirement already satisfied: numpy in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (1.26.2)\n",
"Requirement already satisfied: requests in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (2.28.1)\n",
"Requirement already satisfied: torch==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (10.2.0)\n",
"Requirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.13.1)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (1.12)\n",
"Requirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.2.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2023.12.2)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (8.9.2.26)\n",
"Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.3.1)\n",
"Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (11.0.2.54)\n",
"Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (10.3.2.106)\n",
"Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (11.4.5.107)\n",
"Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.0.106)\n",
"Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2.19.3)\n",
"Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: triton==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: nvidia-nvjitlink-cu12 in /opt/conda/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2.0->torchvision==0.17) (12.3.101)\n",
"Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (2.1.0)\n",
"Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (3.3)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (1.26.10)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (2022.6.15)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch==2.2.0->torchvision==0.17) (2.1.3)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/conda/lib/python3.10/site-packages (from sympy->torch==2.2.0->torchvision==0.17) (1.3.0)\n",
"Requirement already satisfied: nltk==3.7 in /opt/conda/lib/python3.10/site-packages (3.7)\n",
"Requirement already satisfied: click in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (8.1.7)\n",
"Requirement already satisfied: joblib in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (1.3.2)\n",
"Requirement already satisfied: regex>=2021.8.3 in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (2022.7.9)\n",
"Requirement already satisfied: tqdm in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (4.66.1)\n"
]
}
],
"source": [
"!pip install torch==2.2\n",
"!pip install torchvision==0.17\n",
"!pip install nltk==3.7"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torch.nn as nn"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class InceptionModule(nn.Module):\n",
" def __init__(self, input_planes, n_channels1x1, n_channels3x3red, n_channels3x3, n_channels5x5red, n_channels5x5, pooling_planes):\n",
" super(InceptionModule, self).__init__()\n",
" # 1x1 convolution branch\n",
" self.block1 = nn.Sequential(\n",
" nn.Conv2d(input_planes, n_channels1x1, kernel_size=1),\n",
" nn.BatchNorm2d(n_channels1x1),\n",
" nn.ReLU(True),\n",
" )\n",
" \n",
" # 1x1 convolution -> 3x3 convolution branch\n",
" self.block2 = nn.Sequential(\n",
" nn.Conv2d(input_planes, n_channels3x3red, kernel_size=1),\n",
" nn.BatchNorm2d(n_channels3x3red),\n",
" nn.ReLU(True),\n",
" nn.Conv2d(n_channels3x3red, n_channels3x3, kernel_size=3, padding=1),\n",
" nn.BatchNorm2d(n_channels3x3),\n",
" nn.ReLU(True),\n",
" )\n",
" \n",
" # 1x1 conv -> 5x5 conv branch\n",
" self.block3 = nn.Sequential(\n",
" nn.Conv2d(input_planes, n_channels5x5red, kernel_size=1),\n",
" nn.BatchNorm2d(n_channels5x5red),\n",
" nn.ReLU(True),\n",
" nn.Conv2d(n_channels5x5red, n_channels5x5, kernel_size=3, padding=1),\n",
" nn.BatchNorm2d(n_channels5x5),\n",
" nn.ReLU(True),\n",
" nn.Conv2d(n_channels5x5, n_channels5x5, kernel_size=3, padding=1),\n",
" nn.BatchNorm2d(n_channels5x5),\n",
" nn.ReLU(True),\n",
" )\n",
" \n",
" # 3x3 pool -> 1x1 conv branch\n",
" self.block4 = nn.Sequential(\n",
" nn.MaxPool2d(3, stride=1, padding=1),\n",
" nn.Conv2d(input_planes, pooling_planes, kernel_size=1),\n",
" nn.BatchNorm2d(pooling_planes),\n",
" nn.ReLU(True),\n",
" )\n",
" \n",
" def forward(self, ip):\n",
" op1 = self.block1(ip)\n",
" op2 = self.block2(ip)\n",
" op3 = self.block3(ip)\n",
" op4 = self.block4(ip)\n",
" return torch.cat([op1,op2,op3,op4], 1)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class GoogLeNet(nn.Module):\n",
" def __init__(self):\n",
" super(GoogLeNet, self).__init__()\n",
" self.stem = nn.Sequential(\n",
" nn.Conv2d(3, 192, kernel_size=3, padding=1),\n",
" nn.BatchNorm2d(192),\n",
" nn.ReLU(True),\n",
" )\n",
" \n",
" self.im1 = InceptionModule(192, 64, 96, 128, 16, 32, 32)\n",
" self.im2 = InceptionModule(256, 128, 128, 192, 32, 96, 64)\n",
" \n",
" self.max_pool = nn.MaxPool2d(3, stride=2, padding=1)\n",
" \n",
" self.im3 = InceptionModule(480, 192, 96, 208, 16, 48, 64)\n",
" self.im4 = InceptionModule(512, 160, 112, 224, 24, 64, 64)\n",
" self.im5 = InceptionModule(512, 128, 128, 256, 24, 64, 64)\n",
" self.im6 = InceptionModule(512, 112, 144, 288, 32, 64, 64)\n",
" self.im7 = InceptionModule(528, 256, 160, 320, 32, 128, 128)\n",
" \n",
" self.im8 = InceptionModule(832, 256, 160, 320, 32, 128, 128)\n",
" self.im9 = InceptionModule(832, 384, 192, 384, 48, 128, 128)\n",
" \n",
" self.average_pool = nn.AvgPool2d(7, stride=1)\n",
" self.fc = nn.Linear(4096, 1000)\n",
" \n",
" def forward(self, ip):\n",
" op = self.stem(ip)\n",
" out = self.im1(op)\n",
" out = self.im2(op)\n",
" op = self.maxpool(op)\n",
" op = self.a4(op)\n",
" op = self.b4(op)\n",
" op = self.c4(op)\n",
" op = self.d4(op)\n",
" op = self.e4(op)\n",
" op = self.max_pool(op)\n",
" op = self.a5(op)\n",
" op = self.b5(op)\n",
" op = self.avgerage_pool(op)\n",
" op = op.view(op.size(0), -1)\n",
" op = self.fc(op)\n",
" return op"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (Local)",
"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.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: Chapter02/ResNetBlock.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: torch==2.2 in /opt/conda/lib/python3.10/site-packages (2.2.0)\n",
"Requirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.13.1)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (1.12)\n",
"Requirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.2.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2023.12.2)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (8.9.2.26)\n",
"Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.3.1)\n",
"Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (11.0.2.54)\n",
"Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (10.3.2.106)\n",
"Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (11.4.5.107)\n",
"Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.0.106)\n",
"Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2.19.3)\n",
"Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: triton==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2.2.0)\n",
"Requirement already satisfied: nvidia-nvjitlink-cu12 in /opt/conda/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2) (12.3.101)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch==2.2) (2.1.3)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/conda/lib/python3.10/site-packages (from sympy->torch==2.2) (1.3.0)\n",
"Requirement already satisfied: torchvision==0.17 in /opt/conda/lib/python3.10/site-packages (0.17.0)\n",
"Requirement already satisfied: numpy in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (1.26.2)\n",
"Requirement already satisfied: requests in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (2.28.1)\n",
"Requirement already satisfied: torch==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (10.2.0)\n",
"Requirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.13.1)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (1.12)\n",
"Requirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.2.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2023.12.2)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (8.9.2.26)\n",
"Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.3.1)\n",
"Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (11.0.2.54)\n",
"Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (10.3.2.106)\n",
"Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (11.4.5.107)\n",
"Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.0.106)\n",
"Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2.19.3)\n",
"Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: triton==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: nvidia-nvjitlink-cu12 in /opt/conda/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2.0->torchvision==0.17) (12.3.101)\n",
"Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (2.1.0)\n",
"Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (3.3)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (1.26.10)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (2022.6.15)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch==2.2.0->torchvision==0.17) (2.1.3)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/conda/lib/python3.10/site-packages (from sympy->torch==2.2.0->torchvision==0.17) (1.3.0)\n",
"Requirement already satisfied: nltk==3.7 in /opt/conda/lib/python3.10/site-packages (3.7)\n",
"Requirement already satisfied: click in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (8.1.7)\n",
"Requirement already satisfied: joblib in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (1.3.2)\n",
"Requirement already satisfied: regex>=2021.8.3 in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (2022.7.9)\n",
"Requirement already satisfied: tqdm in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (4.66.1)\n"
]
}
],
"source": [
"!pip install torch==2.2\n",
"!pip install torchvision==0.17\n",
"!pip install nltk==3.7"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torch.nn as nn"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class BasicBlock(nn.Module):\n",
" multiplier=1\n",
" def __init__(self, input_num_planes, num_planes, strd=1):\n",
" super(BasicBlock, self).__init__()\n",
" self.conv_layer1 = nn.Conv2d(in_channels=input_num_planes, out_channels=num_planes, kernel_size=3, stride=stride, padding=1, bias=False)\n",
" self.batch_norm1 = nn.BatchNorm2d(num_planes)\n",
" self.conv_layer2 = nn.Conv2d(in_channels=num_planes, out_channels=num_planes, kernel_size=3, stride=1, padding=1, bias=False)\n",
" self.batch_norm2 = nn.BatchNorm2d(num_planes)\n",
" \n",
" self.res_connnection = nn.Sequential()\n",
" if strd > 1 or input_num_planes != self.multiplier*num_planes:\n",
" self.res_connnection = nn.Sequential(\n",
" nn.Conv2d(in_channels=input_num_planes, out_channels=self.multiplier*num_planes, kernel_size=1, stride=strd, bias=False),\n",
" nn.BatchNorm2d(self.multiplier*num_planes)\n",
" )\n",
" def forward(self, inp):\n",
" op = F.relu(self.batch_norm1(self.conv_layer1(inp)))\n",
" op = self.batch_norm2(self.conv_layer2(op))\n",
" op += self.res_connnection(inp)\n",
" op = F.relu(op)\n",
" return op"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (Local)",
"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.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: Chapter02/imagenet1000_clsidx_to_labels.txt
================================================
{0: 'tench, Tinca tinca',
1: 'goldfish, Carassius auratus',
2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias',
3: 'tiger shark, Galeocerdo cuvieri',
4: 'hammerhead, hammerhead shark',
5: 'electric ray, crampfish, numbfish, torpedo',
6: 'stingray',
7: 'cock',
8: 'hen',
9: 'ostrich, Struthio camelus',
10: 'brambling, Fringilla montifringilla',
11: 'goldfinch, Carduelis carduelis',
12: 'house finch, linnet, Carpodacus mexicanus',
13: 'junco, snowbird',
14: 'indigo bunting, indigo finch, indigo bird, Passerina cyanea',
15: 'robin, American robin, Turdus migratorius',
16: 'bulbul',
17: 'jay',
18: 'magpie',
19: 'chickadee',
20: 'water ouzel, dipper',
21: 'kite',
22: 'bald eagle, American eagle, Haliaeetus leucocephalus',
23: 'vulture',
24: 'great grey owl, great gray owl, Strix nebulosa',
25: 'European fire salamander, Salamandra salamandra',
26: 'common newt, Triturus vulgaris',
27: 'eft',
28: 'spotted salamander, Ambystoma maculatum',
29: 'axolotl, mud puppy, Ambystoma mexicanum',
30: 'bullfrog, Rana catesbeiana',
31: 'tree frog, tree-frog',
32: 'tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui',
33: 'loggerhead, loggerhead turtle, Caretta caretta',
34: 'leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea',
35: 'mud turtle',
36: 'terrapin',
37: 'box turtle, box tortoise',
38: 'banded gecko',
39: 'common iguana, iguana, Iguana iguana',
40: 'American chameleon, anole, Anolis carolinensis',
41: 'whiptail, whiptail lizard',
42: 'agama',
43: 'frilled lizard, Chlamydosaurus kingi',
44: 'alligator lizard',
45: 'Gila monster, Heloderma suspectum',
46: 'green lizard, Lacerta viridis',
47: 'African chameleon, Chamaeleo chamaeleon',
48: 'Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis',
49: 'African crocodile, Nile crocodile, Crocodylus niloticus',
50: 'American alligator, Alligator mississipiensis',
51: 'triceratops',
52: 'thunder snake, worm snake, Carphophis amoenus',
53: 'ringneck snake, ring-necked snake, ring snake',
54: 'hognose snake, puff adder, sand viper',
55: 'green snake, grass snake',
56: 'king snake, kingsnake',
57: 'garter snake, grass snake',
58: 'water snake',
59: 'vine snake',
60: 'night snake, Hypsiglena torquata',
61: 'boa constrictor, Constrictor constrictor',
62: 'rock python, rock snake, Python sebae',
63: 'Indian cobra, Naja naja',
64: 'green mamba',
65: 'sea snake',
66: 'horned viper, cerastes, sand viper, horned asp, Cerastes cornutus',
67: 'diamondback, diamondback rattlesnake, Crotalus adamanteus',
68: 'sidewinder, horned rattlesnake, Crotalus cerastes',
69: 'trilobite',
70: 'harvestman, daddy longlegs, Phalangium opilio',
71: 'scorpion',
72: 'black and gold garden spider, Argiope aurantia',
73: 'barn spider, Araneus cavaticus',
74: 'garden spider, Aranea diademata',
75: 'black widow, Latrodectus mactans',
76: 'tarantula',
77: 'wolf spider, hunting spider',
78: 'tick',
79: 'centipede',
80: 'black grouse',
81: 'ptarmigan',
82: 'ruffed grouse, partridge, Bonasa umbellus',
83: 'prairie chicken, prairie grouse, prairie fowl',
84: 'peacock',
85: 'quail',
86: 'partridge',
87: 'African grey, African gray, Psittacus erithacus',
88: 'macaw',
89: 'sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita',
90: 'lorikeet',
91: 'coucal',
92: 'bee eater',
93: 'hornbill',
94: 'hummingbird',
95: 'jacamar',
96: 'toucan',
97: 'drake',
98: 'red-breasted merganser, Mergus serrator',
99: 'goose',
100: 'black swan, Cygnus atratus',
101: 'tusker',
102: 'echidna, spiny anteater, anteater',
103: 'platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus',
104: 'wallaby, brush kangaroo',
105: 'koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus',
106: 'wombat',
107: 'jellyfish',
108: 'sea anemone, anemone',
109: 'brain coral',
110: 'flatworm, platyhelminth',
111: 'nematode, nematode worm, roundworm',
112: 'conch',
113: 'snail',
114: 'slug',
115: 'sea slug, nudibranch',
116: 'chiton, coat-of-mail shell, sea cradle, polyplacophore',
117: 'chambered nautilus, pearly nautilus, nautilus',
118: 'Dungeness crab, Cancer magister',
119: 'rock crab, Cancer irroratus',
120: 'fiddler crab',
121: 'king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica',
122: 'American lobster, Northern lobster, Maine lobster, Homarus americanus',
123: 'spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish',
124: 'crayfish, crawfish, crawdad, crawdaddy',
125: 'hermit crab',
126: 'isopod',
127: 'white stork, Ciconia ciconia',
128: 'black stork, Ciconia nigra',
129: 'spoonbill',
130: 'flamingo',
131: 'little blue heron, Egretta caerulea',
132: 'American egret, great white heron, Egretta albus',
133: 'bittern',
134: 'crane',
135: 'limpkin, Aramus pictus',
136: 'European gallinule, Porphyrio porphyrio',
137: 'American coot, marsh hen, mud hen, water hen, Fulica americana',
138: 'bustard',
139: 'ruddy turnstone, Arenaria interpres',
140: 'red-backed sandpiper, dunlin, Erolia alpina',
141: 'redshank, Tringa totanus',
142: 'dowitcher',
143: 'oystercatcher, oyster catcher',
144: 'pelican',
145: 'king penguin, Aptenodytes patagonica',
146: 'albatross, mollymawk',
147: 'grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus',
148: 'killer whale, killer, orca, grampus, sea wolf, Orcinus orca',
149: 'dugong, Dugong dugon',
150: 'sea lion',
151: 'Chihuahua',
152: 'Japanese spaniel',
153: 'Maltese dog, Maltese terrier, Maltese',
154: 'Pekinese, Pekingese, Peke',
155: 'Shih-Tzu',
156: 'Blenheim spaniel',
157: 'papillon',
158: 'toy terrier',
159: 'Rhodesian ridgeback',
160: 'Afghan hound, Afghan',
161: 'basset, basset hound',
162: 'beagle',
163: 'bloodhound, sleuthhound',
164: 'bluetick',
165: 'black-and-tan coonhound',
166: 'Walker hound, Walker foxhound',
167: 'English foxhound',
168: 'redbone',
169: 'borzoi, Russian wolfhound',
170: 'Irish wolfhound',
171: 'Italian greyhound',
172: 'whippet',
173: 'Ibizan hound, Ibizan Podenco',
174: 'Norwegian elkhound, elkhound',
175: 'otterhound, otter hound',
176: 'Saluki, gazelle hound',
177: 'Scottish deerhound, deerhound',
178: 'Weimaraner',
179: 'Staffordshire bullterrier, Staffordshire bull terrier',
180: 'American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier',
181: 'Bedlington terrier',
182: 'Border terrier',
183: 'Kerry blue terrier',
184: 'Irish terrier',
185: 'Norfolk terrier',
186: 'Norwich terrier',
187: 'Yorkshire terrier',
188: 'wire-haired fox terrier',
189: 'Lakeland terrier',
190: 'Sealyham terrier, Sealyham',
191: 'Airedale, Airedale terrier',
192: 'cairn, cairn terrier',
193: 'Australian terrier',
194: 'Dandie Dinmont, Dandie Dinmont terrier',
195: 'Boston bull, Boston terrier',
196: 'miniature schnauzer',
197: 'giant schnauzer',
198: 'standard schnauzer',
199: 'Scotch terrier, Scottish terrier, Scottie',
200: 'Tibetan terrier, chrysanthemum dog',
201: 'silky terrier, Sydney silky',
202: 'soft-coated wheaten terrier',
203: 'West Highland white terrier',
204: 'Lhasa, Lhasa apso',
205: 'flat-coated retriever',
206: 'curly-coated retriever',
207: 'golden retriever',
208: 'Labrador retriever',
209: 'Chesapeake Bay retriever',
210: 'German short-haired pointer',
211: 'vizsla, Hungarian pointer',
212: 'English setter',
213: 'Irish setter, red setter',
214: 'Gordon setter',
215: 'Brittany spaniel',
216: 'clumber, clumber spaniel',
217: 'English springer, English springer spaniel',
218: 'Welsh springer spaniel',
219: 'cocker spaniel, English cocker spaniel, cocker',
220: 'Sussex spaniel',
221: 'Irish water spaniel',
222: 'kuvasz',
223: 'schipperke',
224: 'groenendael',
225: 'malinois',
226: 'briard',
227: 'kelpie',
228: 'komondor',
229: 'Old English sheepdog, bobtail',
230: 'Shetland sheepdog, Shetland sheep dog, Shetland',
231: 'collie',
232: 'Border collie',
233: 'Bouvier des Flandres, Bouviers des Flandres',
234: 'Rottweiler',
235: 'German shepherd, German shepherd dog, German police dog, alsatian',
236: 'Doberman, Doberman pinscher',
237: 'miniature pinscher',
238: 'Greater Swiss Mountain dog',
239: 'Bernese mountain dog',
240: 'Appenzeller',
241: 'EntleBucher',
242: 'boxer',
243: 'bull mastiff',
244: 'Tibetan mastiff',
245: 'French bulldog',
246: 'Great Dane',
247: 'Saint Bernard, St Bernard',
248: 'Eskimo dog, husky',
249: 'malamute, malemute, Alaskan malamute',
250: 'Siberian husky',
251: 'dalmatian, coach dog, carriage dog',
252: 'affenpinscher, monkey pinscher, monkey dog',
253: 'basenji',
254: 'pug, pug-dog',
255: 'Leonberg',
256: 'Newfoundland, Newfoundland dog',
257: 'Great Pyrenees',
258: 'Samoyed, Samoyede',
259: 'Pomeranian',
260: 'chow, chow chow',
261: 'keeshond',
262: 'Brabancon griffon',
263: 'Pembroke, Pembroke Welsh corgi',
264: 'Cardigan, Cardigan Welsh corgi',
265: 'toy poodle',
266: 'miniature poodle',
267: 'standard poodle',
268: 'Mexican hairless',
269: 'timber wolf, grey wolf, gray wolf, Canis lupus',
270: 'white wolf, Arctic wolf, Canis lupus tundrarum',
271: 'red wolf, maned wolf, Canis rufus, Canis niger',
272: 'coyote, prairie wolf, brush wolf, Canis latrans',
273: 'dingo, warrigal, warragal, Canis dingo',
274: 'dhole, Cuon alpinus',
275: 'African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus',
276: 'hyena, hyaena',
277: 'red fox, Vulpes vulpes',
278: 'kit fox, Vulpes macrotis',
279: 'Arctic fox, white fox, Alopex lagopus',
280: 'grey fox, gray fox, Urocyon cinereoargenteus',
281: 'tabby, tabby cat',
282: 'tiger cat',
283: 'Persian cat',
284: 'Siamese cat, Siamese',
285: 'Egyptian cat',
286: 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor',
287: 'lynx, catamount',
288: 'leopard, Panthera pardus',
289: 'snow leopard, ounce, Panthera uncia',
290: 'jaguar, panther, Panthera onca, Felis onca',
291: 'lion, king of beasts, Panthera leo',
292: 'tiger, Panthera tigris',
293: 'cheetah, chetah, Acinonyx jubatus',
294: 'brown bear, bruin, Ursus arctos',
295: 'American black bear, black bear, Ursus americanus, Euarctos americanus',
296: 'ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus',
297: 'sloth bear, Melursus ursinus, Ursus ursinus',
298: 'mongoose',
299: 'meerkat, mierkat',
300: 'tiger beetle',
301: 'ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle',
302: 'ground beetle, carabid beetle',
303: 'long-horned beetle, longicorn, longicorn beetle',
304: 'leaf beetle, chrysomelid',
305: 'dung beetle',
306: 'rhinoceros beetle',
307: 'weevil',
308: 'fly',
309: 'bee',
310: 'ant, emmet, pismire',
311: 'grasshopper, hopper',
312: 'cricket',
313: 'walking stick, walkingstick, stick insect',
314: 'cockroach, roach',
315: 'mantis, mantid',
316: 'cicada, cicala',
317: 'leafhopper',
318: 'lacewing, lacewing fly',
319: "dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
320: 'damselfly',
321: 'admiral',
322: 'ringlet, ringlet butterfly',
323: 'monarch, monarch butterfly, milkweed butterfly, Danaus plexippus',
324: 'cabbage butterfly',
325: 'sulphur butterfly, sulfur butterfly',
326: 'lycaenid, lycaenid butterfly',
327: 'starfish, sea star',
328: 'sea urchin',
329: 'sea cucumber, holothurian',
330: 'wood rabbit, cottontail, cottontail rabbit',
331: 'hare',
332: 'Angora, Angora rabbit',
333: 'hamster',
334: 'porcupine, hedgehog',
335: 'fox squirrel, eastern fox squirrel, Sciurus niger',
336: 'marmot',
337: 'beaver',
338: 'guinea pig, Cavia cobaya',
339: 'sorrel',
340: 'zebra',
341: 'hog, pig, grunter, squealer, Sus scrofa',
342: 'wild boar, boar, Sus scrofa',
343: 'warthog',
344: 'hippopotamus, hippo, river horse, Hippopotamus amphibius',
345: 'ox',
346: 'water buffalo, water ox, Asiatic buffalo, Bubalus bubalis',
347: 'bison',
348: 'ram, tup',
349: 'bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis',
350: 'ibex, Capra ibex',
351: 'hartebeest',
352: 'impala, Aepyceros melampus',
353: 'gazelle',
354: 'Arabian camel, dromedary, Camelus dromedarius',
355: 'llama',
356: 'weasel',
357: 'mink',
358: 'polecat, fitch, foulmart, foumart, Mustela putorius',
359: 'black-footed ferret, ferret, Mustela nigripes',
360: 'otter',
361: 'skunk, polecat, wood pussy',
362: 'badger',
363: 'armadillo',
364: 'three-toed sloth, ai, Bradypus tridactylus',
365: 'orangutan, orang, orangutang, Pongo pygmaeus',
366: 'gorilla, Gorilla gorilla',
367: 'chimpanzee, chimp, Pan troglodytes',
368: 'gibbon, Hylobates lar',
369: 'siamang, Hylobates syndactylus, Symphalangus syndactylus',
370: 'guenon, guenon monkey',
371: 'patas, hussar monkey, Erythrocebus patas',
372: 'baboon',
373: 'macaque',
374: 'langur',
375: 'colobus, colobus monkey',
376: 'proboscis monkey, Nasalis larvatus',
377: 'marmoset',
378: 'capuchin, ringtail, Cebus capucinus',
379: 'howler monkey, howler',
380: 'titi, titi monkey',
381: 'spider monkey, Ateles geoffroyi',
382: 'squirrel monkey, Saimiri sciureus',
383: 'Madagascar cat, ring-tailed lemur, Lemur catta',
384: 'indri, indris, Indri indri, Indri brevicaudatus',
385: 'Indian elephant, Elephas maximus',
386: 'African elephant, Loxodonta africana',
387: 'lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens',
388: 'giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca',
389: 'barracouta, snoek',
390: 'eel',
391: 'coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch',
392: 'rock beauty, Holocanthus tricolor',
393: 'anemone fish',
394: 'sturgeon',
395: 'gar, garfish, garpike, billfish, Lepisosteus osseus',
396: 'lionfish',
397: 'puffer, pufferfish, blowfish, globefish',
398: 'abacus',
399: 'abaya',
400: "academic gown, academic robe, judge's robe",
401: 'accordion, piano accordion, squeeze box',
402: 'acoustic guitar',
403: 'aircraft carrier, carrier, flattop, attack aircraft carrier',
404: 'airliner',
405: 'airship, dirigible',
406: 'altar',
407: 'ambulance',
408: 'amphibian, amphibious vehicle',
409: 'analog clock',
410: 'apiary, bee house',
411: 'apron',
412: 'ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin',
413: 'assault rifle, assault gun',
414: 'backpack, back pack, knapsack, packsack, rucksack, haversack',
415: 'bakery, bakeshop, bakehouse',
416: 'balance beam, beam',
417: 'balloon',
418: 'ballpoint, ballpoint pen, ballpen, Biro',
419: 'Band Aid',
420: 'banjo',
421: 'bannister, banister, balustrade, balusters, handrail',
422: 'barbell',
423: 'barber chair',
424: 'barbershop',
425: 'barn',
426: 'barometer',
427: 'barrel, cask',
428: 'barrow, garden cart, lawn cart, wheelbarrow',
429: 'baseball',
430: 'basketball',
431: 'bassinet',
432: 'bassoon',
433: 'bathing cap, swimming cap',
434: 'bath towel',
435: 'bathtub, bathing tub, bath, tub',
436: 'beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon',
437: 'beacon, lighthouse, beacon light, pharos',
438: 'beaker',
439: 'bearskin, busby, shako',
440: 'beer bottle',
441: 'beer glass',
442: 'bell cote, bell cot',
443: 'bib',
444: 'bicycle-built-for-two, tandem bicycle, tandem',
445: 'bikini, two-piece',
446: 'binder, ring-binder',
447: 'binoculars, field glasses, opera glasses',
448: 'birdhouse',
449: 'boathouse',
450: 'bobsled, bobsleigh, bob',
451: 'bolo tie, bolo, bola tie, bola',
452: 'bonnet, poke bonnet',
453: 'bookcase',
454: 'bookshop, bookstore, bookstall',
455: 'bottlecap',
456: 'bow',
457: 'bow tie, bow-tie, bowtie',
458: 'brass, memorial tablet, plaque',
459: 'brassiere, bra, bandeau',
460: 'breakwater, groin, groyne, mole, bulwark, seawall, jetty',
461: 'breastplate, aegis, egis',
462: 'broom',
463: 'bucket, pail',
464: 'buckle',
465: 'bulletproof vest',
466: 'bullet train, bullet',
467: 'butcher shop, meat market',
468: 'cab, hack, taxi, taxicab',
469: 'caldron, cauldron',
470: 'candle, taper, wax light',
471: 'cannon',
472: 'canoe',
473: 'can opener, tin opener',
474: 'cardigan',
475: 'car mirror',
476: 'carousel, carrousel, merry-go-round, roundabout, whirligig',
477: "carpenter's kit, tool kit",
478: 'carton',
479: 'car wheel',
480: 'cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM',
481: 'cassette',
482: 'cassette player',
483: 'castle',
484: 'catamaran',
485: 'CD player',
486: 'cello, violoncello',
487: 'cellular telephone, cellular phone, cellphone, cell, mobile phone',
488: 'chain',
489: 'chainlink fence',
490: 'chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour',
491: 'chain saw, chainsaw',
492: 'chest',
493: 'chiffonier, commode',
494: 'chime, bell, gong',
495: 'china cabinet, china closet',
496: 'Christmas stocking',
497: 'church, church building',
498: 'cinema, movie theater, movie theatre, movie house, picture palace',
499: 'cleaver, meat cleaver, chopper',
500: 'cliff dwelling',
501: 'cloak',
502: 'clog, geta, patten, sabot',
503: 'cocktail shaker',
504: 'coffee mug',
505: 'coffeepot',
506: 'coil, spiral, volute, whorl, helix',
507: 'combination lock',
508: 'computer keyboard, keypad',
509: 'confectionery, confectionary, candy store',
510: 'container ship, containership, container vessel',
511: 'convertible',
512: 'corkscrew, bottle screw',
513: 'cornet, horn, trumpet, trump',
514: 'cowboy boot',
515: 'cowboy hat, ten-gallon hat',
516: 'cradle',
517: 'crane',
518: 'crash helmet',
519: 'crate',
520: 'crib, cot',
521: 'Crock Pot',
522: 'croquet ball',
523: 'crutch',
524: 'cuirass',
525: 'dam, dike, dyke',
526: 'desk',
527: 'desktop computer',
528: 'dial telephone, dial phone',
529: 'diaper, nappy, napkin',
530: 'digital clock',
531: 'digital watch',
532: 'dining table, board',
533: 'dishrag, dishcloth',
534: 'dishwasher, dish washer, dishwashing machine',
535: 'disk brake, disc brake',
536: 'dock, dockage, docking facility',
537: 'dogsled, dog sled, dog sleigh',
538: 'dome',
539: 'doormat, welcome mat',
540: 'drilling platform, offshore rig',
541: 'drum, membranophone, tympan',
542: 'drumstick',
543: 'dumbbell',
544: 'Dutch oven',
545: 'electric fan, blower',
546: 'electric guitar',
547: 'electric locomotive',
548: 'entertainment center',
549: 'envelope',
550: 'espresso maker',
551: 'face powder',
552: 'feather boa, boa',
553: 'file, file cabinet, filing cabinet',
554: 'fireboat',
555: 'fire engine, fire truck',
556: 'fire screen, fireguard',
557: 'flagpole, flagstaff',
558: 'flute, transverse flute',
559: 'folding chair',
560: 'football helmet',
561: 'forklift',
562: 'fountain',
563: 'fountain pen',
564: 'four-poster',
565: 'freight car',
566: 'French horn, horn',
567: 'frying pan, frypan, skillet',
568: 'fur coat',
569: 'garbage truck, dustcart',
570: 'gasmask, respirator, gas helmet',
571: 'gas pump, gasoline pump, petrol pump, island dispenser',
572: 'goblet',
573: 'go-kart',
574: 'golf ball',
575: 'golfcart, golf cart',
576: 'gondola',
577: 'gong, tam-tam',
578: 'gown',
579: 'grand piano, grand',
580: 'greenhouse, nursery, glasshouse',
581: 'grille, radiator grille',
582: 'grocery store, grocery, food market, market',
583: 'guillotine',
584: 'hair slide',
585: 'hair spray',
586: 'half track',
587: 'hammer',
588: 'hamper',
589: 'hand blower, blow dryer, blow drier, hair dryer, hair drier',
590: 'hand-held computer, hand-held microcomputer',
591: 'handkerchief, hankie, hanky, hankey',
592: 'hard disc, hard disk, fixed disk',
593: 'harmonica, mouth organ, harp, mouth harp',
594: 'harp',
595: 'harvester, reaper',
596: 'hatchet',
597: 'holster',
598: 'home theater, home theatre',
599: 'honeycomb',
600: 'hook, claw',
601: 'hoopskirt, crinoline',
602: 'horizontal bar, high bar',
603: 'horse cart, horse-cart',
604: 'hourglass',
605: 'iPod',
606: 'iron, smoothing iron',
607: "jack-o'-lantern",
608: 'jean, blue jean, denim',
609: 'jeep, landrover',
610: 'jersey, T-shirt, tee shirt',
611: 'jigsaw puzzle',
612: 'jinrikisha, ricksha, rickshaw',
613: 'joystick',
614: 'kimono',
615: 'knee pad',
616: 'knot',
617: 'lab coat, laboratory coat',
618: 'ladle',
619: 'lampshade, lamp shade',
620: 'laptop, laptop computer',
621: 'lawn mower, mower',
622: 'lens cap, lens cover',
623: 'letter opener, paper knife, paperknife',
624: 'library',
625: 'lifeboat',
626: 'lighter, light, igniter, ignitor',
627: 'limousine, limo',
628: 'liner, ocean liner',
629: 'lipstick, lip rouge',
630: 'Loafer',
631: 'lotion',
632: 'loudspeaker, speaker, speaker unit, loudspeaker system, speaker system',
633: "loupe, jeweler's loupe",
634: 'lumbermill, sawmill',
635: 'magnetic compass',
636: 'mailbag, postbag',
637: 'mailbox, letter box',
638: 'maillot',
639: 'maillot, tank suit',
640: 'manhole cover',
641: 'maraca',
642: 'marimba, xylophone',
643: 'mask',
644: 'matchstick',
645: 'maypole',
646: 'maze, labyrinth',
647: 'measuring cup',
648: 'medicine chest, medicine cabinet',
649: 'megalith, megalithic structure',
650: 'microphone, mike',
651: 'microwave, microwave oven',
652: 'military uniform',
653: 'milk can',
654: 'minibus',
655: 'miniskirt, mini',
656: 'minivan',
657: 'missile',
658: 'mitten',
659: 'mixing bowl',
660: 'mobile home, manufactured home',
661: 'Model T',
662: 'modem',
663: 'monastery',
664: 'monitor',
665: 'moped',
666: 'mortar',
667: 'mortarboard',
668: 'mosque',
669: 'mosquito net',
670: 'motor scooter, scooter',
671: 'mountain bike, all-terrain bike, off-roader',
672: 'mountain tent',
673: 'mouse, computer mouse',
674: 'mousetrap',
675: 'moving van',
676: 'muzzle',
677: 'nail',
678: 'neck brace',
679: 'necklace',
680: 'nipple',
681: 'notebook, notebook computer',
682: 'obelisk',
683: 'oboe, hautboy, hautbois',
684: 'ocarina, sweet potato',
685: 'odometer, hodometer, mileometer, milometer',
686: 'oil filter',
687: 'organ, pipe organ',
688: 'oscilloscope, scope, cathode-ray oscilloscope, CRO',
689: 'overskirt',
690: 'oxcart',
691: 'oxygen mask',
692: 'packet',
693: 'paddle, boat paddle',
694: 'paddlewheel, paddle wheel',
695: 'padlock',
696: 'paintbrush',
697: "pajama, pyjama, pj's, jammies",
698: 'palace',
699: 'panpipe, pandean pipe, syrinx',
700: 'paper towel',
701: 'parachute, chute',
702: 'parallel bars, bars',
703: 'park bench',
704: 'parking meter',
705: 'passenger car, coach, carriage',
706: 'patio, terrace',
707: 'pay-phone, pay-station',
708: 'pedestal, plinth, footstall',
709: 'pencil box, pencil case',
710: 'pencil sharpener',
711: 'perfume, essence',
712: 'Petri dish',
713: 'photocopier',
714: 'pick, plectrum, plectron',
715: 'pickelhaube',
716: 'picket fence, paling',
717: 'pickup, pickup truck',
718: 'pier',
719: 'piggy bank, penny bank',
720: 'pill bottle',
721: 'pillow',
722: 'ping-pong ball',
723: 'pinwheel',
724: 'pirate, pirate ship',
725: 'pitcher, ewer',
726: "plane, carpenter's plane, woodworking plane",
727: 'planetarium',
728: 'plastic bag',
729: 'plate rack',
730: 'plow, plough',
731: "plunger, plumber's helper",
732: 'Polaroid camera, Polaroid Land camera',
733: 'pole',
734: 'police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria',
735: 'poncho',
736: 'pool table, billiard table, snooker table',
737: 'pop bottle, soda bottle',
738: 'pot, flowerpot',
739: "potter's wheel",
740: 'power drill',
741: 'prayer rug, prayer mat',
742: 'printer',
743: 'prison, prison house',
744: 'projectile, missile',
745: 'projector',
746: 'puck, hockey puck',
747: 'punching bag, punch bag, punching ball, punchball',
748: 'purse',
749: 'quill, quill pen',
750: 'quilt, comforter, comfort, puff',
751: 'racer, race car, racing car',
752: 'racket, racquet',
753: 'radiator',
754: 'radio, wireless',
755: 'radio telescope, radio reflector',
756: 'rain barrel',
757: 'recreational vehicle, RV, R.V.',
758: 'reel',
759: 'reflex camera',
760: 'refrigerator, icebox',
761: 'remote control, remote',
762: 'restaurant, eating house, eating place, eatery',
763: 'revolver, six-gun, six-shooter',
764: 'rifle',
765: 'rocking chair, rocker',
766: 'rotisserie',
767: 'rubber eraser, rubber, pencil eraser',
768: 'rugby ball',
769: 'rule, ruler',
770: 'running shoe',
771: 'safe',
772: 'safety pin',
773: 'saltshaker, salt shaker',
774: 'sandal',
775: 'sarong',
776: 'sax, saxophone',
777: 'scabbard',
778: 'scale, weighing machine',
779: 'school bus',
780: 'schooner',
781: 'scoreboard',
782: 'screen, CRT screen',
783: 'screw',
784: 'screwdriver',
785: 'seat belt, seatbelt',
786: 'sewing machine',
787: 'shield, buckler',
788: 'shoe shop, shoe-shop, shoe store',
789: 'shoji',
790: 'shopping basket',
791: 'shopping cart',
792: 'shovel',
793: 'shower cap',
794: 'shower curtain',
795: 'ski',
796: 'ski mask',
797: 'sleeping bag',
798: 'slide rule, slipstick',
799: 'sliding door',
800: 'slot, one-armed bandit',
801: 'snorkel',
802: 'snowmobile',
803: 'snowplow, snowplough',
804: 'soap dispenser',
805: 'soccer ball',
806: 'sock',
807: 'solar dish, solar collector, solar furnace',
808: 'sombrero',
809: 'soup bowl',
810: 'space bar',
811: 'space heater',
812: 'space shuttle',
813: 'spatula',
814: 'speedboat',
815: "spider web, spider's web",
816: 'spindle',
817: 'sports car, sport car',
818: 'spotlight, spot',
819: 'stage',
820: 'steam locomotive',
821: 'steel arch bridge',
822: 'steel drum',
823: 'stethoscope',
824: 'stole',
825: 'stone wall',
826: 'stopwatch, stop watch',
827: 'stove',
828: 'strainer',
829: 'streetcar, tram, tramcar, trolley, trolley car',
830: 'stretcher',
831: 'studio couch, day bed',
832: 'stupa, tope',
833: 'submarine, pigboat, sub, U-boat',
834: 'suit, suit of clothes',
835: 'sundial',
836: 'sunglass',
837: 'sunglasses, dark glasses, shades',
838: 'sunscreen, sunblock, sun blocker',
839: 'suspension bridge',
840: 'swab, swob, mop',
841: 'sweatshirt',
842: 'swimming trunks, bathing trunks',
843: 'swing',
844: 'switch, electric switch, electrical switch',
845: 'syringe',
846: 'table lamp',
847: 'tank, army tank, armored combat vehicle, armoured combat vehicle',
848: 'tape player',
849: 'teapot',
850: 'teddy, teddy bear',
851: 'television, television system',
852: 'tennis ball',
853: 'thatch, thatched roof',
854: 'theater curtain, theatre curtain',
855: 'thimble',
856: 'thresher, thrasher, threshing machine',
857: 'throne',
858: 'tile roof',
859: 'toaster',
860: 'tobacco shop, tobacconist shop, tobacconist',
861: 'toilet seat',
862: 'torch',
863: 'totem pole',
864: 'tow truck, tow car, wrecker',
865: 'toyshop',
866: 'tractor',
867: 'trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi',
868: 'tray',
869: 'trench coat',
870: 'tricycle, trike, velocipede',
871: 'trimaran',
872: 'tripod',
873: 'triumphal arch',
874: 'trolleybus, trolley coach, trackless trolley',
875: 'trombone',
876: 'tub, vat',
877: 'turnstile',
878: 'typewriter keyboard',
879: 'umbrella',
880: 'unicycle, monocycle',
881: 'upright, upright piano',
882: 'vacuum, vacuum cleaner',
883: 'vase',
884: 'vault',
885: 'velvet',
886: 'vending machine',
887: 'vestment',
888: 'viaduct',
889: 'violin, fiddle',
890: 'volleyball',
891: 'waffle iron',
892: 'wall clock',
893: 'wallet, billfold, notecase, pocketbook',
894: 'wardrobe, closet, press',
895: 'warplane, military plane',
896: 'washbasin, handbasin, washbowl, lavabo, wash-hand basin',
897: 'washer, automatic washer, washing machine',
898: 'water bottle',
899: 'water jug',
900: 'water tower',
901: 'whiskey jug',
902: 'whistle',
903: 'wig',
904: 'window screen',
905: 'window shade',
906: 'Windsor tie',
907: 'wine bottle',
908: 'wing',
909: 'wok',
910: 'wooden spoon',
911: 'wool, woolen, woollen',
912: 'worm fence, snake fence, snake-rail fence, Virginia fence',
913: 'wreck',
914: 'yawl',
915: 'yurt',
916: 'web site, website, internet site, site',
917: 'comic book',
918: 'crossword puzzle, crossword',
919: 'street sign',
920: 'traffic light, traffic signal, stoplight',
921: 'book jacket, dust cover, dust jacket, dust wrapper',
922: 'menu',
923: 'plate',
924: 'guacamole',
925: 'consomme',
926: 'hot pot, hotpot',
927: 'trifle',
928: 'ice cream, icecream',
929: 'ice lolly, lolly, lollipop, popsicle',
930: 'French loaf',
931: 'bagel, beigel',
932: 'pretzel',
933: 'cheeseburger',
934: 'hotdog, hot dog, red hot',
935: 'mashed potato',
936: 'head cabbage',
937: 'broccoli',
938: 'cauliflower',
939: 'zucchini, courgette',
940: 'spaghetti squash',
941: 'acorn squash',
942: 'butternut squash',
943: 'cucumber, cuke',
944: 'artichoke, globe artichoke',
945: 'bell pepper',
946: 'cardoon',
947: 'mushroom',
948: 'Granny Smith',
949: 'strawberry',
950: 'orange',
951: 'lemon',
952: 'fig',
953: 'pineapple, ananas',
954: 'banana',
955: 'jackfruit, jak, jack',
956: 'custard apple',
957: 'pomegranate',
958: 'hay',
959: 'carbonara',
960: 'chocolate sauce, chocolate syrup',
961: 'dough',
962: 'meat loaf, meatloaf',
963: 'pizza, pizza pie',
964: 'potpie',
965: 'burrito',
966: 'red wine',
967: 'espresso',
968: 'cup',
969: 'eggnog',
970: 'alp',
971: 'bubble',
972: 'cliff, drop, drop-off',
973: 'coral reef',
974: 'geyser',
975: 'lakeside, lakeshore',
976: 'promontory, headland, head, foreland',
977: 'sandbar, sand bar',
978: 'seashore, coast, seacoast, sea-coast',
979: 'valley, vale',
980: 'volcano',
981: 'ballplayer, baseball player',
982: 'groom, bridegroom',
983: 'scuba diver',
984: 'rapeseed',
985: 'daisy',
986: "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum",
987: 'corn',
988: 'acorn',
989: 'hip, rose hip, rosehip',
990: 'buckeye, horse chestnut, conker',
991: 'coral fungus',
992: 'agaric',
993: 'gyromitra',
994: 'stinkhorn, carrion fungus',
995: 'earthstar',
996: 'hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa',
997: 'bolete',
998: 'ear, spike, capitulum',
999: 'toilet tissue, toilet paper, bathroom tissue'}
================================================
FILE: Chapter02/lenet.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting torch==2.2\n",
" Downloading torch-2.2.0-cp310-cp310-manylinux1_x86_64.whl.metadata (25 kB)\n",
"Requirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.13.1)\n",
"Collecting typing-extensions>=4.8.0 (from torch==2.2)\n",
" Downloading typing_extensions-4.9.0-py3-none-any.whl.metadata (3.0 kB)\n",
"Requirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (1.12)\n",
"Requirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.2.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (2023.12.2)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (8.9.2.26)\n",
"Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.3.1)\n",
"Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (11.0.2.54)\n",
"Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (10.3.2.106)\n",
"Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (11.4.5.107)\n",
"Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.0.106)\n",
"Collecting nvidia-nccl-cu12==2.19.3 (from torch==2.2)\n",
" Downloading nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl.metadata (1.8 kB)\n",
"Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2) (12.1.105)\n",
"Collecting triton==2.2.0 (from torch==2.2)\n",
" Downloading triton-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.4 kB)\n",
"Requirement already satisfied: nvidia-nvjitlink-cu12 in /opt/conda/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2) (12.3.101)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch==2.2) (2.1.3)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/conda/lib/python3.10/site-packages (from sympy->torch==2.2) (1.3.0)\n",
"Downloading torch-2.2.0-cp310-cp310-manylinux1_x86_64.whl (755.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m755.5/755.5 MB\u001b[0m \u001b[31m3.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hDownloading nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl (166.0 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m166.0/166.0 MB\u001b[0m \u001b[31m14.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hDownloading triton-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (167.9 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m167.9/167.9 MB\u001b[0m \u001b[31m13.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hDownloading typing_extensions-4.9.0-py3-none-any.whl (32 kB)\n",
"Installing collected packages: typing-extensions, triton, nvidia-nccl-cu12, torch\n",
" Attempting uninstall: typing-extensions\n",
" Found existing installation: typing_extensions 4.3.0\n",
" Uninstalling typing_extensions-4.3.0:\n",
" Successfully uninstalled typing_extensions-4.3.0\n",
" Attempting uninstall: triton\n",
" Found existing installation: triton 2.1.0\n",
" Uninstalling triton-2.1.0:\n",
" Successfully uninstalled triton-2.1.0\n",
" Attempting uninstall: nvidia-nccl-cu12\n",
" Found existing installation: nvidia-nccl-cu12 2.18.1\n",
" Uninstalling nvidia-nccl-cu12-2.18.1:\n",
" Successfully uninstalled nvidia-nccl-cu12-2.18.1\n",
" Attempting uninstall: torch\n",
" Found existing installation: torch 2.1.2\n",
" Uninstalling torch-2.1.2:\n",
" Successfully uninstalled torch-2.1.2\n",
"\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
"torchaudio 2.1.2 requires torch==2.1.2, but you have torch 2.2.0 which is incompatible.\n",
"torchvision 0.16.2 requires torch==2.1.2, but you have torch 2.2.0 which is incompatible.\n",
"ydata-profiling 4.6.0 requires numpy<1.26,>=1.16.0, but you have numpy 1.26.2 which is incompatible.\n",
"minimagen 0.0.9 requires attrs==21.4.0, but you have attrs 23.2.0 which is incompatible.\n",
"minimagen 0.0.9 requires filelock==3.7.1, but you have filelock 3.13.1 which is incompatible.\n",
"minimagen 0.0.9 requires fsspec==2022.5.0, but you have fsspec 2023.12.2 which is incompatible.\n",
"minimagen 0.0.9 requires huggingface-hub==0.8.1, but you have huggingface-hub 0.20.1 which is incompatible.\n",
"minimagen 0.0.9 requires numpy==1.23.1, but you have numpy 1.26.2 which is incompatible.\n",
"minimagen 0.0.9 requires Pillow==9.2.0, but you have pillow 10.2.0 which is incompatible.\n",
"minimagen 0.0.9 requires tokenizers==0.12.1, but you have tokenizers 0.15.0 which is incompatible.\n",
"minimagen 0.0.9 requires torch==1.12.0, but you have torch 2.2.0 which is incompatible.\n",
"minimagen 0.0.9 requires torchvision==0.13.0, but you have torchvision 0.16.2 which is incompatible.\n",
"minimagen 0.0.9 requires tqdm==4.64.0, but you have tqdm 4.66.1 which is incompatible.\n",
"minimagen 0.0.9 requires transformers==4.20.1, but you have transformers 4.36.2 which is incompatible.\n",
"minimagen 0.0.9 requires typing_extensions==4.3.0, but you have typing-extensions 4.9.0 which is incompatible.\u001b[0m\u001b[31m\n",
"\u001b[0mSuccessfully installed nvidia-nccl-cu12-2.19.3 torch-2.2.0 triton-2.2.0 typing-extensions-4.9.0\n",
"Collecting torchvision==0.17\n",
" Downloading torchvision-0.17.0-cp310-cp310-manylinux1_x86_64.whl.metadata (6.6 kB)\n",
"Requirement already satisfied: numpy in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (1.26.2)\n",
"Requirement already satisfied: requests in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (2.28.1)\n",
"Requirement already satisfied: torch==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /opt/conda/lib/python3.10/site-packages (from torchvision==0.17) (10.2.0)\n",
"Requirement already satisfied: filelock in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.13.1)\n",
"Requirement already satisfied: typing-extensions>=4.8.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (4.9.0)\n",
"Requirement already satisfied: sympy in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (1.12)\n",
"Requirement already satisfied: networkx in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.2.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (3.1.2)\n",
"Requirement already satisfied: fsspec in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2023.12.2)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (8.9.2.26)\n",
"Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.3.1)\n",
"Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (11.0.2.54)\n",
"Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (10.3.2.106)\n",
"Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (11.4.5.107)\n",
"Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.0.106)\n",
"Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2.19.3)\n",
"Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (12.1.105)\n",
"Requirement already satisfied: triton==2.2.0 in /opt/conda/lib/python3.10/site-packages (from torch==2.2.0->torchvision==0.17) (2.2.0)\n",
"Requirement already satisfied: nvidia-nvjitlink-cu12 in /opt/conda/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2.0->torchvision==0.17) (12.3.101)\n",
"Requirement already satisfied: charset-normalizer<3,>=2 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (2.1.0)\n",
"Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (3.3)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (1.26.10)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.10/site-packages (from requests->torchvision==0.17) (2022.6.15)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.10/site-packages (from jinja2->torch==2.2.0->torchvision==0.17) (2.1.3)\n",
"Requirement already satisfied: mpmath>=0.19 in /opt/conda/lib/python3.10/site-packages (from sympy->torch==2.2.0->torchvision==0.17) (1.3.0)\n",
"Downloading torchvision-0.17.0-cp310-cp310-manylinux1_x86_64.whl (6.9 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.9/6.9 MB\u001b[0m \u001b[31m95.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hInstalling collected packages: torchvision\n",
" Attempting uninstall: torchvision\n",
" Found existing installation: torchvision 0.16.2\n",
" Uninstalling torchvision-0.16.2:\n",
" Successfully uninstalled torchvision-0.16.2\n",
"\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
"minimagen 0.0.9 requires attrs==21.4.0, but you have attrs 23.2.0 which is incompatible.\n",
"minimagen 0.0.9 requires filelock==3.7.1, but you have filelock 3.13.1 which is incompatible.\n",
"minimagen 0.0.9 requires fsspec==2022.5.0, but you have fsspec 2023.12.2 which is incompatible.\n",
"minimagen 0.0.9 requires huggingface-hub==0.8.1, but you have huggingface-hub 0.20.1 which is incompatible.\n",
"minimagen 0.0.9 requires numpy==1.23.1, but you have numpy 1.26.2 which is incompatible.\n",
"minimagen 0.0.9 requires Pillow==9.2.0, but you have pillow 10.2.0 which is incompatible.\n",
"minimagen 0.0.9 requires tokenizers==0.12.1, but you have tokenizers 0.15.0 which is incompatible.\n",
"minimagen 0.0.9 requires torch==1.12.0, but you have torch 2.2.0 which is incompatible.\n",
"minimagen 0.0.9 requires torchvision==0.13.0, but you have torchvision 0.17.0 which is incompatible.\n",
"minimagen 0.0.9 requires tqdm==4.64.0, but you have tqdm 4.66.1 which is incompatible.\n",
"minimagen 0.0.9 requires transformers==4.20.1, but you have transformers 4.36.2 which is incompatible.\n",
"minimagen 0.0.9 requires typing_extensions==4.3.0, but you have typing-extensions 4.9.0 which is incompatible.\u001b[0m\u001b[31m\n",
"\u001b[0mSuccessfully installed torchvision-0.17.0\n",
"Collecting nltk==3.7\n",
" Downloading nltk-3.7-py3-none-any.whl (1.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.5/1.5 MB\u001b[0m \u001b[31m28.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: click in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (8.1.7)\n",
"Requirement already satisfied: joblib in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (1.3.2)\n",
"Requirement already satisfied: regex>=2021.8.3 in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (2022.7.9)\n",
"Requirement already satisfied: tqdm in /opt/conda/lib/python3.10/site-packages (from nltk==3.7) (4.66.1)\n",
"Installing collected packages: nltk\n",
"Successfully installed nltk-3.7\n"
]
}
],
"source": [
"!pip install torch==2.2\n",
"!pip install torchvision==0.17\n",
"!pip install nltk==3.7"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.10/site-packages/transformers/utils/generic.py:441: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.\n",
" _torch_pytree._register_pytree_node(\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
" \n",
"import torch\n",
"import torchvision\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torchvision.transforms as transforms\n",
"\n",
"torch.use_deterministic_algorithms(True)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LeNet(\n",
" (cn1): Conv2d(3, 6, kernel_size=(5, 5), stride=(1, 1))\n",
" (cn2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))\n",
" (fc1): Linear(in_features=400, out_features=120, bias=True)\n",
" (fc2): Linear(in_features=120, out_features=84, bias=True)\n",
" (fc3): Linear(in_features=84, out_features=10, bias=True)\n",
")\n"
]
}
],
"source": [
"class LeNet(nn.Module):\n",
"\n",
" def __init__(self):\n",
" super(LeNet, self).__init__()\n",
" # 3 input image channel, 6 output feature maps and 5x5 conv kernel\n",
" self.cn1 = nn.Conv2d(3, 6, 5)\n",
" # 6 input image channel, 16 output feature maps and 5x5 conv kernel\n",
" self.cn2 = nn.Conv2d(6, 16, 5)\n",
" # fully connected layers of size 120, 84 and 10\n",
" self.fc1 = nn.Linear(16 * 5 * 5, 120) # 5*5 is the spatial dimension at this layer\n",
" self.fc2 = nn.Linear(120, 84)\n",
" self.fc3 = nn.Linear(84, 10)\n",
"\n",
" def forward(self, x):\n",
" # Convolution with 5x5 kernel\n",
" x = F.relu(self.cn1(x))\n",
" # Max pooling over a (2, 2) window\n",
" x = F.max_pool2d(x, (2, 2))\n",
" # Convolution with 5x5 kernel\n",
" x = F.relu(self.cn2(x))\n",
" # Max pooling over a (2, 2) window\n",
" x = F.max_pool2d(x, (2, 2))\n",
" # Flatten spatial and depth dimensions into a single vector\n",
" x = x.view(-1, self.flattened_features(x))\n",
" # Fully connected operations\n",
" x = F.relu(self.fc1(x))\n",
" x = F.relu(self.fc2(x))\n",
" x = self.fc3(x)\n",
" return x\n",
"\n",
" def flattened_features(self, x):\n",
" # all except the first (batch) dimension\n",
" size = x.size()[1:] \n",
" num_feats = 1\n",
" for s in size:\n",
" num_feats *= s\n",
" return num_feats\n",
"\n",
"\n",
"lenet = LeNet()\n",
"print(lenet)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def train(net, trainloader, optim, epoch):\n",
" # initialize loss\n",
" loss_total = 0.0\n",
" \n",
" for i, data in enumerate(trainloader, 0):\n",
" # get the inputs; data is a list of [inputs, labels]\n",
" # ip refers to the input images, and ground_truth refers to the output classes the images belong to\n",
" ip, ground_truth = data\n",
"\n",
" # zero the parameter gradients\n",
" optim.zero_grad()\n",
"\n",
" # forward pass + backward pass + optimization step\n",
" op = net(ip)\n",
" loss = nn.CrossEntropyLoss()(op, ground_truth)\n",
" loss.backward()\n",
" optim.step()\n",
"\n",
" # update loss\n",
" loss_total += loss.item()\n",
" \n",
" # print loss statistics\n",
" if (i+1) % 1000 == 0: # print at the interval of 1000 mini-batches\n",
" print('[Epoch number : %d, Mini-batches: %5d] loss: %.3f' %\n",
" (epoch + 1, i + 1, loss_total / 200))\n",
" loss_total = 0.0"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def test(net, testloader):\n",
" success = 0\n",
" counter = 0\n",
" with torch.no_grad():\n",
" for data in testloader:\n",
" im, ground_truth = data\n",
" op = net(im)\n",
" _, pred = torch.max(op.data, 1)\n",
" counter += ground_truth.size(0)\n",
" success += (pred == ground_truth).sum().item()\n",
"\n",
" print('LeNet accuracy on 10000 images from test dataset: %d %%' % (\n",
" 100 * success / counter))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Files already downloaded and verified\n",
"Files already downloaded and verified\n"
]
}
],
"source": [
"# The mean and std are kept as 0.5 for normalizing pixel values as the pixel values are originally in the range 0 to 1\n",
"train_transform = transforms.Compose([transforms.RandomHorizontalFlip(),\n",
" transforms.RandomCrop(32, 4),\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
"\n",
"trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=train_transform)\n",
"trainloader = torch.utils.data.DataLoader(trainset, batch_size=8, shuffle=True)\n",
"\n",
"\n",
"test_transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
"\n",
"testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=test_transform)\n",
"testloader = torch.utils.data.DataLoader(testset, batch_size=10000, shuffle=False)\n",
"\n",
"\n",
"# ordering is important\n",
"classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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7YM/rofTFi+//LIhIvPCCy/Uj/nZz35mHMcxb7/9dsvq3goONTlDnn/+eUNEZvv27caYY6t9DoejzuxSqVRo06ZNtHLlyvpnruvSypUracOGDbNYs9lndHSUiIi6urqIiGjTpk1UrVZFWy1btoz6+/uPqbZavXo1feYznxHtQKTt8+///u907rnn0u/93u/RggUL6JxzzqF//Md/rJdv27aNBgcHRfvkcjlasWLFMdE+H/7wh2n9+vX02muvERHRL3/5S3rmmWfo4osvJiJtH87htMWGDRuoo6ODzj333PoxK1euJNd16bnnnmt5nWeb0dFRchyHOjo6iEjbBznqstru37+foiiinp4e8XlPTw+9+uqrs1Sr2SeOY7r++uvpwgsvpDPOOIOIiAYHBykIgnrn/g09PT00ODg4C7VsPQ888AD993//N73wwgsNZcd6+7z55pt0991309q1a+lrX/savfDCC/Snf/qnFAQBrVq1qt4Ghxprx0L73HTTTZTP52nZsmXkeR5FUUS33XYbXXXVVUREx3z7cA6nLQYHB2nBggWi3Pd96urqOubaq1Qq0Y033khXXnllPbOtto/kqJt8KIdm9erVtGXLFnrmmWdmuypHDTt37qTrrruOHn/8cUomk7NdnaOOOI7p3HPPpb/+678mIqJzzjmHtmzZQt/97ndp1apVs1y72eff/u3f6Pvf/z7df//9dPrpp9PmzZvp+uuvp76+Pm0f5YipVqv0+7//+2SMobvvvnu2q3PUctSZXebNm0ee5zVEJAwNDVFvb+8s1Wp2WbNmDT3yyCP05JNP0qJFi+qf9/b2UqVSoZGREXH8sdJWmzZtor1799KHPvQh8n2ffN+np556ir797W+T7/vU09NzTLfPwoUL6bTTThOfnXrqqbRjxw4ionobHKtj7c/+7M/opptuos9//vN05pln0h/+4R/SDTfcQOvWrSMibR/O4bRFb28v7d27V5TXajUaHh4+ZtrrNxOP7du30+OPP15f9SDS9kGOuslHEAS0fPlyWr9+ff2zOI5p/fr1NDAwMIs1az3GGFqzZg099NBD9MQTT9DSpUtF+fLlyymRSIi22rp1K+3YseOYaKtPfOIT9NJLL9HmzZvrf+eeey5dddVV9e1juX0uvPDChtDs1157jY4//ngiIlq6dCn19vaK9snn8/Tcc88dE+1TKBTIdeUr0PM8iuOYiLR9OIfTFgMDAzQyMkKbNm2qH/PEE09QHMe0YsWKlte51fxm4vH666/Tf/7nf1J3d7coP9bbp4HZ9ng9FA888IAJw9Dcd9995uWXXzZf/vKXTUdHhxkcHJztqrWUP/7jPza5XM78/Oc/N3v27Kn/FQqF+jHXXnut6e/vN0888YTZuHGjGRgYMAMDA7NY69mFR7sYc2y3z/PPP2983ze33Xabef311833v/9909bWZv7lX/6lfsztt99uOjo6zI9//GPzq1/9ylx66aVzNpQUWbVqlTnuuOPqobY/+tGPzLx588xXv/rV+jHHUvuMjY2ZF1980bz44ouGiMzf/d3fmRdffLEerXE4bfHpT3/anHPOOea5554zzzzzjDn55JPnTChps/apVCrms5/9rFm0aJHZvHmzeF+Xy+X6OeZy+0yVo3LyYYwxf//3f2/6+/tNEATm/PPPN88+++xsV6nlENEh/+699976McVi0fzJn/yJ6ezsNG1tbeZ3f/d3zZ49e2av0rMMTj6O9fb5j//4D3PGGWeYMAzNsmXLzD/8wz+I8jiOzS233GJ6enpMGIbmE5/4hNm6dess1ba15PN5c91115n+/n6TTCbNCSecYL7+9a+LH4tjqX2efPLJQ75vVq1aZYw5vLY4cOCAufLKK00mkzHZbNZ88YtfNGNjY7NwN9NPs/bZtm3bpO/rJ598sn6Oudw+U8Uxhsn5KYqiKIqizDBHnc+HoiiKoihzG518KIqiKIrSUnTyoSiKoihKS9HJh6IoiqIoLUUnH4qiKIqitBSdfCiKoiiK0lJ08qEoiqIoSkvRyYeiKIqiKC1FJx+KoiiKorQUnXwoiqIoitJSdPKhKIqiKEpL+X/brsH7mMLkEAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" horse || deer || plane || dog\n"
]
}
],
"source": [
"# define a function that displays an image\n",
"def imageshow(image):\n",
" # un-normalize the image\n",
" image = image/2 + 0.5 \n",
" npimage = image.numpy()\n",
" plt.imshow(np.transpose(npimage, (1, 2, 0)))\n",
" plt.show()\n",
"\n",
"\n",
"# sample images from training set\n",
"dataiter = iter(trainloader)\n",
"images, labels = next(dataiter)\n",
"\n",
"# display images in a grid\n",
"num_images = 4\n",
"imageshow(torchvision.utils.make_grid(images[:num_images]))\n",
"# print labels\n",
"print(' '+' || '.join(classes[labels[j]] for j in range(num_images)))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Epoch number : 1, Mini-batches: 1000] loss: 9.887\n",
"[Epoch number : 1, Mini-batches: 2000] loss: 8.766\n",
"[Epoch number : 1, Mini-batches: 3000] loss: 8.350\n",
"[Epoch number : 1, Mini-batches: 4000] loss: 8.136\n",
"[Epoch number : 1, Mini-batches: 5000] loss: 7.806\n",
"[Epoch number : 1, Mini-batches: 6000] loss: 7.584\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 46 %\n",
"\n",
"[Epoch number : 2, Mini-batches: 1000] loss: 7.502\n",
"[Epoch number : 2, Mini-batches: 2000] loss: 7.380\n",
"[Epoch number : 2, Mini-batches: 3000] loss: 7.173\n",
"[Epoch number : 2, Mini-batches: 4000] loss: 7.106\n",
"[Epoch number : 2, Mini-batches: 5000] loss: 7.109\n",
"[Epoch number : 2, Mini-batches: 6000] loss: 7.039\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 51 %\n",
"\n",
"[Epoch number : 3, Mini-batches: 1000] loss: 6.959\n",
"[Epoch number : 3, Mini-batches: 2000] loss: 6.903\n",
"[Epoch number : 3, Mini-batches: 3000] loss: 6.900\n",
"[Epoch number : 3, Mini-batches: 4000] loss: 7.021\n",
"[Epoch number : 3, Mini-batches: 5000] loss: 6.664\n",
"[Epoch number : 3, Mini-batches: 6000] loss: 6.599\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 54 %\n",
"\n",
"[Epoch number : 4, Mini-batches: 1000] loss: 6.680\n",
"[Epoch number : 4, Mini-batches: 2000] loss: 6.588\n",
"[Epoch number : 4, Mini-batches: 3000] loss: 6.650\n",
"[Epoch number : 4, Mini-batches: 4000] loss: 6.549\n",
"[Epoch number : 4, Mini-batches: 5000] loss: 6.576\n",
"[Epoch number : 4, Mini-batches: 6000] loss: 6.487\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 57 %\n",
"\n",
"[Epoch number : 5, Mini-batches: 1000] loss: 6.418\n",
"[Epoch number : 5, Mini-batches: 2000] loss: 6.424\n",
"[Epoch number : 5, Mini-batches: 3000] loss: 6.482\n",
"[Epoch number : 5, Mini-batches: 4000] loss: 6.401\n",
"[Epoch number : 5, Mini-batches: 5000] loss: 6.400\n",
"[Epoch number : 5, Mini-batches: 6000] loss: 6.274\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 58 %\n",
"\n",
"[Epoch number : 6, Mini-batches: 1000] loss: 6.238\n",
"[Epoch number : 6, Mini-batches: 2000] loss: 6.196\n",
"[Epoch number : 6, Mini-batches: 3000] loss: 6.319\n",
"[Epoch number : 6, Mini-batches: 4000] loss: 6.271\n",
"[Epoch number : 6, Mini-batches: 5000] loss: 6.148\n",
"[Epoch number : 6, Mini-batches: 6000] loss: 6.217\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 58 %\n",
"\n",
"[Epoch number : 7, Mini-batches: 1000] loss: 6.156\n",
"[Epoch number : 7, Mini-batches: 2000] loss: 6.053\n",
"[Epoch number : 7, Mini-batches: 3000] loss: 6.147\n",
"[Epoch number : 7, Mini-batches: 4000] loss: 6.060\n",
"[Epoch number : 7, Mini-batches: 5000] loss: 6.067\n",
"[Epoch number : 7, Mini-batches: 6000] loss: 6.200\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 59 %\n",
"\n",
"[Epoch number : 8, Mini-batches: 1000] loss: 5.992\n",
"[Epoch number : 8, Mini-batches: 2000] loss: 6.001\n",
"[Epoch number : 8, Mini-batches: 3000] loss: 6.057\n",
"[Epoch number : 8, Mini-batches: 4000] loss: 5.926\n",
"[Epoch number : 8, Mini-batches: 5000] loss: 6.069\n",
"[Epoch number : 8, Mini-batches: 6000] loss: 6.044\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 61 %\n",
"\n",
"[Epoch number : 9, Mini-batches: 1000] loss: 5.948\n",
"[Epoch number : 9, Mini-batches: 2000] loss: 5.840\n",
"[Epoch number : 9, Mini-batches: 3000] loss: 5.897\n",
"[Epoch number : 9, Mini-batches: 4000] loss: 5.856\n",
"[Epoch number : 9, Mini-batches: 5000] loss: 5.847\n",
"[Epoch number : 9, Mini-batches: 6000] loss: 6.045\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 60 %\n",
"\n",
"[Epoch number : 10, Mini-batches: 1000] loss: 5.873\n",
"[Epoch number : 10, Mini-batches: 2000] loss: 5.963\n",
"[Epoch number : 10, Mini-batches: 3000] loss: 5.907\n",
"[Epoch number : 10, Mini-batches: 4000] loss: 5.846\n",
"[Epoch number : 10, Mini-batches: 5000] loss: 5.864\n",
"[Epoch number : 10, Mini-batches: 6000] loss: 5.741\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 61 %\n",
"\n",
"[Epoch number : 11, Mini-batches: 1000] loss: 5.710\n",
"[Epoch number : 11, Mini-batches: 2000] loss: 5.795\n",
"[Epoch number : 11, Mini-batches: 3000] loss: 5.881\n",
"[Epoch number : 11, Mini-batches: 4000] loss: 5.849\n",
"[Epoch number : 11, Mini-batches: 5000] loss: 5.751\n",
"[Epoch number : 11, Mini-batches: 6000] loss: 5.729\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 63 %\n",
"\n",
"[Epoch number : 12, Mini-batches: 1000] loss: 5.732\n",
"[Epoch number : 12, Mini-batches: 2000] loss: 5.732\n",
"[Epoch number : 12, Mini-batches: 3000] loss: 5.701\n",
"[Epoch number : 12, Mini-batches: 4000] loss: 5.761\n",
"[Epoch number : 12, Mini-batches: 5000] loss: 5.734\n",
"[Epoch number : 12, Mini-batches: 6000] loss: 5.684\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 62 %\n",
"\n",
"[Epoch number : 13, Mini-batches: 1000] loss: 5.674\n",
"[Epoch number : 13, Mini-batches: 2000] loss: 5.703\n",
"[Epoch number : 13, Mini-batches: 3000] loss: 5.653\n",
"[Epoch number : 13, Mini-batches: 4000] loss: 5.652\n",
"[Epoch number : 13, Mini-batches: 5000] loss: 5.700\n",
"[Epoch number : 13, Mini-batches: 6000] loss: 5.794\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 62 %\n",
"\n",
"[Epoch number : 14, Mini-batches: 1000] loss: 5.745\n",
"[Epoch number : 14, Mini-batches: 2000] loss: 5.605\n",
"[Epoch number : 14, Mini-batches: 3000] loss: 5.685\n",
"[Epoch number : 14, Mini-batches: 4000] loss: 5.550\n",
"[Epoch number : 14, Mini-batches: 5000] loss: 5.623\n",
"[Epoch number : 14, Mini-batches: 6000] loss: 5.631\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 61 %\n",
"\n",
"[Epoch number : 15, Mini-batches: 1000] loss: 5.637\n",
"[Epoch number : 15, Mini-batches: 2000] loss: 5.594\n",
"[Epoch number : 15, Mini-batches: 3000] loss: 5.581\n",
"[Epoch number : 15, Mini-batches: 4000] loss: 5.522\n",
"[Epoch number : 15, Mini-batches: 5000] loss: 5.532\n",
"[Epoch number : 15, Mini-batches: 6000] loss: 5.615\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 62 %\n",
"\n",
"[Epoch number : 16, Mini-batches: 1000] loss: 5.627\n",
"[Epoch number : 16, Mini-batches: 2000] loss: 5.543\n",
"[Epoch number : 16, Mini-batches: 3000] loss: 5.557\n",
"[Epoch number : 16, Mini-batches: 4000] loss: 5.572\n",
"[Epoch number : 16, Mini-batches: 5000] loss: 5.535\n",
"[Epoch number : 16, Mini-batches: 6000] loss: 5.603\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 62 %\n",
"\n",
"[Epoch number : 17, Mini-batches: 1000] loss: 5.411\n",
"[Epoch number : 17, Mini-batches: 2000] loss: 5.526\n",
"[Epoch number : 17, Mini-batches: 3000] loss: 5.572\n",
"[Epoch number : 17, Mini-batches: 4000] loss: 5.533\n",
"[Epoch number : 17, Mini-batches: 5000] loss: 5.590\n",
"[Epoch number : 17, Mini-batches: 6000] loss: 5.395\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 64 %\n",
"\n",
"[Epoch number : 18, Mini-batches: 1000] loss: 5.455\n",
"[Epoch number : 18, Mini-batches: 2000] loss: 5.596\n",
"[Epoch number : 18, Mini-batches: 3000] loss: 5.455\n",
"[Epoch number : 18, Mini-batches: 4000] loss: 5.430\n",
"[Epoch number : 18, Mini-batches: 5000] loss: 5.441\n",
"[Epoch number : 18, Mini-batches: 6000] loss: 5.424\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 64 %\n",
"\n",
"[Epoch number : 19, Mini-batches: 1000] loss: 5.441\n",
"[Epoch number : 19, Mini-batches: 2000] loss: 5.513\n",
"[Epoch number : 19, Mini-batches: 3000] loss: 5.546\n",
"[Epoch number : 19, Mini-batches: 4000] loss: 5.492\n",
"[Epoch number : 19, Mini-batches: 5000] loss: 5.348\n",
"[Epoch number : 19, Mini-batches: 6000] loss: 5.475\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 64 %\n",
"\n",
"[Epoch number : 20, Mini-batches: 1000] loss: 5.308\n",
"[Epoch number : 20, Mini-batches: 2000] loss: 5.449\n",
"[Epoch number : 20, Mini-batches: 3000] loss: 5.489\n",
"[Epoch number : 20, Mini-batches: 4000] loss: 5.411\n",
"[Epoch number : 20, Mini-batches: 5000] loss: 5.492\n",
"[Epoch number : 20, Mini-batches: 6000] loss: 5.449\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 64 %\n",
"\n",
"[Epoch number : 21, Mini-batches: 1000] loss: 5.417\n",
"[Epoch number : 21, Mini-batches: 2000] loss: 5.461\n",
"[Epoch number : 21, Mini-batches: 3000] loss: 5.266\n",
"[Epoch number : 21, Mini-batches: 4000] loss: 5.411\n",
"[Epoch number : 21, Mini-batches: 5000] loss: 5.460\n",
"[Epoch number : 21, Mini-batches: 6000] loss: 5.451\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 65 %\n",
"\n",
"[Epoch number : 22, Mini-batches: 1000] loss: 5.332\n",
"[Epoch number : 22, Mini-batches: 2000] loss: 5.474\n",
"[Epoch number : 22, Mini-batches: 3000] loss: 5.373\n",
"[Epoch number : 22, Mini-batches: 4000] loss: 5.412\n",
"[Epoch number : 22, Mini-batches: 5000] loss: 5.334\n",
"[Epoch number : 22, Mini-batches: 6000] loss: 5.371\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 63 %\n",
"\n",
"[Epoch number : 23, Mini-batches: 1000] loss: 5.378\n",
"[Epoch number : 23, Mini-batches: 2000] loss: 5.376\n",
"[Epoch number : 23, Mini-batches: 3000] loss: 5.365\n",
"[Epoch number : 23, Mini-batches: 4000] loss: 5.452\n",
"[Epoch number : 23, Mini-batches: 5000] loss: 5.362\n",
"[Epoch number : 23, Mini-batches: 6000] loss: 5.328\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 65 %\n",
"\n",
"[Epoch number : 24, Mini-batches: 1000] loss: 5.217\n",
"[Epoch number : 24, Mini-batches: 2000] loss: 5.435\n",
"[Epoch number : 24, Mini-batches: 3000] loss: 5.383\n",
"[Epoch number : 24, Mini-batches: 4000] loss: 5.400\n",
"[Epoch number : 24, Mini-batches: 5000] loss: 5.364\n",
"[Epoch number : 24, Mini-batches: 6000] loss: 5.263\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 64 %\n",
"\n",
"[Epoch number : 25, Mini-batches: 1000] loss: 5.255\n",
"[Epoch number : 25, Mini-batches: 2000] loss: 5.392\n",
"[Epoch number : 25, Mini-batches: 3000] loss: 5.320\n",
"[Epoch number : 25, Mini-batches: 4000] loss: 5.278\n",
"[Epoch number : 25, Mini-batches: 5000] loss: 5.261\n",
"[Epoch number : 25, Mini-batches: 6000] loss: 5.187\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 64 %\n",
"\n",
"[Epoch number : 26, Mini-batches: 1000] loss: 5.267\n",
"[Epoch number : 26, Mini-batches: 2000] loss: 5.323\n",
"[Epoch number : 26, Mini-batches: 3000] loss: 5.307\n",
"[Epoch number : 26, Mini-batches: 4000] loss: 5.257\n",
"[Epoch number : 26, Mini-batches: 5000] loss: 5.373\n",
"[Epoch number : 26, Mini-batches: 6000] loss: 5.279\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 66 %\n",
"\n",
"[Epoch number : 27, Mini-batches: 1000] loss: 5.342\n",
"[Epoch number : 27, Mini-batches: 2000] loss: 5.241\n",
"[Epoch number : 27, Mini-batches: 3000] loss: 5.224\n",
"[Epoch number : 27, Mini-batches: 4000] loss: 5.312\n",
"[Epoch number : 27, Mini-batches: 5000] loss: 5.297\n",
"[Epoch number : 27, Mini-batches: 6000] loss: 5.257\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 65 %\n",
"\n",
"[Epoch number : 28, Mini-batches: 1000] loss: 5.200\n",
"[Epoch number : 28, Mini-batches: 2000] loss: 5.226\n",
"[Epoch number : 28, Mini-batches: 3000] loss: 5.478\n",
"[Epoch number : 28, Mini-batches: 4000] loss: 5.274\n",
"[Epoch number : 28, Mini-batches: 5000] loss: 5.341\n",
"[Epoch number : 28, Mini-batches: 6000] loss: 5.284\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 63 %\n",
"\n",
"[Epoch number : 29, Mini-batches: 1000] loss: 5.187\n",
"[Epoch number : 29, Mini-batches: 2000] loss: 5.323\n",
"[Epoch number : 29, Mini-batches: 3000] loss: 5.350\n",
"[Epoch number : 29, Mini-batches: 4000] loss: 5.278\n",
"[Epoch number : 29, Mini-batches: 5000] loss: 5.212\n",
"[Epoch number : 29, Mini-batches: 6000] loss: 5.291\n",
"\n",
"LeNet accuracy on 10000 images from test dataset: 65 %\n",
"\n",
"[Epoch number : 30, Mini-batches: 1000] loss: 5.278\n",
"[Epoch number : 30, Mini-batches: 2000] loss: 5.200\n",
"[Epoch number : 30, Mini-batches: 3000] loss: 5.122\n",
"[Epoch number : 30, Mini-batches: 4000] loss: 5.264\n",
"[Epoch number : 30, Mini-batches: 5000] loss: 5.274\n",
"[Epoch number : 30, Mini-batches: 6000] loss: 5.334\n",
"\n",
"LeNet accurac
gitextract_0oyxwd3s/ ├── .gitignore ├── Chapter01/ │ ├── mnist_pytorch.ipynb │ └── mnist_tensorflow.ipynb ├── Chapter02/ │ ├── DenseNetBlock.ipynb │ ├── GoogLeNet.ipynb │ ├── ResNetBlock.ipynb │ ├── imagenet1000_clsidx_to_labels.txt │ ├── lenet.ipynb │ ├── transfer_learning_alexnet.ipynb │ └── vgg13_pretrained_run_inference.ipynb ├── Chapter03/ │ └── image_captioning_pytorch.ipynb ├── Chapter04/ │ ├── lstm.ipynb │ └── rnn.ipynb ├── Chapter05/ │ ├── out_of_the_box_transformers.ipynb │ ├── rand_wire_nn.ipynb │ └── transformer.ipynb ├── Chapter06/ │ └── GNN.ipynb ├── Chapter07/ │ ├── music_generation.ipynb │ ├── text_generation.ipynb │ ├── text_generation_out_of_the_box.ipynb │ └── text_generation_out_of_the_box_gpt3.ipynb ├── Chapter08/ │ └── neural_style_transfer.ipynb ├── Chapter09/ │ ├── dcgan.ipynb │ └── pix2pix_architecture.ipynb ├── Chapter10/ │ ├── image_generation_using_diffusion.ipynb │ ├── taj_mahal_image.ipynb │ └── text_to_image_generation_using_stable_diffusion_v1_5.ipynb ├── Chapter11/ │ └── pong.ipynb ├── Chapter12/ │ ├── convnet_distributed.py │ ├── convnet_distributed_cuda.py │ ├── convnet_undistributed.py │ ├── convnet_undistributed_cuda.py │ └── convnet_undistributed_cuda_amp.py ├── Chapter13/ │ ├── Dockerfile │ ├── convnet.onnx │ ├── convnet.pb │ ├── convnet.pth │ ├── convnet.py │ ├── convnet_handler.py │ ├── convnet_tf/ │ │ ├── convnet_float16.tflite │ │ ├── convnet_float32.tflite │ │ ├── fingerprint.pb │ │ ├── saved_model.pb │ │ └── variables/ │ │ ├── variables.data-00000-of-00001 │ │ └── variables.index │ ├── cpp_convnet/ │ │ ├── CMakeLists.txt │ │ └── cpp_convnet.cpp │ ├── example.py │ ├── make_request.py │ ├── mnist_pytorch.ipynb │ ├── model_scripting.ipynb │ ├── model_store/ │ │ └── convnet.mar │ ├── model_tracing.ipynb │ ├── onnx.ipynb │ ├── requirements.txt │ ├── run_inference.ipynb │ ├── scripted_convnet.pt │ ├── server.py │ └── traced_convnet.pt ├── Chapter14/ │ ├── Android/ │ │ ├── app/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets/ │ │ │ │ └── optimized_for_mobile_traced_model.pt │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── pytorch/ │ │ │ │ └── mastering_pytorch_v2_mnist/ │ │ │ │ └── MainActivity.java │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── drawable-v24/ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── layout/ │ │ │ │ └── activity_main.xml │ │ │ └── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── mobile_optimized_model.py │ │ └── settings.gradle │ └── iOS/ │ └── HelloWorld/ │ ├── HelloWorld/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── CaptureViewController.swift │ │ ├── Info.plist │ │ ├── PreviewViewController.swift │ │ ├── SceneDelegate.swift │ │ ├── TorchBridge/ │ │ │ ├── HelloWorld-Bridging-Header.h │ │ │ ├── TorchModule.h │ │ │ └── TorchModule.mm │ │ ├── UIImage+Helper.swift │ │ └── model/ │ │ ├── digits.txt │ │ └── model.pt │ ├── HelloWorld.xcodeproj/ │ │ └── project.pbxproj │ └── Podfile ├── Chapter15/ │ ├── fastai.ipynb │ ├── poutyne.ipynb │ ├── pytorch_lightning.ipynb │ └── pytorch_profiler.ipynb ├── Chapter16/ │ ├── automl-pytorch.ipynb │ └── optuna_pytorch.ipynb ├── Chapter17/ │ ├── captum_interpretability.ipynb │ └── pytorch_interpretability.ipynb ├── Chapter18/ │ └── torch-recsys.ipynb ├── Chapter19/ │ ├── HuggingFaceAccelerate.ipynb │ ├── HuggingFaceDatasets.ipynb │ ├── HuggingFaceHub.ipynb │ ├── HuggingFaceOptimum.ipynb │ └── HuggingFacePyTorch.ipynb └── README.md
SYMBOL INDEX (46 symbols across 12 files)
FILE: Chapter12/convnet_distributed.py
class ConvNet (line 16) | class ConvNet(nn.Module):
method __init__ (line 17) | def __init__(self):
method forward (line 26) | def forward(self, x):
function train (line 42) | def train(cpu_num, args):
function main (line 85) | def main():
FILE: Chapter12/convnet_distributed_cuda.py
class ConvNet (line 15) | class ConvNet(nn.Module):
method __init__ (line 16) | def __init__(self):
method forward (line 25) | def forward(self, x):
function train (line 40) | def train(gpu_num, args):
function main (line 86) | def main():
FILE: Chapter12/convnet_undistributed.py
class ConvNet (line 15) | class ConvNet(nn.Module):
method __init__ (line 16) | def __init__(self):
method forward (line 25) | def forward(self, x):
function train (line 41) | def train(args):
function main (line 65) | def main():
FILE: Chapter12/convnet_undistributed_cuda.py
class ConvNet (line 12) | class ConvNet(nn.Module):
method __init__ (line 13) | def __init__(self):
method forward (line 22) | def forward(self, x):
function train (line 38) | def train(args):
function main (line 65) | def main():
FILE: Chapter12/convnet_undistributed_cuda_amp.py
class ConvNet (line 12) | class ConvNet(nn.Module):
method __init__ (line 13) | def __init__(self):
method forward (line 22) | def forward(self, x):
function train (line 38) | def train(args):
function main (line 66) | def main():
FILE: Chapter13/convnet.py
class ConvNet (line 5) | class ConvNet(nn.Module):
method __init__ (line 6) | def __init__(self):
method forward (line 15) | def forward(self, x):
FILE: Chapter13/convnet_handler.py
class ConvNetClassifier (line 4) | class ConvNetClassifier(ImageClassifier):
method postprocess (line 16) | def postprocess(self, output):
FILE: Chapter13/cpp_convnet/cpp_convnet.cpp
function main (line 11) | int main(int argc, char **argv) {
FILE: Chapter13/example.py
function hello_world (line 5) | def hello_world():
FILE: Chapter13/make_request.py
function image_to_tensor (line 11) | def image_to_tensor(image):
FILE: Chapter13/server.py
class ConvNet (line 10) | class ConvNet(nn.Module):
method __init__ (line 11) | def __init__(self):
method forward (line 20) | def forward(self, x):
function run_model (line 40) | def run_model(input_tensor):
function post_process (line 47) | def post_process(output):
function test (line 53) | def test():
FILE: Chapter14/Android/app/src/main/java/org/pytorch/mastering_pytorch_v2_mnist/MainActivity.java
class MainActivity (line 37) | public class MainActivity extends AppCompatActivity {
method onCreate (line 44) | @Override
method onRequestPermissionsResult (line 64) | @Override
method onActivityResult (line 77) | @Override
method openCamera (line 90) | private void openCamera() {
method processImage (line 97) | private void processImage(Bitmap bitmap) {
method assetFilePath (line 144) | private String assetFilePath(Context context, String assetName) throws...
Copy disabled (too large)
Download .json
Condensed preview — 110 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (36,393K chars).
[
{
"path": ".gitignore",
"chars": 1799,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "Chapter01/mnist_pytorch.ipynb",
"chars": 53145,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## import modules\"\n ]\n },\n {\n "
},
{
"path": "Chapter01/mnist_tensorflow.ipynb",
"chars": 26638,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## import modules\"\n ]\n },\n {\n "
},
{
"path": "Chapter02/DenseNetBlock.ipynb",
"chars": 2146,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": [\n "
},
{
"path": "Chapter02/GoogLeNet.ipynb",
"chars": 13516,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter02/ResNetBlock.ipynb",
"chars": 10592,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter02/imagenet1000_clsidx_to_labels.txt",
"chars": 30564,
"preview": "{0: 'tench, Tinca tinca',\n 1: 'goldfish, Carassius auratus',\n 2: 'great white shark, white shark, man-eater, man-eating "
},
{
"path": "Chapter02/lenet.ipynb",
"chars": 101837,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter02/transfer_learning_alexnet.ipynb",
"chars": 443823,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter02/vgg13_pretrained_run_inference.ipynb",
"chars": 330265,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter03/image_captioning_pytorch.ipynb",
"chars": 10324181,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## download data\"\n ]\n },\n {\n "
},
{
"path": "Chapter04/lstm.ipynb",
"chars": 22197,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter04/rnn.ipynb",
"chars": 39452,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter05/out_of_the_box_transformers.ipynb",
"chars": 10522,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter05/rand_wire_nn.ipynb",
"chars": 1226566,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 21,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outp"
},
{
"path": "Chapter05/transformer.ipynb",
"chars": 19898,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter06/GNN.ipynb",
"chars": 6709508,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"b61d29b6\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "Chapter07/music_generation.ipynb",
"chars": 109252,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter07/text_generation.ipynb",
"chars": 40216,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter07/text_generation_out_of_the_box.ipynb",
"chars": 16095,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outpu"
},
{
"path": "Chapter07/text_generation_out_of_the_box_gpt3.ipynb",
"chars": 2987,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"f74df50b\",\n \"metadata\": {},\n \"output"
},
{
"path": "Chapter08/neural_style_transfer.ipynb",
"chars": 4124024,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter09/dcgan.ipynb",
"chars": 34998,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## Install required libraries\"\n ]"
},
{
"path": "Chapter09/pix2pix_architecture.ipynb",
"chars": 16970,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter10/image_generation_using_diffusion.ipynb",
"chars": 6987161,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"28a6c8ec\",\n \"metadata\": {\n \"scrolled\":"
},
{
"path": "Chapter10/text_to_image_generation_using_stable_diffusion_v1_5.ipynb",
"chars": 613635,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"dab1c931\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "Chapter11/pong.ipynb",
"chars": 346087,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"scrolled\": false\n },\n \"outp"
},
{
"path": "Chapter12/convnet_distributed.py",
"chars": 3684,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom torch.utils.data imp"
},
{
"path": "Chapter12/convnet_distributed_cuda.py",
"chars": 3852,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom torch.utils.data imp"
},
{
"path": "Chapter12/convnet_undistributed.py",
"chars": 2328,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom torch.utils.data imp"
},
{
"path": "Chapter12/convnet_undistributed_cuda.py",
"chars": 2353,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom torch.utils.data imp"
},
{
"path": "Chapter12/convnet_undistributed_cuda_amp.py",
"chars": 2406,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom torch.utils.data imp"
},
{
"path": "Chapter13/Dockerfile",
"chars": 407,
"preview": "FROM python:3.9-slim\n\nRUN apt-get -q update && apt-get -q install -y wget\n\nCOPY ./server.py ./\nCOPY ./requirements.txt ."
},
{
"path": "Chapter13/convnet.py",
"chars": 783,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass ConvNet(nn.Module):\n def __init__(self):\n "
},
{
"path": "Chapter13/convnet_handler.py",
"chars": 750,
"preview": "from torchvision import transforms\nfrom ts.torch_handler.image_classifier import ImageClassifier\n\nclass ConvNetClassifie"
},
{
"path": "Chapter13/convnet_tf/fingerprint.pb",
"chars": 19,
"preview": "\bš\u0001\u0010Ū\u0001\u0018\u0001 ݐ\u0001(艬ڕ\u00012\u0002\b\u0001"
},
{
"path": "Chapter13/cpp_convnet/CMakeLists.txt",
"chars": 404,
"preview": "cmake_minimum_required(VERSION 3.0 FATAL_ERROR)\nproject(cpp_convnet)\nfind_package(Torch REQUIRED)\nfind_package(OpenCV RE"
},
{
"path": "Chapter13/cpp_convnet/cpp_convnet.cpp",
"chars": 840,
"preview": "#include <torch/script.h>\n#include <opencv2/core.hpp>\n#include <opencv2/imgcodecs.hpp>\n#include <opencv2/highgui.hpp>\n#i"
},
{
"path": "Chapter13/example.py",
"chars": 182,
"preview": "from flask import Flask\napp = Flask(__name__)\n \n@app.route('/')\ndef hello_world():\n return 'Hello, World!'\n \nif __nam"
},
{
"path": "Chapter13/make_request.py",
"chars": 857,
"preview": "import io\nimport json\nimport requests\nfrom PIL import Image\n\nfrom torchvision import transforms\n\n\nimage = Image.open(\"./"
},
{
"path": "Chapter13/mnist_pytorch.ipynb",
"chars": 50985,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter13/model_scripting.ipynb",
"chars": 21137,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter13/model_tracing.ipynb",
"chars": 20773,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter13/onnx.ipynb",
"chars": 27938,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outpu"
},
{
"path": "Chapter13/requirements.txt",
"chars": 75,
"preview": "torch==1.12.1\ntorchvision==0.13.1\nPillow==9.3.0\nFlask==2.2.2\ncaptum==0.5.0\n"
},
{
"path": "Chapter13/run_inference.ipynb",
"chars": 20297,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter13/server.py",
"chars": 1742,
"preview": "import os\nimport json\nimport numpy as np\nfrom flask import Flask, request\n\nimport torch\nimport torch.nn as nn\nimport tor"
},
{
"path": "Chapter14/Android/app/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "Chapter14/Android/app/build.gradle",
"chars": 590,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 28\n buildToolsVersion \"29.0.2\"\n defaultCo"
},
{
"path": "Chapter14/Android/app/src/main/AndroidManifest.xml",
"chars": 927,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "Chapter14/Android/app/src/main/java/org/pytorch/mastering_pytorch_v2_mnist/MainActivity.java",
"chars": 5800,
"preview": "package org.pytorch.mastering_pytorch_v2_mnist;\n\nimport android.content.Context;\nimport android.Manifest;\nimport android"
},
{
"path": "Chapter14/Android/app/src/main/res/drawable/ic_launcher_background.xml",
"chars": 5606,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:wi"
},
{
"path": "Chapter14/Android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
"chars": 1880,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:aapt=\"http://schemas.android.com/aapt\"\n "
},
{
"path": "Chapter14/Android/app/src/main/res/layout/activity_main.xml",
"chars": 1082,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns"
},
{
"path": "Chapter14/Android/app/src/main/res/values/colors.xml",
"chars": 208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#008577</color>\n <color name=\"color"
},
{
"path": "Chapter14/Android/app/src/main/res/values/strings.xml",
"chars": 86,
"preview": "<resources>\n <string name=\"app_name\">MasteringPyTorchV2MNIST</string>\n</resources>\n"
},
{
"path": "Chapter14/Android/app/src/main/res/values/styles.xml",
"chars": 383,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar"
},
{
"path": "Chapter14/Android/build.gradle",
"chars": 315,
"preview": "buildscript {\n repositories {\n google()\n jcenter()\n \n }\n dependencies {\n classpath "
},
{
"path": "Chapter14/Android/gradle/wrapper/gradle-wrapper.properties",
"chars": 232,
"preview": "#Tue Oct 01 13:22:43 PDT 2019\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_"
},
{
"path": "Chapter14/Android/gradle.properties",
"chars": 54,
"preview": "android.useAndroidX=true\nandroid.enableJetifier=true\n\n"
},
{
"path": "Chapter14/Android/gradlew",
"chars": 5296,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "Chapter14/Android/gradlew.bat",
"chars": 2260,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "Chapter14/Android/mobile_optimized_model.py",
"chars": 313,
"preview": "import torch\nfrom torch.utils.mobile_optimizer import optimize_for_mobile\n\ntraced_model = torch.jit.load('../../Chapter1"
},
{
"path": "Chapter14/Android/settings.gradle",
"chars": 61,
"preview": "include ':app'\nrootProject.name='MasteringPyTorchV2MNISTApp'\n"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/AppDelegate.swift",
"chars": 335,
"preview": "import UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n var window: UIWindow?\n f"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 1833,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"scale\" : \"2x\",\n \"size\" : \"20x20\"\n },\n {\n \"idiom\""
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/Assets.xcassets/Contents.json",
"chars": 63,
"preview": "{\n \"info\" : {\n \"author\" : \"xcode\",\n \"version\" : 1\n }\n}\n"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/Base.lproj/LaunchScreen.storyboard",
"chars": 1665,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/Base.lproj/Main.storyboard",
"chars": 8297,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/CaptureViewController.swift",
"chars": 4014,
"preview": "import UIKit\nimport AVFoundation\n\nclass CaptureViewController: UIViewController, AVCapturePhotoCaptureDelegate {\n @IB"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/Info.plist",
"chars": 1495,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/PreviewViewController.swift",
"chars": 1927,
"preview": "import UIKit\n\nclass PreviewViewController: UIViewController {\n @IBOutlet var imageView: UIImageView!\n @IBOutlet va"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/SceneDelegate.swift",
"chars": 2147,
"preview": "import UIKit\n\nclass SceneDelegate: UIResponder, UIWindowSceneDelegate {\n var window: UIWindow?\n\n func scene(_ scen"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/TorchBridge/HelloWorld-Bridging-Header.h",
"chars": 24,
"preview": "#import \"TorchModule.h\"\n"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/TorchBridge/TorchModule.h",
"chars": 420,
"preview": "#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TorchModule : NSObject\n\n- (nullable instancetype)"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/TorchBridge/TorchModule.mm",
"chars": 1082,
"preview": "#import \"TorchModule.h\"\n#import <Libtorch-Lite/Libtorch-Lite.h>\n\n@implementation TorchModule {\n @protected\n torch::jit:"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/UIImage+Helper.swift",
"chars": 2150,
"preview": "import UIKit\n\nextension UIImage {\n func resized(to newSize: CGSize, scale: CGFloat = 1) -> UIImage {\n let form"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld/model/digits.txt",
"chars": 20,
"preview": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n"
},
{
"path": "Chapter14/iOS/HelloWorld/HelloWorld.xcodeproj/project.pbxproj",
"chars": 19038,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 50;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "Chapter14/iOS/HelloWorld/Podfile",
"chars": 89,
"preview": "\nplatform :ios, '12.0'\ntarget 'HelloWorld' do\n pod 'LibTorch-Lite', '~> 1.13.0.1'\nend\n"
},
{
"path": "Chapter15/fastai.ipynb",
"chars": 154093,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter15/poutyne.ipynb",
"chars": 62631,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outpu"
},
{
"path": "Chapter15/pytorch_lightning.ipynb",
"chars": 29974,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [\n {\n \"name\":"
},
{
"path": "Chapter15/pytorch_profiler.ipynb",
"chars": 88552,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## import modules\"\n ]\n },\n {\n "
},
{
"path": "Chapter16/automl-pytorch.ipynb",
"chars": 1563893,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outpu"
},
{
"path": "Chapter16/optuna_pytorch.ipynb",
"chars": 31271,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## import modules\"\n ]\n },\n {\n "
},
{
"path": "Chapter17/captum_interpretability.ipynb",
"chars": 117892,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outpu"
},
{
"path": "Chapter17/pytorch_interpretability.ipynb",
"chars": 467838,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"scrolled\": true\n },\n \"outpu"
},
{
"path": "Chapter18/torch-recsys.ipynb",
"chars": 80434,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"ec547158\",\n \"metadata\": {},\n \"source\": [\n \"### imports\"\n "
},
{
"path": "Chapter19/HuggingFaceAccelerate.ipynb",
"chars": 27652,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"fe2fbcf0\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "Chapter19/HuggingFaceDatasets.ipynb",
"chars": 8136,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"fd1a39e2\",\n \"metadata\": {},\n \"output"
},
{
"path": "Chapter19/HuggingFaceHub.ipynb",
"chars": 11696,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"3a69c9a1\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "Chapter19/HuggingFaceOptimum.ipynb",
"chars": 20058,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"a1199016\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "Chapter19/HuggingFacePyTorch.ipynb",
"chars": 9544,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"c087c5fe\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "README.md",
"chars": 27628,
"preview": "# Mastering PyTorch, Second Edition\n\nThis is the code repository for the book [Mastering PyTorch, Second Edition](https:"
}
]
// ... and 15 more files (download for full content)
About this extraction
This page contains the full source code of the arj7192/MasteringPyTorchV2 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 110 files (45.5 MB), approximately 8.7M tokens, and a symbol index with 46 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.