{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "2d4667c5", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "id": "524483a8", "metadata": {}, "source": [ "# Dependencies" ] }, { "cell_type": "code", "execution_count": 2, "id": "4c51929f", "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path.append('..')" ] }, { "cell_type": "code", "execution_count": 3, "id": "8f19f1c8", "metadata": {}, "outputs": [], "source": [ "import os\n", "import matplotlib.pyplot as plt\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": 4, "id": "6f1716bf", "metadata": {}, "outputs": [], "source": [ "DATA_PATH = os.path.join('..', 'data')" ] }, { "cell_type": "code", "execution_count": 5, "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": 6, "id": "152c1fbf", "metadata": {}, "outputs": [], "source": [ "EPOCHS = 100\n", "BATCH_SIZE = 128\n", "LEARNING_RATE = 0.001\n", "SAMPLE_RATE=16000" ] }, { "cell_type": "code", "execution_count": 7, "id": "98cf668e", "metadata": {}, "outputs": [], "source": [ "MEL_SPEC = torchaudio.transforms.MelSpectrogram(\n", " n_fft=1024,\n", " hop_length=512,\n", " n_mels=64,\n", " sample_rate=SAMPLE_RATE,\n", ")" ] }, { "cell_type": "markdown", "id": "063c13a4", "metadata": {}, "source": [ "# `train()` setup" ] }, { "cell_type": "code", "execution_count": 8, "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": 9, "id": "848745e7", "metadata": {}, "outputs": [], "source": [ "# Datasets\n", "train_dataset = VoiceDataset(TRAIN_PATH, MEL_SPEC, device, SAMPLE_RATE)\n", "test_dataset = VoiceDataset(TEST_PATH, MEL_SPEC, device, SAMPLE_RATE)\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": 10, "id": "67a76338", "metadata": {}, "outputs": [], "source": [ "model = CNNetwork().to(device)" ] }, { "cell_type": "code", "execution_count": 11, "id": "5c5b08c3", "metadata": {}, "outputs": [], "source": [ "loss_fn = torch.nn.CrossEntropyLoss()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=LEARNING_RATE)" ] }, { "cell_type": "markdown", "id": "e6eb6722", "metadata": {}, "source": [ "# Train/Test" ] }, { "cell_type": "code", "execution_count": 12, "id": "f4b5c789", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r\n", "Training model...: 0%| | 0/100 [00:00" ] }, "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": 16, "id": "2475aebc", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAHNCAYAAADv1yoLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtQElEQVR4nO3deXwU9f0/8NfsmYMk3EkgEBBB5BAR5CyeFQtipVbFtqIo1FLUSj1a+Wq/iPorHt9yaIXWr9DUo4hfkZZWhaLIYVGLCHggFEUkQMIRCSEk2XN+f+zO7MzszO7M7iabzb6ej0cemM3s7my3mbz3/X5/3h9BFEURRERERBnGlu4TICIiIkoEgxgiIiLKSAxiiIiIKCMxiCEiIqKMxCCGiIiIMhKDGCIiIspIDGKIiIgoIzGIISIioozEIIaIiIgyEoMYIkpaRUUFBEHARx99lO5TIaIswiCGiIiIMhKDGCIiIspIDGKIqEW89957uPzyy1FQUIC8vDyMGTMGb7zxhuqYhoYG3HfffejduzdycnLQsWNHDB8+HCtWrJCP2b9/P2688UZ069YNbrcbxcXFuPzyy7Fz584WfkVElG6OdJ8AEbV9mzZtwhVXXIHzzjsPy5Ytg9vtxpIlS3D11VdjxYoVmDJlCgDgnnvuwYsvvojHHnsMQ4cOxZkzZ/DZZ5+hpqZGfqyJEyciEAjgySefRM+ePXHixAls3boVtbW1aXp1RJQugiiKYrpPgogyW0VFBW699VZs27YNw4cPj/r56NGjsX//fnz11Vdo164dACAQCOD8889HbW0tDh48CEEQMHjwYJx99tlYvXq17vPU1NSgc+fOWLRoEe6+++5mfU1E1PqxnEREzerMmTP48MMPcd1118kBDADY7XZMnToVhw4dwt69ewEAI0aMwFtvvYUHHngAGzduRGNjo+qxOnbsiD59+uCpp57CggULsGPHDgSDwRZ9PUTUejCIIaJmdfLkSYiiiNLS0qifdevWDQDkctHTTz+NX//61/jrX/+KSy+9FB07dsTkyZOxb98+AIAgCHjnnXdw5ZVX4sknn8QFF1yALl264Be/+AVOnz7dci+KiFoFBjFE1Kw6dOgAm82GqqqqqJ8dOXIEANC5c2cAQH5+PubNm4c9e/aguroaS5cuxQcffICrr75avk95eTmWLVuG6upq7N27F7/85S+xZMkS3H///S3zgoio1WAQQ0TNKj8/HyNHjsTrr7+uKg8Fg0G89NJLKCsrQ79+/aLuV1xcjGnTpuFHP/oR9u7di4aGhqhj+vXrh4ceegiDBw/Gxx9/3Kyvg4haH65OIqKU2bBhAw4cOBB1+/z583HFFVfg0ksvxX333QeXy4UlS5bgs88+w4oVKyAIAgBg5MiRmDRpEs477zx06NABX3zxBV588UWMHj0aeXl5+OSTT3DnnXfi+uuvR9++feFyubBhwwZ88skneOCBB1r41RJRujGIIaKU+fWvf617+9dff40NGzZg7ty5mDZtGoLBIIYMGYI1a9Zg0qRJ8nGXXXYZ1qxZg4ULF6KhoQHdu3fHzTffjAcffBAAUFJSgj59+mDJkiWorKyEIAg466yz8Lvf/Q533XVXi7xGImo9uMSaiIiIMhJ7YoiIiCgjMYghIiKijMQghoiIiDISgxgiIiLKSAxiiIiIKCMxiCEiIqKMxCCGiIiIMhKDGCIiIspIDGKIiIgoIzGIISIioozEIIaIiIgyEoMYIiIiykgMYoiIiCgjMYghIiKijMQghoiIiDISgxiSCYJg6mvjxo1JPc/DDz8MQRASuu/GjRtTcg5E1Dxa6joCAA0NDXj44Yd1H6uiogKCIODAgQNJPw+1XoIoimK6T4Jahw8++ED1/aOPPop3330XGzZsUN0+YMAAFBYWJvw8hw4dwqFDhzBq1CjL962rq8Pu3buTPgciah4tdR0BgBMnTqBLly6YO3cuHn74YdXPjh8/jq+++gpDhw6F2+1O6nmo9XKk+wSo9dAGFV26dIHNZosbbDQ0NCAvL8/085SVlaGsrCyhcywsLEwo+CGilpHodSTVunTpgi5durToc1LLYzmJLLnkkkswaNAgbN68GWPGjEFeXh5uu+02AMDKlSsxfvx4lJaWIjc3F+eeey4eeOABnDlzRvUYeuWkXr16YdKkSVi7di0uuOAC5Obmon///li+fLnqOL1y0rRp09CuXTt8+eWXmDhxItq1a4cePXrg3nvvhcfjUd3/0KFDuO6661BQUID27dvjJz/5CbZt2wZBEFBRUZG6/6GIyJDX68Vjjz2G/v37w+12o0uXLrj11ltx/Phx1XEbNmzAJZdcgk6dOiE3Nxc9e/bED3/4QzQ0NODAgQNykDJv3jy5TDVt2jQA+uUk6fq1bds2jBs3Dnl5eTjrrLPw+OOPIxgMqp77888/x/jx45GXl4cuXbrgjjvuwBtvvMFydivDTAxZVlVVhZtuugm/+tWv8Nvf/hY2WygW3rdvHyZOnIjZs2cjPz8fe/bswRNPPIF///vfUalkPbt27cK9996LBx54AMXFxXj++ecxffp0nH322bjoooti3tfn8+H73/8+pk+fjnvvvRebN2/Go48+iqKiIvz3f/83AODMmTO49NJL8e233+KJJ57A2WefjbVr12LKlCnJ/49CRKYEg0Fcc8012LJlC371q19hzJgx+OabbzB37lxccskl+Oijj5Cbm4sDBw7gqquuwrhx47B8+XK0b98ehw8fxtq1a+H1elFaWoq1a9fie9/7HqZPn44ZM2YAQNzsS3V1NX7yk5/g3nvvxdy5c7F69WrMmTMH3bp1w8033wwgdI27+OKLkZ+fj6VLl6Jr165YsWIF7rzzzmb/34csEokM3HLLLWJ+fr7qtosvvlgEIL7zzjsx7xsMBkWfzydu2rRJBCDu2rVL/tncuXNF7f/1ysvLxZycHPGbb76Rb2tsbBQ7duwo/uxnP5Nve/fdd0UA4rvvvqs6TwDiq6++qnrMiRMniuecc478/bPPPisCEN966y3VcT/72c9EAOKf/vSnmK+JiKzTXkdWrFghAhBXrVqlOm7btm0iAHHJkiWiKIria6+9JgIQd+7cafjYx48fFwGIc+fOjfrZn/70JxGA+PXXX8u3SdevDz/8UHXsgAEDxCuvvFL+/v777xcFQRA///xz1XFXXnll1PWH0ovlJLKsQ4cOuOyyy6Ju379/P3784x+jpKQEdrsdTqcTF198MQDgiy++iPu4559/Pnr27Cl/n5OTg379+uGbb76Je19BEHD11VerbjvvvPNU9920aRMKCgrwve99T3Xcj370o7iPT0Sp8Y9//APt27fH1VdfDb/fL3+df/75KCkpkUs1559/PlwuF26//Xb8+c9/xv79+1Py/CUlJRgxYoTqNr1rxaBBgzBgwADVcbxWtD4MYsiy0tLSqNvq6+sxbtw4fPjhh3jsscewceNGbNu2Da+//joAoLGxMe7jdurUKeo2t9tt6r55eXnIycmJum9TU5P8fU1NDYqLi6Puq3cbETWPo0ePora2Fi6XC06nU/VVXV2NEydOAAD69OmDt99+G127dsUdd9yBPn36oE+f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68VrR0gi146sCGJOnDiBQCCA4uJi1e3FxcWorq5O01klRhRF3HPPPfjOd76DQYMGybdPmDABL7/8MjZs2IDf/e532LZtGy677DJ4PJ40nq2+kSNH4oUXXsC6devwv//7v6iursaYMWNQU1Mjvx+Z+F799a9/RW1tLaZNmybflknvi5aZ96K6uhoulwsdOnQwPCaTtZVrB68brRuvHfrHmNFmdrE2QxnhAqFfbO1trd2dd96JTz75BO+9957q9ilTpsj/PWjQIAwfPhzl5eV44403cO2117b0acY0YcIE+b8HDx6M0aNHo0+fPvjzn/8sN65l4nu1bNkyTJgwAd26dZNvy6T3xUgi70UmvF9WZOL/H5V43WjdeO2wdoxSVmRiOnfuDLvdHhXdHTt2LCpSbM3uuusurFmzBu+++y7KyspiHltaWory8nLs27evhc4ucfn5+Rg8eDD27dsnrzbItPfqm2++wdtvv40ZM2bEPC6T3hcz70VJSQm8Xi9OnjxpeEwmawvXDl43Wvf7xGtHcteOrAhiXC4Xhg0bJnd/S9avX48xY8ak6azME0URd955J15//XVs2LABvXv3jnufmpoaVFZWorS0tAXOMDkejwdffPEFSktL0bt3b5SUlKjeK6/Xi02bNrXq9+pPf/oTunbtiquuuirmcZn0vph5L4YNGwan06k6pqqqCp999lmrfr/MyuRrB68brf+6AfDakfS1I7Fe5MzzyiuviE6nU1y2bJm4e/ducfbs2WJ+fr544MCBdJ9aXD//+c/FoqIicePGjWJVVZX81dDQIIqiKJ4+fVq89957xa1bt4pff/21+O6774qjR48Wu3fvLtbV1aX57KPde++94saNG8X9+/eLH3zwgThp0iSxoKBAfi8ef/xxsaioSHz99dfFTz/9VPzRj34klpaWtsrXIoqiGAgExJ49e4q//vWvVbdnwvty+vRpcceOHeKOHTtEAOKCBQvEHTt2iN98840oiubei5kzZ4plZWXi22+/LX788cfiZZddJg4ZMkT0+/3pelkplanXDl43Wvd1QxR57UjFtSNrghhRFMVnn31WLC8vF10ul3jBBReolhq2ZgB0v/70pz+JoiiKDQ0N4vjx48UuXbqITqdT7Nmzp3jLLbeIBw8eTO+JG5gyZYpYWloqOp1OsVu3buK1114rfv755/LPg8GgOHfuXLGkpER0u93iRRddJH766adpPOPY1q1bJwIQ9+7dq7o9E96Xd999V/f/W7fccosoiubei8bGRvHOO+8UO3bsKObm5oqTJk1qVa8xFTLx2sHrRuu+bogirx2puHYIoiiKFjNFRERERGmXFT0xRERE1PYwiCEiIqKMxCCGiIiIMhKDGCIiIspIDGKIiIgoIzGIISIioozEIIaIiIgyEoMYIiIiykgMYoiIiCgjMYghIiKijMQghoiIiDISgxgiIiLKSP8fXzr6WXSVPkAAAAAASUVORK5CYII=", "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\")" ] } ], "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 }