{ "cells": [ { "cell_type": "code", "execution_count": 3, "id": "2d4667c5", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "id": "524483a8", "metadata": {}, "source": [ "# Dependencies" ] }, { "cell_type": "code", "execution_count": 4, "id": "4c51929f", "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path.append('..')" ] }, { "cell_type": "code", "execution_count": 23, "id": "8f19f1c8", "metadata": {}, "outputs": [], "source": [ "import os\n", "import matplotlib.pyplot as plt\n", "from datetime import datetime\n", "\n", "# torch\n", "import torch\n", "import torchaudio\n", "from torch.utils.data import DataLoader\n", "\n", "# model training\n", "from cnn import CNNetwork\n", "from dataset import VoiceDataset\n", "from train import train" ] }, { "cell_type": "markdown", "id": "4f51b4f8", "metadata": {}, "source": [ "## Globals" ] }, { "cell_type": "code", "execution_count": 37, "id": "6f1716bf", "metadata": {}, "outputs": [], "source": [ "DATA_PATH = os.path.join('..', 'data', 'aisf', 'augmented')" ] }, { "cell_type": "code", "execution_count": 41, "id": "13fa6700", "metadata": {}, "outputs": [], "source": [ "TRAIN_PATH = os.path.join(DATA_PATH, 'train')\n", "TEST_PATH = os.path.join(DATA_PATH, 'test')" ] }, { "cell_type": "code", "execution_count": 26, "id": "152c1fbf", "metadata": {}, "outputs": [], "source": [ "EPOCHS = 25\n", "BATCH_SIZE = 128\n", "LEARNING_RATE = 0.001\n", "SAMPLE_RATE=48000" ] }, { "cell_type": "code", "execution_count": 27, "id": "98cf668e", "metadata": {}, "outputs": [], "source": [ "MEL_SPEC = torchaudio.transforms.MelSpectrogram(\n", " sample_rate=SAMPLE_RATE,\n", " n_fft=2048,\n", " hop_length=512,\n", " n_mels=128,\n", ")" ] }, { "cell_type": "markdown", "id": "063c13a4", "metadata": {}, "source": [ "# `train()` setup" ] }, { "cell_type": "code", "execution_count": 28, "id": "19b58a13", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using cpu device.\n" ] } ], "source": [ "if torch.cuda.is_available():\n", " device = \"cuda\"\n", "else:\n", " device = \"cpu\"\n", "print(f\"Using {device} device.\")" ] }, { "cell_type": "code", "execution_count": 42, "id": "848745e7", "metadata": {}, "outputs": [], "source": [ "# Datasets\n", "train_dataset = VoiceDataset(TRAIN_PATH, MEL_SPEC, device, SAMPLE_RATE, time_limit_in_secs=3)\n", "test_dataset = VoiceDataset(TEST_PATH, MEL_SPEC, device, SAMPLE_RATE, time_limit_in_secs=3)\n", "\n", "# Dataloaders\n", "train_dataloader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True)\n", "test_dataloader = DataLoader(test_dataset, batch_size=BATCH_SIZE, shuffle=True)" ] }, { "cell_type": "code", "execution_count": 43, "id": "ec97cc05", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([1, 128, 282])\n" ] }, { "data": { "text/plain": [ "4221" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(train_dataset[0][0].shape)\n", "len(train_dataset)" ] }, { "cell_type": "code", "execution_count": 44, "id": "6176760d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([1, 128, 282])\n" ] }, { "data": { "text/plain": [ "2121" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(test_dataset[0][0].shape)\n", "len(test_dataset)" ] }, { "cell_type": "code", "execution_count": 45, "id": "67a76338", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CNNetwork(\n", " (conv1): Sequential(\n", " (0): Conv2d(1, 16, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2))\n", " (1): ReLU()\n", " (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (conv2): Sequential(\n", " (0): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2))\n", " (1): ReLU()\n", " (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (conv3): Sequential(\n", " (0): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2))\n", " (1): ReLU()\n", " (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (conv4): Sequential(\n", " (0): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2))\n", " (1): ReLU()\n", " (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (flatten): Flatten(start_dim=1, end_dim=-1)\n", " (linear): Linear(in_features=21888, out_features=3, bias=True)\n", " (softmax): Softmax(dim=1)\n", ")\n" ] } ], "source": [ "model = CNNetwork().to(device)\n", "print(model)" ] }, { "cell_type": "code", "execution_count": 46, "id": "5c5b08c3", "metadata": {}, "outputs": [], "source": [ "loss_fn = torch.nn.CrossEntropyLoss()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=LEARNING_RATE)" ] }, { "cell_type": "code", "execution_count": 47, "id": "f7b14a2b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'shafqat': 0, 'aman': 1, 'jake': 2}" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_dataset.label_mapping" ] }, { "cell_type": "code", "execution_count": 48, "id": "87ed6df3", "metadata": {}, "outputs": [], "source": [ "model.labels = train_dataset.label_mapping" ] }, { "cell_type": "markdown", "id": "e6eb6722", "metadata": {}, "source": [ "# Train/Test" ] }, { "cell_type": "code", "execution_count": 49, "id": "f4b5c789", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:10<00:00, 2.15s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.79, Training Accuracy 0.7577386363636364\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:14<00:00, 1.19it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.64, Testing Accuracy 0.9096809528605964\n", "-------------------------------------------- \n", "\n", "Epoch 2/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:02<00:00, 1.91s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.59, Training Accuracy 0.9618503787878787\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:13<00:00, 1.22it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.60, Testing Accuracy 0.9536978746978244\n", "-------------------------------------------- \n", "\n", "Epoch 3/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:02<00:00, 1.89s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.58, Training Accuracy 0.9758295454545456\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:13<00:00, 1.22it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.58, Testing Accuracy 0.9756370870265916\n", "-------------------------------------------- \n", "\n", "Epoch 4/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:01<00:00, 1.87s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.57, Training Accuracy 0.9867310606060606\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:13<00:00, 1.23it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.56, Testing Accuracy 0.9889705882352942\n", "-------------------------------------------- \n", "\n", "Epoch 5/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:19<00:00, 2.40s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.56, Training Accuracy 0.9933712121212122\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:21<00:00, 1.26s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.56, Testing Accuracy 0.992300815874295\n", "-------------------------------------------- \n", "\n", "Epoch 6/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:17<00:00, 2.36s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.56, Training Accuracy 0.9955018939393939\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:14<00:00, 1.18it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.56, Testing Accuracy 0.9935661764705882\n", "-------------------------------------------- \n", "\n", "Epoch 7/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:05<00:00, 1.97s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.56, Training Accuracy 0.9964488636363636\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:13<00:00, 1.23it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.56, Testing Accuracy 0.9881647864625303\n", "-------------------------------------------- \n", "\n", "Epoch 8/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:02<00:00, 1.89s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training Loss: 0.55, Training Accuracy 0.9971590909090909\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Testing batch...: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 17/17 [00:14<00:00, 1.21it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Testing Loss: 0.56, Testing Accuracy 0.989083904109589\n", "-------------------------------------------- \n", "\n", "Epoch 9/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Training batch...: 12%|████████████████▍ | 4/33 [00:08<01:00, 2.10s/it]\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[49], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m history \u001b[38;5;241m=\u001b[39m \u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_dataloader\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mloss_fn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mEPOCHS\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mtest_dataloader\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/ml-sandbox/VoID/notebooks/../train.py:33\u001b[0m, in \u001b[0;36mtrain\u001b[0;34m(model, train_dataloader, loss_fn, optimizer, device, epochs, test_dataloader)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEpoch \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mi\u001b[38;5;250m \u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;241m1\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mepochs\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# train model\u001b[39;00m\n\u001b[0;32m---> 33\u001b[0m train_epoch_loss, train_epoch_acc \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrain_dataloader\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloss_fn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;66;03m# training metrics\u001b[39;00m\n\u001b[1;32m 36\u001b[0m training_loss\u001b[38;5;241m.\u001b[39mappend(train_epoch_loss\u001b[38;5;241m/\u001b[39m\u001b[38;5;28mlen\u001b[39m(train_dataloader))\n", "File \u001b[0;32m~/ml-sandbox/VoID/notebooks/../train.py:68\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(model, train_dataloader, loss_fn, optimizer, device)\u001b[0m\n\u001b[1;32m 65\u001b[0m wav, target \u001b[38;5;241m=\u001b[39m wav\u001b[38;5;241m.\u001b[39mto(device), target\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[1;32m 67\u001b[0m \u001b[38;5;66;03m# calculate loss\u001b[39;00m\n\u001b[0;32m---> 68\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mwav\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 69\u001b[0m loss \u001b[38;5;241m=\u001b[39m loss_fn(output, target)\n\u001b[1;32m 71\u001b[0m \u001b[38;5;66;03m# backprop and update weights\u001b[39;00m\n", "File \u001b[0;32m~/anaconda3/envs/void/lib/python3.9/site-packages/torch/nn/modules/module.py:1501\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1496\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1497\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1498\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1499\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1500\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1501\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1502\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1503\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n", "File \u001b[0;32m~/ml-sandbox/VoID/notebooks/../cnn.py:59\u001b[0m, in \u001b[0;36mCNNetwork.forward\u001b[0;34m(self, input_data)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, input_data):\n\u001b[0;32m---> 59\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv1\u001b[49m\u001b[43m(\u001b[49m\u001b[43minput_data\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 60\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconv2(x)\n\u001b[1;32m 61\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconv3(x)\n", "File \u001b[0;32m~/anaconda3/envs/void/lib/python3.9/site-packages/torch/nn/modules/module.py:1501\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1496\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1497\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1498\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1499\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1500\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1501\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1502\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1503\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n", "File \u001b[0;32m~/anaconda3/envs/void/lib/python3.9/site-packages/torch/nn/modules/container.py:217\u001b[0m, in \u001b[0;36mSequential.forward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m):\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m module \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n\u001b[0;32m--> 217\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mmodule\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28minput\u001b[39m\n", "File \u001b[0;32m~/anaconda3/envs/void/lib/python3.9/site-packages/torch/nn/modules/module.py:1501\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1496\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1497\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1498\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1499\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1500\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1501\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1502\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1503\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n", "File \u001b[0;32m~/anaconda3/envs/void/lib/python3.9/site-packages/torch/nn/modules/conv.py:463\u001b[0m, in \u001b[0;36mConv2d.forward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m 462\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[0;32m--> 463\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_conv_forward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/anaconda3/envs/void/lib/python3.9/site-packages/torch/nn/modules/conv.py:459\u001b[0m, in \u001b[0;36mConv2d._conv_forward\u001b[0;34m(self, input, weight, bias)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzeros\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m 456\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mconv2d(F\u001b[38;5;241m.\u001b[39mpad(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reversed_padding_repeated_twice, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode),\n\u001b[1;32m 457\u001b[0m weight, bias, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstride,\n\u001b[1;32m 458\u001b[0m _pair(\u001b[38;5;241m0\u001b[39m), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdilation, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgroups)\n\u001b[0;32m--> 459\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2d\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstride\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 460\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpadding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdilation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "history = train(\n", " model,\n", " train_dataloader,\n", " loss_fn,\n", " optimizer,\n", " device,\n", " EPOCHS,\n", " test_dataloader\n", ")" ] }, { "cell_type": "markdown", "id": "572ae86d", "metadata": {}, "source": [ "# Visualizations" ] }, { "cell_type": "code", "execution_count": 50, "id": "0b986ac4", "metadata": {}, "outputs": [], "source": [ "training_acc = history[0]\n", "training_loss = history[1]\n", "\n", "testing_acc = history[2]\n", "testing_loss = history[3]" ] }, { "cell_type": "code", "execution_count": 51, "id": "5cfbedcc", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "fig.suptitle(\"Accuracy\")\n", "ax = fig.subplots(1, 2)\n", "ax[0].plot(training_acc)\n", "ax[0].title.set_text(\"Training\")\n", "ax[1].plot(testing_acc)\n", "ax[1].title.set_text(\"Testing\")" ] }, { "cell_type": "code", "execution_count": 52, "id": "2475aebc", "metadata": {}, "outputs": [ { "data": { "image/png": "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KSlwc3NDQEAAli5dik8//ZTL31bGmRoyufLycsybNw+vvPIKNmzYALlcFztfuHAB06ZNw7Jly+Du7o5z587hzTffxPHjx7tNPRvy3Xff4de//jVee+01BAYG4r333sOiRYswatQo3Hfffb1e29bWhscffxyLFi3Cr3/9axw+fBi/+c1v4O3tjf/3//4fAODmzZuYOnUqrl+/jjfffBOjRo3Cvn37MGvWrMH/UIioX7RaLX7605/iyJEjeOWVVzBp0iRcuXIFb7zxBu6//378+9//hqurK4qLi/Hoo48iOTkZW7duhY+PD3788Ufs27cPra2tCA4Oxr59+/DII49g0aJFWLx4MQD0OTtTUVGBuXPn4te//jXeeOMN7NmzB6tWrUJISAiee+45ALpn3JQpU+Du7o7Nmzdj+PDh2LFjB1544QWz/3yoDwLRAD3//POCu7u73rEpU6YIAIQvvvii12u1Wq3Q1tYmHDp0SAAgfPfdd9J7b7zxhnDrf5qRkZGCSqUSrly5Ih1rbm4WfH19hV/+8pfSsX/9618CAOFf//qX3jgBCB9//LHeZ06bNk247bbbpD//+c9/FgAIn332md55v/zlLwUAwvvvv9/rdyIi4936HNmxY4cAQPj73/+ud96JEycEAEJWVpYgCIKwe/duAYCQn5/f42dXVVUJAIQ33nij23vvv/++AEC4fPmydEx8fn3zzTd6595+++3Cww8/LP155cqVgkwmE3744Qe98x5++OFuzx+yLC4/kckNGzYMDzzwQLfjRUVFmDNnDoKCgqBQKODs7IwpU6YAAM6ePdvn544dOxYRERHSn1UqFWJiYnDlypU+r5XJZJg+fbresTvvvFPv2kOHDsHT0xOPPPKI3nnPPvtsn59PRKbxz3/+Ez4+Ppg+fTra29ul19ixYxEUFCQt7YwdOxYuLi74xS9+gQ8++ABFRUUmuX9QUBDGjx+vd8zQsyI+Ph6333673nl8VlgfgxoyueDg4G7HGhsbkZycjG+++Qbr16/HwYMHceLECXzyyScAgObm5j4/18/Pr9sxpVLZr2vd3NygUqm6XdvS0iL9uaamBoGBgd2uNXSMiMzj2rVrqK2thYuLC5ydnfVeFRUVqK6uBgBER0fjwIEDGD58OJYuXYro6GhER0fjj3/846Du35/nDJ8Vtos5NWRyhmrMfPnll7h69SoO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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "fig.suptitle(\"Loss\")\n", "ax = fig.subplots(1, 2)\n", "ax[0].plot(training_loss)\n", "ax[0].title.set_text(\"Training\")\n", "ax[1].plot(testing_loss)\n", "ax[1].title.set_text(\"Testing\")" ] }, { "cell_type": "code", "execution_count": 53, "id": "fc0bc3d9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Trained void model saved at ../models/aisf/void_20230517_115313.pth\n" ] } ], "source": [ "# save model\n", "now = datetime.now()\n", "now = now.strftime(\"%Y%m%d_%H%M%S\")\n", "model_filename = f\"../models/aisf/void_{now}.pth\"\n", "torch.save(model.state_dict(), model_filename)\n", "print(f\"Trained void model saved at {model_filename}\")" ] }, { "cell_type": "code", "execution_count": null, "id": "9b5f0551", "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": 5 }