{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Machine Learning Accelerator - Computer Vision - Lecture 1\n",
"\n",
"## Neural Networks with Gluon\n",
"\n",
"In this notebook, we build, train and validate a Neural Network in [Gluon](https://mxnet.apache.org/api/python/docs/tutorials/packages/gluon/index.html), a library that provides a clear, concise, and simple API for deep learning. \n",
"\n",
"1. Implementing a neural network with Gluon \n",
"2. Loss Functions\n",
"3. Training\n",
"4. Example - Binary Classification\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: You are using pip version 21.3.1; however, version 22.3.1 is available.\r\n",
"You should consider upgrading via the '/home/ec2-user/anaconda3/envs/pytorch_p39/bin/python3.9 -m pip install --upgrade pip' command.\u001b[0m\r\n"
]
}
],
"source": [
"! pip install -q -r ../requirements.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Implementing a neural network with Gluon\n",
"(Go to top)\n",
"\n",
"Let's implement a simple neural network with two hidden layers of size 64 using the sequential mode (Adding things in sequence). We will have 3 inputs, 2 hidden layers and 1 output layer. Some drop-outs attached to the hidden layers."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential(\n",
" (0): Dense(None -> 64, Activation(tanh))\n",
" (1): Dropout(p = 0.4, axes=())\n",
" (2): Dense(None -> 64, Activation(tanh))\n",
" (3): Dropout(p = 0.3, axes=())\n",
" (4): Dense(None -> 1, linear)\n",
")\n"
]
}
],
"source": [
"from mxnet.gluon import nn\n",
"\n",
"net = nn.Sequential()\n",
"\n",
"net.add(nn.Dense(64, # Dense layer-1 with 64 units\n",
"# in_units=3, # Input size of 3 is expected\n",
" activation='tanh'), # Tanh activation is applied\n",
" nn.Dropout(.4), # Apply random 40% drop-out to layer_1\n",
" \n",
" nn.Dense(64, # Dense layer-2 with 64 units \n",
" activation='tanh'), # Tanh activation is applied\n",
" \n",
" nn.Dropout(.3), # Apply random 30% drop-out to layer_2\n",
" \n",
" nn.Dense(1)) # Output layer with single unit\n",
"\n",
"print(net)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We first randomly initialize the weights parameters of the network with the `initialize()` function. Using these weights as a start, we can later apply optimization such as SGD to train the weights. As a result, using a strategic technique to initialize the weights is crucial. \n",
"\n",
"Here is a full list of [Initializers](https://mxnet.apache.org/api/python/docs/api/initializer/index.html). The commonly used one is called *Xavier initilaization*, which can keep the scale of gradients roughly the same in all the layers. (Here are more technical details of [Xavier initilaization](https://d2l.ai/chapter_multilayer-perceptrons/numerical-stability-and-init.html#xavier-initialization).) Let's use it in our implementation."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from mxnet import init\n",
"\n",
"net.initialize(init=init.Xavier())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can easily access them with `net[layer_index]`:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dense(None -> 64, Activation(tanh))\n",
"Dropout(p = 0.4, axes=())\n",
"Dense(None -> 64, Activation(tanh))\n",
"Dropout(p = 0.3, axes=())\n",
"Dense(None -> 1, linear)\n"
]
}
],
"source": [
"print(net[0])\n",
"print(net[1])\n",
"print(net[2])\n",
"print(net[3])\n",
"print(net[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Loss Functions\n",
"(Go to top)\n",
"\n",
"We can select [loss functions](https://d2l.ai/chapter_linear-networks/linear-regression.html#loss-function) according to our problem. A full list of supported `Loss` functions in Gluon are available [here](https://mxnet.incubator.apache.org/api/python/docs/api/gluon/loss/index.html). \n",
"\n",
"Let's go over some popular loss functions and see how to call a built-in loss function:\n",
"\n",
"\n",
"__Binary Cross-entropy Loss:__ A common used loss function for binary classification. \n",
"\n",
"```python\n",
"from mxnet.gluon.loss import SigmoidBinaryCrossEntropyLoss\n",
"loss = SigmoidBinaryCrossEntropyLoss()\n",
"```\n",
"\n",
"__Categorical Cross-entropy Loss:__ A common used loss function for multi-class classification. \n",
"\n",
"```python\n",
"from mxnet.gluon.loss import SoftmaxCrossEntropyLoss\n",
"loss = SoftmaxCrossEntropyLoss()\n",
"```\n",
"\n",
"__L2 Loss:__ A most common used loss function for regression problems. \n",
"\n",
"```python\n",
"from mxnet.gluon.loss import L2Loss\n",
"loss = L2Loss()\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Training\n",
"(Go to top)\n",
"\n",
"`mxnet.gluon.Trainer()` module provides necessary training algorithms for neural networks. We can use the following `Trainer` to train a network using [Stochastic Gradient Descent (SGD)](https://d2l.ai/chapter_optimization/sgd.html) method and learning rate of 0.001.\n",
"\n",
"```python\n",
"from mxnet import gluon\n",
"\n",
"trainer = gluon.Trainer(net.collect_params(),\n",
" 'sgd', \n",
" {'learning_rate': 0.001}\n",
" )\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Example - Binary Classification\n",
"(Go to top)\n",
"\n",
"In this example, we will train a neural network on a dataset that we randomly generated. We will have two classes and train a neural network to classify them."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import make_circles\n",
"\n",
"X, y = make_circles(n_samples=750, shuffle=True, random_state=42, noise=0.05, factor=0.3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First let's plot the simulated dataset."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mDRpEp544gnzvqtWrcK7776LixcvQpIkfPbZZ2jdujU+//xzLF++HL///juaNWuG+++/HwkJCZg1a5Z5nx9//BHp6en45ptvkJubi5iYGFxzzTWYNGkSOnfubNGGLVu24N1338WJEyeg1WrRqlUr9O/fH2PGjEGLFi0AALm5uZg9eza+/vprlJWVoUePHnjrrbdU/u0SkTcxyCIiIiJSAXOyiIiIiFTg10HW7t278dhjj6F///7o2rUrhg4dim3btjmdli3LMtatW4cbb7wR11xzDe6991589913jXPRREREFBT8OsjatGkTIiIiMGPGDKxevRr9+/fHc889h9dff93hcevXr8eKFSswduxYrF27Fs2bN8e4ceNw+vTpRrpyIiIiCnR+nZOVn59vVbzvueeew65du/D1119Do7GOIauqqnD99dfjwQcfxFNPPQXAOL16wIAB6N+/P+bOndsYl05EREQBzq97smxVR+7QoQNKS0tRXl5u85hvvvkGpaWlSElJMW/T6XS47bbbsHfvXtWulYiIiIKLXwdZthw5cgQtW7a0mMJd38mTJwEAycnJFtvbtm2L7OxsVFZWqn6NREREFPgCKsj63//+h127dmHcuHF29ykuLoZOp0NYWJjFdr1eD1mWUVRUpPZlEhERURAImCDr3LlzePLJJ9GzZ0+MHj26ya7Dj1PciIiIyIsCYlmd4uJijB8/HnFxcVi5cqXNhHcTvV6P6upqVFVVWfRmFRcXQxAExMbGenQtgiCguLgCoih5dB5/otVqoNdHsN1Bgu1mu4MB2x1c7Y6NjXAYO7jL74OsyspKTJgwASUlJXjvvfcQExPjcH9TLtapU6dw1VVXmbefPHkSBoMB4eHhHl+TKEqorQ2eF6cJ2x1c2O7gwnYHl2Brt1qDUH49XFhbW4upU6fi5MmT2LBhA1q2bOn0mGuvvRbR0dHYvXu3eVtNTQ0+/vhj8yKuRERERJ7y656sF154AV988QVmzJiB0tJSi6rtHTt2hE6nw5gxY5CdnY1PPvkEABAWFoYJEyZg5cqVSEhIQLt27bB582YUFhYiNTW1iVpCREREgcavg6ysrCwAwKJFi6we++yzz9C6dWtIkgRRFC0eGz9+PGRZxsaNG5Gfn48OHTogPT0dbdq0aZTrJiIiosDn1xXffVVBQVlQjWWHhGgQHx/FdgcJtpvt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oWR4/8NcAKDNy4X+0VRI8QnGWYp2FrmWomOA0FBEvPtv8/aI1SudLjBd27sP0Lo15LNnXV42yJ7iN98FZBn6h8fYnVnpiBwXB6Gw0PyzlGSwWW3dXOfMyVAv1xok8i6/DrIOHz6MmTMvrfO1b98+7NtnrEz9yy+/mLeLogipwRDD8uXLsXDhQsyZMwe1tbXo27cv0tLSWO2dSAmtFrV9+7uds+H0Qx/uJZkL+ZdmHtpcU0+WoSktAUpLLI6rP+RoN9DSaoFXXwVGjLA+t+n5G7Sh4bb61yIlGVBzfV9jtXQ3F34uTn8L0GicV1vnWoNETcKv1y70VcG25lOwrnXFdnvWbvOyN4DNgAVwL9CSBQFSXDwQHg5tTr019ZIMECorIRTkOwx88o8csxlsmNpd+uY7iJj5rOV6ffEJEACLhZylhAQI+fmAnaDGFNCF7dgK/aOprrfRwbXa485ag3yds93BgGsXElFAsbesi2RohcphIxD+/laHyfH2CLIMbUE+CrdlAFqtuZcHkoS4u+90fFz2WYQeOuBwmZiaO4ei4vaB1uv1AVbbdLt3WrevwZCeq0OnnvQ8ca1BosbFIIuImoyjD/3ytLmIXLoAUa8sdevcmtyLqBp+abZy2I6tyo5TkpRvZ72+htuUBDWuDp3ay7tSjGsNEjUaBllE1LTsfehrtajpdyPgZpDVsIeoyWbYOQtqnOVLyTJKp82ClNyWPU9EfiYoSzgQkX8w9fLILiwsVn+haFfOZe+4xmAaOpWSkiy2S0kGFG98GxXPzEDV8JHGYI0BFpHfYE8WEfkuR708df+3mNHnKF/Jx2fYMV+KKPCwJ4uIfJq9Xh45IQFSfLzFNmdFUR32GLlQTFU1dUOL7LUiCgzsySIin2e3lwfWM/qcBSbsMSKixsIgi4j8g8IZfZ6ci4jImzhcSERERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKSCkKa+AE9kZWVhx44dOHr0KE6fPo0HH3wQc+bMcXrcmTNncMstt1ht79KlC7Zs2aLGpRIREVGQ8esga9++ffj555/RvXt3FBUVuXz8U089hZ49e5p/joqK8ublERERURDz6yBr2rRpmDFjBgDg8OHDLh9/+eWXo2vXrl6+KiIiIiI/z8nSaPz68omIiCiA+XVPlqfmzp2LJ598EnFxcbjlllvwzDPPIC4uzuPzarXBFfyZ2st2Bwe2m+0OBmx3cLVbENQ5b1AGWTqdDvfffz/69u0LvV6Po0ePYs2aNTh27Bi2bt2K0NBQj86v10d46Ur9C9sdXNju4MJ2B5dgbbe3+VSQVVJSggsXLjjdr02bNtDpdG4/T4sWLTB37lzzzz169MCVV16JCRMm4JNPPsHAgQPdPjcAFBdXQBQlj87hT7RaDfT6CLY7SLDdbHcwYLuDq92xsRGqpCD5VJC1Z88epKWlOd1v165daNu2rVef+4YbbkBkZCSOHz/ucZAlihJqa4PnxWnCdgcXtju4sN3BJdjaLcvqnNengqyRI0di5MiRTX0ZRERERB4Lrsw2B7744guUl5fj6quvbupLISIiogDgUz1Zrjp79ix++OEHAEBFRQX+/PNP7NmzBwAwYMAA834dO3bEXXfdhQULFgAAFi1aBEEQ0LVrV+j1enz//fdYu3YtOnfujFtvvbXxG0JEREQBx6+DrMOHD2PmzJnmn/ft24d9+/YBAH755RfzdlEUIUmXxpbbtm2LzZs3Y8uWLaisrETLli0xYsQITJ48GSEhfv0rISIiIh8hyLJa6V7Bq6CgLKgSBkNCNIiPj2K7gwTbzXYHA7Y7uNqdkBClSm0w5mQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqSCkqS/AXaIoYuPGjfjyyy/x22+/QZZltG/fHlOmTMF1113n9PiSkhIsXLgQn376KWpqatCvXz+kpaWhRYsWjXD1REREFOj8tiersrIS69atQ6dOnbB48WK8/PLLiI2NxejRo3Hw4EGnx0+dOhVZWVmYO3cuXn75ZZw6dQrjx49HbW1tI1w9ERERBTq/7ckKDw/Hp59+itjYWPO2Pn36YPDgwXjjjTfQu3dvu8d+++232L9/P9LT09G3b18AwBVXXIGBAwfi448/xsCBA1W/fiIiIgpsftuTpdVqLQIs07b27dvjwoULDo/du3cv9Ho9+vTpY96WnJyMDh06YO/evapcLxEREQUXv+3JsqW2thZHjx5Ft27dHO538uRJXHHFFRAEwWJ7cnIyTp486fF1xMZGQJY9Po3fMP0a2e7gwHaz3cGA7Q6udms0gvOd3BBQQdaGDRtw/vx5jB071uF+xcXFiImJsdoeGxuLY8eOeXwdGo3fdhB6hO0OLmx3cGG7g0uwttvbfCrIKikpcTrUBwBt2rSBTqez2JaVlYWVK1di4sSJ6Ny5s1qXSERERKSITwVZe/bsQVpamtP9du3ahbZt25p/Pn78OJ544gkMHjwYkyZNcnq8Xq/HuXPnrLYXFRVZ5XkRERERucOngqyRI0di5MiRLh3zxx9/YPz48fj73/+O+fPnKzomOTkZBw8ehCzLFnlZp06dQrt27Vx6fiIiIiJb/HrQ9cKFCxg3bhySkpKwYsUKhIaGKjquf//+KCoqsqinderUKfz444/o37+/WpdLREREQUSQZf+cP1BZWYl7770Xp0+fxssvv4yEhATzYzqdDh07djT/3LFjR9x1111YsGCBeVtqaipOnDiB6dOnIywsDMuWLYNGo8H27dsREuJTHXxERETkh/w2msjNzcXPP/8MAHjssccsHmvVqhU+//xz88+iKEKSJIt9li9fjoULF2LOnDmora1F3759kZaWxgCLiIiIvMJve7KIiIiIfJlf52QRERER+SoGWUREREQqYJBFREREpAIGWUREREQqYJBFREREpAIGWUREREQqYFEoN4miiI0bN+LLL7/Eb7/9BlmW0b59e0yZMgXXXXed0+NLSkqwcOFCfPrpp6ipqUG/fv2QlpaGFi1aNMLVeyYrKws7duzA0aNHcfr0aTz44IOYM2eO0+POnDmDW265xWp7ly5dsGXLFjUu1avcbTfg3/cbAD7//HMsX74cp06dgsFgwCOPPIK7777b4TH+dL9PnDiB+fPn49tvv0VUVBSGDh2KqVOnWi1E35Asy1i/fj3eeecd5Ofno0OHDpg5cya6du3aOBfuIXfbffPNN+Ps2bNW27///nuEhYWpdble8ccffyA9PR1Hjx7Fr7/+iuTkZGRmZjo9zt/vtbvt9ud7DQC7d+9GRkYGjh8/juLiYlx++eV46KGHcPfdd1ssq9eQt+43gyw3VVZWYt26dRg2bBjGjx8PjUaDLVu2YPTo0UhPT0fv3r0dHj916lT89ttvmDt3LsLCwrB8+XKMHz/eLyrO79u3Dz///DO6d++OoqIil49/6qmn0LNnT/PPUVFR3rw81XjSbn++3//73/8wadIkjBgxArNmzcKhQ4cwe/ZsREVFYcCAAU6P9/X7XVRUhDFjxuCvf/0rVq5cifPnz2PRokWorKx0GkSvX78eK1aswDPPPIP27dvj3//+N8aNG4cPP/wQbdq0aaQWuMeTdgPAHXfcgXHjxllscxac+YJff/0VX331Fbp06QJJkqC0VKQ/32vA/XYD/nuvAWDTpk1o1aoVZsyYgfj4eBw4cADPPfcczp07h0mTJtk9zmv3Wya31NbWyoWFhVbbBgwYIE+YMMHhsd98843crl07ed++feZtJ06ckNu3by/v3LlTlev1JlEUzf++6aab5BdeeEHRcadPn5bbtWsn7969W61LU5W77fb3+z1u3Dj53nvvtdj21FNPySkpKQ6P85f7vWbNGrlr165yQUGBedu7774rd+jQQT537pzd4yorK+Vrr71W/uc//2neVlVVJd90003y888/r+IVe4e77ZZl117/vqb++3j69OnyoEGDnB7j7/dalt1rtyz7972WZVnOy8uz2paWliZfe+21Fr+T+rx5v5mT5SatVovY2Firbe3bt8eFCxccHrt3717o9Xr06dPHvC05ORkdOnTA3r17Vbleb9JogvNl4267/fl+V1dX4/Dhw1Y9VgMHDsSJEydw5syZJroy79m7dy969+6NuLg487aUlBRIkoSsrCy7x33zzTcoLS1FSkqKeZtOp8Ntt93m8/cVcL/d/s6d97G/32sgeP9u11/X2KRDhw4oLS1FeXm5zWO8eb+D87euktraWhw9ehTJyckO9zt58iSuuOIKq/Hg5ORknDx5Us1L9Alz585Fhw4d0Lt3b6Sl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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"def plot_dataset(X, y, title):\n",
" \n",
" # Activate Seaborn visualization\n",
" sns.set()\n",
" \n",
" # Plot both classes: Class1->Blue, Class2->Red\n",
" plt.scatter(X[y==1, 0], X[y==1, 1], c='blue', label=\"class 1\")\n",
" plt.scatter(X[y==0, 0], X[y==0, 1], c='red', label=\"class 2\")\n",
" plt.legend(loc='upper right')\n",
" plt.xlabel('x1')\n",
" plt.ylabel('x2')\n",
" plt.xlim(-2, 2)\n",
" plt.ylim(-2, 2)\n",
" plt.title(title)\n",
" plt.show()\n",
" \n",
"plot_dataset(X, y, title=\"Dataset\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we import the necessary libraries and classes."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import mxnet as mx\n",
"from mxnet import gluon, autograd\n",
"import mxnet.ndarray as nd\n",
"from mxnet.gluon.loss import SigmoidBinaryCrossEntropyLoss"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, we create the network as below. It will have two hidden layers. Since the data seems easily seperable, we can have a small network (2 hidden layers) with 10 units at each layer."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from mxnet import init\n",
"from mxnet.gluon import nn\n",
"\n",
"context = mx.cpu() # Using CPU resource; mx.gpu() will use GPU resources if available\n",
"net = nn.Sequential()\n",
"net.add(nn.Dense(10, in_units=2, activation='relu'),\n",
" nn.Dense(10, activation='relu'),\n",
" nn.Dense(1, activation='sigmoid'))\n",
"net.initialize(init=init.Xavier(), ctx=context)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's prepare the training set and validation set, and load each of them to a `DataLoader`, respectively."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# Split the dataset into two parts: 80%-20% split\n",
"X_train, X_val = X[0:int(len(X)*0.8), :], X[int(len(X)*0.8):, :]\n",
"y_train, y_val = y[:int(len(X)*0.8)], y[int(len(X)*0.8):]\n",
"\n",
"# Use Gluon DataLoaders to load the data in batches\n",
"batch_size = 4 # How many samples to use for each weight update \n",
"train_dataset = gluon.data.ArrayDataset(nd.array(X_train), nd.array(y_train))\n",
"train_loader = gluon.data.DataLoader(train_dataset, batch_size=batch_size)\n",
"\n",
"# Move validation dataset in CPU/GPU context\n",
"X_val = nd.array(X_val).as_in_context(context)\n",
"y_val = nd.array(y_val).as_in_context(context)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before the training, one last thing is to define the hyper-parameters for training."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"epochs = 50 # Total number of iterations\n",
"learning_rate = 0.01 # Learning rate\n",
"\n",
"# Define the loss. As we used sigmoid in the last layer, use from_sigmoid=True\n",
"binary_cross_loss = SigmoidBinaryCrossEntropyLoss(from_sigmoid=True)\n",
"\n",
"# Define the trainer, SGD with learning rate\n",
"trainer = gluon.Trainer(net.collect_params(),\n",
" 'sgd',\n",
" {'learning_rate': learning_rate}\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, it is the time for training! We will run through the training set 50 times (i.e., epochs) and print training and validation losses at each epoch."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[19:36:22] ../src/base.cc:79: cuDNN lib mismatch: linked-against version 8400 != compiled-against version 8101. Set MXNET_CUDNN_LIB_CHECKING=0 to quiet this warning.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0. Train_loss 0.699338 Validation_loss 0.689151 Seconds 0.483013\n",
"Epoch 9. Train_loss 0.460032 Validation_loss 0.436385 Seconds 0.376627\n",
"Epoch 19. Train_loss 0.084463 Validation_loss 0.082216 Seconds 0.312815\n",
"Epoch 29. Train_loss 0.026741 Validation_loss 0.028140 Seconds 0.368647\n",
"Epoch 39. Train_loss 0.013978 Validation_loss 0.015424 Seconds 0.335571\n",
"Epoch 49. Train_loss 0.009026 Validation_loss 0.010315 Seconds 0.411211\n"
]
}
],
"source": [
"import time\n",
"\n",
"train_losses = []\n",
"val_losses = []\n",
"for epoch in range(epochs):\n",
" start = time.time()\n",
" training_loss = 0\n",
" # Build a training loop, to train the network\n",
" for idx, (data, target) in enumerate(train_loader):\n",
"\n",
" data = data.as_in_context(context)\n",
" target = target.as_in_context(context)\n",
" \n",
" with autograd.record():\n",
" output = net(data)\n",
" L = binary_cross_loss(output, target)\n",
" training_loss += nd.sum(L).asscalar()\n",
" L.backward()\n",
" trainer.step(data.shape[0])\n",
" \n",
" # Get validation predictions\n",
" val_predictions = net(X_val)\n",
" # Calculate the validation loss\n",
" val_loss = nd.sum(binary_cross_loss(val_predictions, y_val)).asscalar()\n",
" \n",
" # Take the average losses\n",
" training_loss = training_loss / len(y_train)\n",
" val_loss = val_loss / len(y_val)\n",
" \n",
" train_losses.append(training_loss)\n",
" val_losses.append(val_loss)\n",
" \n",
" end = time.time()\n",
" # Print the losses every 10 epochs\n",
" if (epoch == 0) or ((epoch+1)%10 == 0):\n",
" print(\"Epoch %s. Train_loss %f Validation_loss %f Seconds %f\" % \\\n",
" (epoch, training_loss, val_loss, end-start))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see the training and validation loss plots below. Losses go down as the training process continues as expected."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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lptm6a9Dn89XNubz+fj3v/99ym1HRUURGxvLihUryo2///775R5bLBZGjRrFF198wZYtWyps59ihMKjYj5CQENq1a4fP58Plcp2yJhE5Ne0JEpEq++ijj/j+++8rjF977bXceeedLF26lCuvvJIrr7wSi8XCBx98gNPp5E9/+lPZcy+44AL69+9P165diYmJYd26dXzxxRdcffXVAOzYsYPrrruO8847j/bt22OxWPjqq684dOgQF1xwwSlrbNiwIQMGDODtt9+moKCA888/v9zyxMREWrVqxVNPPUVmZiZRUVF88cUXFfbunMi4ceN4/fXX+ctf/kK3bt1YsWLFcfeA3X333SxfvpzLLruMcePG0b59e3Jzc9mwYQPLli3jxx9/BODGG2+kUaNG9O7dm4YNG5KRkcG7777LsGHDys1jEpEzpxAkIlX2n//857jjf/zjH+nQoQPvvfcezzzzDK+99ho+n48ePXrw9NNPl10jCOCaa67hm2++IS0tDafTSbNmzbjzzjvLTodv0qQJF1xwAcuWLeN///sfFouFxMREnn/+eUaNGlWpOs8//3yWLl1KZGQkw4YNK7fMZrPx6quv8thjj/Haa68RGhrKyJEjueqqq7joootOue1JkyaRnZ3NF198wfz580lNTeWNN95g0KBB5Z7XqFEjPvzwQ1566SUWLlzIf/7zH2JiYmjfvn25OUqXX345c+fO5e2336awsJAmTZpwzTXX8P/+3/+r1HsVkVMzfL/d9ysiIiJST2hOkIiIiNRLCkEiIiJSLykEiYiISL2kECQiIiL1kkKQiIiI1EsKQSIiIlIvKQSJiIhIvaSLJZ6Ez+fD662ZyyiZplFj25aK1G//Ur/9S/32L/Xbv06336ZpnPCmxr+nEHQSXq+P7OyCat+u1WoSGxuJw1GI233iO1NL9VC//Uv99i/127/Ub/86k37HxUVisVQuBOlwmIiIiNRLCkEiIiJSLykEiYiISL2kECQiIiL1kiZGi4jIcXm9Xjwed6DLCCper0FxsQWnswSPR2eI1bTf99tisWKa1bf/RiFIRETK8fl8OBzZFBXlB7qUoHTokInXqzPD/OX3/Q4Pj8Juj6v0afAnoxAkIiLlHAtAUVGxhISEVssfm7rEYjG0F8iPjvXb5/PhdJaQn58DQHR0wypvWyFIRETKeL2esgAUFWUPdDlByWo1dY0gP/ptv0NCQgHIz8+hQYPYKh8a08RoEREp4/F4gF//2IgEm2OfzeqYrxZ0e4LS09N57LHHWLVqFZGRkVx00UXceeedhISEnHCd5cuXc+211x53Wdu2bVmwYEFNlSsiUifpEJgEq+r8bAZVCMrNzWXChAm0adOGadOmkZmZyZNPPklxcTEPPfTQCdfr2rUrH3zwQbmx/Px8br75ZlJTU2u6bBEREamFgioEzZo1i4KCAqZPn05MTAxQumv24YcfZuLEiSQkJBx3vaioKJKTk8uNffzxx3i9XsaMGVPDVYuIiEhtFFRzghYvXsygQYPKAhDA6NGj8Xq9pKWlnda2PvvsM9q0aUOPHj2quUoREQl2Q4b0PeXXvHlzz3j7kyffwr333nna640d+weeffapM37d07Vy5QqGDOnL5s0b/faatUlQ7QnKyMjg0ksvLTdmt9uJj48nIyOj0ts5dOgQP/zwA7fddluVa7JaqzcnOgqcLPphL+cMbEODUEu1bluOz2Ixy32XmqV++1d199vrrRtzgV599e1yj2+99XrGjr2cc845r2ysefMWp73dY9NR7rnn/jM6M+nxx5+mQQOddVdZx/ptGOD73VUJLBajyn+jgyoEORwO7PaKH47o6Ghyc3MrvZ158+bh8XiqfCjMNA1iYyOrtI3f+/GXLOYsSueLH3fx0I0D6dQmrlq3Lydmt4cHuoR6Rf32r+rqd3GxhUOHzGr5AxNIyck9K4w1bdr0uOPHFBcXExYWVqntt2/f/ozq6tKlyxmtd6Z+G5Jr87/nb0O+12tgmibR0RGV/vc6kaAKQdVl7ty5dO3albZt21ZpO16vD4ejsJqqKtWtdSztW0SzbU8uf3kljdvH9qBn+0bV+hpSnsViYreH43AU4fHo2h41Tf32r+rut9NZcvR2Gb46dy2c376nN998jVmz3uWFF17hhReeYevWX7jpptu48spreOWVaSxbtoT9+/cRGRlFz569uP32u2jUqBGGUdrz2267ifDwCKZOfb7c9l599W3++c8n2LJlM82aNWfy5CkMGDCorIaxY//A4MFDuOuu+wD4xz/+zubNG5ky5V6mTXuW3bt30bZtInff/QCdOnUuWy8/P59nn32K77//jtDQUP7wh4ux26N56aXnWbJkxUnes7fs+4n+PR2OXKZPf560tMUUFRXTsWMSt946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l4tbbrmFfv360a9fv7I9Etdeey3XX3+9PuN+VNO9Vgjyk9TUVJYuXVqWXqF04p1pmqSkpASwsvqhZcuWtGnThgULFpQbnzdvHoMGDSIkJCRAldU+brebO++8k4yMDN54441y1/MA9dof1qxZg8vlokWLFoSEhDBgwAC++OKLcs+ZN28e7dq1o0WLFgGqsnbq3Lkz//73v8t9PfDAAwA8/PDD/O1vf9NnvIbNmzcPi8VCly5darzXmhPkJ+PHj2fmzJlMmjSJiRMnkpmZydSpUxk/fnyFPyJy+oqKivjuu++A0t3Z+fn5Zf/R9O/fn7i4OG6//XbuueceWrVqxYABA5g3bx5r167l3XffDWTptc7DDz/Mt99+y/33309+fj6rV68uW9alSxdCQkLU62o0efJkunXrRlJSEmFhYWzevJk333yTpKQkzjnnHABuu+02rr32Wv7+978zevRoli9fzmeffcZzzz0X4OprH7vdzoABA467rGvXrnTt2hVAn/FqcuONNzJgwACSkpIA+Prrr5k9ezbXXnst8fHxQM322vD5jnNpXakR6enpPProo6xatYrIyEguuugipkyZov9rqAZ79uzh7LPPPu6yf//732W/1D788EP+9a9/sW/fPtq2bctdd93F8OHD/VlqrTdixAj27t173GVff/112Z4H9bp6vP7668ybN49du3bh8/lo3rw5I0eO5MYbbyx35tLXX3/N888/z/bt22nWrBm33HILY8eODWDldcfy5cu59tprmTNnDt27dy8b12e86h577DG+//57Dhw4gNfrpU2bNowbN45rrrkGwzDKnldTvVYIEhERkXpJc4JERESkXlIIEhERkXpJIUhERETqJYUgERERqZcUgkRERKReUggSERGRekkhSEREROolhSARERGplxSCRERO08cff0xSUhLr1q0LdCkiUgW6d5iIBKWPP/647MaVx/PBBx+QnJzsv4JEpM5RCBKRoHbHHXcc907orVq1CkA1IlKXKASJSFBLTU0td9NKEZHqojlBIlJr7dmzh6SkJN58803eeecdhg8fTo8ePbj66qvZsmVLhecvW7aMK6+8kuTkZPr27cttt91Genp6hedlZmby5z//mSFDhtCtWzdGjBjB3/72N5xOZ7nnOZ1OnnjiCQYOHEhycjKTJk0iOzu7xt6viFQv7QkSkaCWn59fIVgYhkFsbGzZ408++YSCggKuvPJKSkpKmDlzJhMmTGDu3Lk0atQIgKVLl3LzzTfTokULJk+eTHFxMe+++y5XXHEFH3/8cdkht8zMTMaOHUteXh6XXXYZiYmJZGZm8sUXX1BcXExISEjZ6z722GPY7XYmT57M3r17mTFjBo888gjPP/98zTdGRKpMIUhEgtp1111XYSwkJKTcmVm7du3iyy+/JCEhASg9hDZu3Dj+9a9/lU2unjp1KtHR0XzwwQfExMQAcM4553DJJZcwbdo0nnrqKQCeffZZDh06xOzZs8sdhvu///s/fD5fuTpiYmJ46623MAwDAK/Xy8yZM8nLy6NBgwbV1gMRqRkKQSIS1B566CHatm1bbsw0yx/JP+ecc8oCEECPHj3o2bMn3333HQ888AAHDx5k06ZN3HTTTWUBCKBTp04MHjyY7777DigNMV999RXDhw8/7jykY2HnmMsuu6zcWN++fXnnnXfYu3cvnTp1OuP3LCL+oRAkIkGtR48ep5wY3bp16wpjbdq0Yf78+QDs27cPoEKYAmjXrh1LliyhsLCQwsJC8vPz6dChQ6Vqa9asWbnHdrsdAIfDUan1RSSwNDFaROQM/X6P1DG/P2wmIsFJe4JEpNbbuXNnhbEdO3bQvHlz4Nc9Ntu3b6/wvIyMDGJjY4mIiCAsLIyoqCi2bt1aswWLSFDQniARqfW++uorMjMzyx6vXbuWNWvWkJqaCkDjxo3p3Lkzn3zySblDVVu2bCEtLY1hw4YBpXt2zjnnHL799tvj3hJDe3hE6hbtCRKRoLZ48WIyMjIqjPfu3btsUnKrVq244ooruOKKK3A6nfz73/8mJiaGm266qez59957LzfffDOXX345Y8eOLTtFvkGDBkyePLnseXfddRdpaWlcc801XHbZZbRr146srCwWLFjA+++/XzbvR0RqP4UgEQlqL7744nHHn3jiCfr37w/AxRdfjGmazJgxg8OHD9OjRw/++te/0rhx47LnDx48mDfeeIMXX3yRF198EavVSr9+/fjTn/5Ey5Yty56XkJDA7NmzeeGFF5g7dy75+fkkJCSQmppKWFhYzb5ZEfErw6f9uyJSS+3Zs4ezzz6be++9lxtvvDHQ5YhILaM5QSIiIlIvKQSJiIhIvaQQJCIiIvWS5gSJiIhIvaQ9QSIiIlIvKQSJiIhIvaQQJCIiIvWSQpCIiIjUSwpBIiIiUi8pBImIiEi9pBAkIiIi9ZJCkIiIiNRL/x+vnhwO2aAkzwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"plt.plot(train_losses, label=\"Training Loss\")\n",
"plt.plot(val_losses, label=\"Validation Loss\")\n",
"plt.title(\"Loss values\")\n",
"plt.xlabel(\"Epoch\")\n",
"plt.ylabel(\"Loss\")\n",
"plt.legend()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "conda_pytorch_p39",
"language": "python",
"name": "conda_pytorch_p39"
},
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}