{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Training a Classifier\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/borchero/pyblaze/blob/master/docs/examples/classifier.ipynb)\n", "[![Download Jupyter Notebbok](https://img.shields.io/badge/Github-Download-brightgreen)](https://github.com/borchero/pyblaze/blob/master/docs/examples/classifier.ipynb)\n", "\n", "Training a classifier on images is one of the most prominent examples showcasing what a library can do. Inspired by PyTorch’s tutorials, we want to train a convolutional neural network on the CIFAR10 dataset using the features of PyBlaze.\n", "\n", "At first, we import all libraries that we’re going to use throughout this example:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "import torchvision\n", "import torchvision.transforms as transforms\n", "import pyblaze.nn as xnn\n", "import pyblaze.nn.functional as X\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading the Data\n", "\n", "At the beginning, we load our data conveniently using torchvision. PyBlaze does not come into play yet." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Files already downloaded and verified\n", "Files already downloaded and verified\n" ] } ], "source": [ "train_val_dataset = torchvision.datasets.CIFAR10(\n", " root=\"~/Downloads/\", train=True, download=True, transform=transforms.Compose([\n", " transforms.RandomHorizontalFlip(),\n", " transforms.ToTensor()\n", " ])\n", ")\n", "test_dataset = torchvision.datasets.CIFAR10(\n", " root=\"~/Downloads/\", train=False, download=True, transform=transforms.ToTensor()\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Initializing Data Loaders\n", "\n", "First, we set aside 20% of all training data for validation. Usually, you would need to compute the sizes of the resulting subsets and then split the dataset randomly. However, using PyBlaze, you can do this more conveniently.\n", "\n", "By simply importing `pyblaze.nn`, datasets receive an additional function `random_split`. This accepts arbitrarily many floating point numbers indicating the fraction of the dataset to be randomly sampled into subsets. Note that these numbers need to add to 1." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "train_dataset, val_dataset = train_val_dataset.random_split(0.8, 0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can initialize the data loaders. Normally, you would initialize a data loader and pass the dataset to the initializer. Again, as soon as you import `pyblaze.nn`, we extend PyTorch’s native dataset with a `loader` method. The method creates a data loader while its parameters are the same as for PyTorch’s data loader initializer." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "train_loader = train_dataset.loader(batch_size=256, num_workers=4, shuffle=True)\n", "val_loader = val_dataset.loader(batch_size=2048)\n", "test_loader = test_dataset.loader(batch_size=2048)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we set the batch size for validation and testing significantly higher than for training: as we are running the model in eval mode, no gradients need to be stored and much less memory is required." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defining the Model\n", "\n", "As a model, we define a common convolutional neural network. Most importantly, defining a model for PyBlaze is no different than defining a model natively in PyTorch. However, PyBlaze provides additional functionality to make it easier working with models.\n", "\n", "A very useful layer that is introduced by PyBlaze is the `xnn.View` layer. While it is usually required to reshape the input in the `forward` method when using convolutional layers, `xnn.View` enables wrapping convolutional layers and linear layers into a single `nn.Sequential` module." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "class Model(nn.Module):\n", "\n", " def __init__(self):\n", " super().__init__()\n", "\n", " self.seq = nn.Sequential(\n", " ConvNet(3, 32),\n", " ConvNet(32, 64),\n", " ConvNet(64, 128),\n", " xnn.View(-1, 2048),\n", " nn.Linear(2048, 10)\n", " )\n", "\n", " def forward(self, x):\n", " return self.seq(x)\n", "\n", "\n", "class ConvNet(nn.Module):\n", " \n", " def __init__(self, in_channels, out_channels):\n", " super().__init__()\n", " \n", " self.conv = nn.Sequential(\n", " nn.Conv2d(in_channels, out_channels, 3, padding=1),\n", " nn.BatchNorm2d(out_channels),\n", " nn.ReLU(),\n", " nn.Conv2d(out_channels, out_channels, 3, padding=1),\n", " nn.BatchNorm2d(out_channels),\n", " nn.ReLU(),\n", " nn.MaxPool2d(2),\n", " nn.Dropout(0.25),\n", " )\n", " \n", " def forward(self, x):\n", " return self.conv(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initializing a model is as simple as for pure PyTorch modules:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "model = Model()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model has 308,394 parameters.\n" ] } ], "source": [ "print(f\"Model has {sum(p.numel() for p in model.parameters()):,} parameters.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training the Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Model training and evaluation is the core feature of PyBlaze. The code below trains the model according to the following constraints:\n", "\n", "* We train with the data from `train_loader` and evaluate the performance after every epoch with data from `val_loader`.\n", "* We train for 150 epochs (max), evaluate every 5 epochs and use early stopping with a patience of 5 evaluation steps. We simply use the default and track the validation loss.\n", "* We use `Adam` with its default parameters as optimizer and minimize the cross entropy loss.\n", "* We log the progress of each batch to the command line.\n", "* We compute the accuracy of the predictions of the validation data after every epoch.\n", "\n", "The result of this call is a history object which aggregates information about the training. This includes train losses after every batch as well as epoch. Further, it includes validation losses and validation metrics after every epoch." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "engine = xnn.MLEEngine(model)\n", "optimizer = optim.Adam(model.parameters(), lr=1e-3, weight_decay=1e-4)\n", "loss = nn.CrossEntropyLoss()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.36 it/s] loss: 1.45220, val_accuracy: 0.50680, val_loss: 1.48204\n", "Epoch 2/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.47 it/s] loss: 0.99612 \n", "Epoch 3/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.81 it/s] loss: 0.83032 \n", "Epoch 4/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.64 it/s] loss: 0.74560 \n", "Epoch 5/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.70 it/s] loss: 0.68434 \n", "Epoch 6/150:\n", "\u001b[2K [Elapsed 0:00:04 | 32.64 it/s] loss: 0.64454, val_accuracy: 0.77590, val_loss: 0.64798\n", "Epoch 7/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.65 it/s] loss: 0.60356 \n", "Epoch 8/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.30 it/s] loss: 0.56721 \n", "Epoch 9/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.20 it/s] loss: 0.54744 \n", "Epoch 10/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.16 it/s] loss: 0.52634 \n", "Epoch 11/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.72 it/s] loss: 0.50366, val_accuracy: 0.81740, val_loss: 0.53041\n", "Epoch 12/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.98 it/s] loss: 0.47945 \n", "Epoch 13/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.96 it/s] loss: 0.46435 \n", "Epoch 14/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.49 it/s] loss: 0.45264 \n", "Epoch 15/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.38 it/s] loss: 0.43764 \n", "Epoch 16/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.38 it/s] loss: 0.42418, val_accuracy: 0.83790, val_loss: 0.48021\n", "Epoch 17/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.63 it/s] loss: 0.41001 \n", "Epoch 18/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.33 it/s] loss: 0.39783 \n", "Epoch 19/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.42 it/s] loss: 0.38518 \n", "Epoch 20/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.70 it/s] loss: 0.37354 \n", "Epoch 21/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.07 it/s] loss: 0.36279, val_accuracy: 0.82470, val_loss: 0.51583\n", "Epoch 22/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.64 it/s] loss: 0.35568 \n", "Epoch 23/150:\n", "\u001b[2K [Elapsed 0:00:02 | 52.38 it/s] loss: 0.34712 \n", "Epoch 24/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.18 it/s] loss: 0.33781 \n", "Epoch 25/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.23 it/s] loss: 0.33789 \n", "Epoch 26/150:\n", "\u001b[2K [Elapsed 0:00:04 | 35.12 it/s] loss: 0.32599, val_accuracy: 0.85860, val_loss: 0.40353\n", "Epoch 27/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.04 it/s] loss: 0.31310 \n", "Epoch 28/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.22 it/s] loss: 0.31169 \n", "Epoch 29/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.33 it/s] loss: 0.30332 \n", "Epoch 30/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.02 it/s] loss: 0.29768 \n", "Epoch 31/150:\n", "\u001b[2K [Elapsed 0:00:04 | 32.99 it/s] loss: 0.29457, val_accuracy: 0.86270, val_loss: 0.40734\n", "Epoch 32/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.05 it/s] loss: 0.28917 \n", "Epoch 33/150:\n", "\u001b[2K [Elapsed 0:00:03 | 48.90 it/s] loss: 0.28505 \n", "Epoch 34/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.97 it/s] loss: 0.27621 \n", "Epoch 35/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.19 it/s] loss: 0.26834 \n", "Epoch 36/150:\n", "\u001b[2K [Elapsed 0:00:04 | 33.15 it/s] loss: 0.26322, val_accuracy: 0.85380, val_loss: 0.44287\n", "Epoch 37/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.53 it/s] loss: 0.25915 \n", "Epoch 38/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.88 it/s] loss: 0.25473 \n", "Epoch 39/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.75 it/s] loss: 0.26057 \n", "Epoch 40/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.71 it/s] loss: 0.24920 \n", "Epoch 41/150:\n", "\u001b[2K [Elapsed 0:00:04 | 32.96 it/s] loss: 0.24499, val_accuracy: 0.85930, val_loss: 0.43536\n", "Epoch 42/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.17 it/s] loss: 0.24057 \n", "Epoch 43/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.87 it/s] loss: 0.23604 \n", "Epoch 44/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.20 it/s] loss: 0.23447 \n", "Epoch 45/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.96 it/s] loss: 0.23088 \n", "Epoch 46/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.57 it/s] loss: 0.22833, val_accuracy: 0.86980, val_loss: 0.40272\n", "Epoch 47/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.16 it/s] loss: 0.22665 \n", "Epoch 48/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.92 it/s] loss: 0.22133 \n", "Epoch 49/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.30 it/s] loss: 0.22232 \n", "Epoch 50/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.13 it/s] loss: 0.22184 \n", "Epoch 51/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.80 it/s] loss: 0.21760, val_accuracy: 0.86400, val_loss: 0.42838\n", "Epoch 52/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.69 it/s] loss: 0.21549 \n", "Epoch 53/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.43 it/s] loss: 0.21098 \n", "Epoch 54/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.40 it/s] loss: 0.20790 \n", "Epoch 55/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.09 it/s] loss: 0.20619 \n", "Epoch 56/150:\n", "\u001b[2K [Elapsed 0:00:04 | 32.51 it/s] loss: 0.20051, val_accuracy: 0.87510, val_loss: 0.40508\n", "Epoch 57/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.84 it/s] loss: 0.19795 \n", "Epoch 58/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.18 it/s] loss: 0.19924 \n", "Epoch 59/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.01 it/s] loss: 0.19628 \n", "Epoch 60/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.69 it/s] loss: 0.19570 \n", "Epoch 61/150:\n", "\u001b[2K [Elapsed 0:00:04 | 33.88 it/s] loss: 0.19398, val_accuracy: 0.88240, val_loss: 0.38243\n", "Epoch 62/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.92 it/s] loss: 0.19323 \n", "Epoch 63/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.32 it/s] loss: 0.19755 \n", "Epoch 64/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.32 it/s] loss: 0.19354 \n", "Epoch 65/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.20 it/s] loss: 0.18593 \n", "Epoch 66/150:\n", "\u001b[2K [Elapsed 0:00:04 | 33.16 it/s] loss: 0.18705, val_accuracy: 0.86990, val_loss: 0.40923\n", "Epoch 67/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.13 it/s] loss: 0.17992 \n", "Epoch 68/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.34 it/s] loss: 0.18269 \n", "Epoch 69/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.79 it/s] loss: 0.18332 \n", "Epoch 70/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.06 it/s] loss: 0.18073 \n", "Epoch 71/150:\n", "\u001b[2K [Elapsed 0:00:04 | 34.35 it/s] loss: 0.18015, val_accuracy: 0.87790, val_loss: 0.39438\n", "Epoch 72/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.55 it/s] loss: 0.17447 \n", "Epoch 73/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.53 it/s] loss: 0.17418 \n", "Epoch 74/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.42 it/s] loss: 0.17548 \n", "Epoch 75/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.86 it/s] loss: 0.17303 \n", "Epoch 76/150:\n", "\u001b[2K [Elapsed 0:00:04 | 33.72 it/s] loss: 0.17062, val_accuracy: 0.85620, val_loss: 0.49162\n", "Epoch 77/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.73 it/s] loss: 0.17179 \n", "Epoch 78/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.45 it/s] loss: 0.17274 \n", "Epoch 79/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.71 it/s] loss: 0.17069 \n", "Epoch 80/150:\n", "\u001b[2K [Elapsed 0:00:03 | 51.87 it/s] loss: 0.16697 \n", "Epoch 81/150:\n", "\u001b[2K [Elapsed 0:00:04 | 33.46 it/s] loss: 0.16554, val_accuracy: 0.87900, val_loss: 0.40666\n", "Epoch 82/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.45 it/s] loss: 0.16777 \n", "Epoch 83/150:\n", "\u001b[2K [Elapsed 0:00:03 | 49.40 it/s] loss: 0.16606 \n", "Epoch 84/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.07 it/s] loss: 0.16360 \n", "Epoch 85/150:\n", "\u001b[2K [Elapsed 0:00:03 | 50.44 it/s] loss: 0.16609 \n", "Epoch 86/150:\n", "\u001b[2K [Elapsed 0:00:04 | 33.82 it/s] loss: 0.16356, val_accuracy: 0.86780, val_loss: 0.44691\n", "Early stopping after epoch 86 (patience 5).\n" ] } ], "source": [ "history = engine.train(\n", " train_loader,\n", " val_data=val_loader,\n", " epochs=150,\n", " eval_every=5,\n", " optimizer=optimizer,\n", " loss=nn.CrossEntropyLoss(),\n", " callbacks=[\n", " xnn.BatchProgressLogger(),\n", " xnn.EarlyStopping(patience=5)\n", " ],\n", " metrics={\n", " 'accuracy': X.accuracy\n", " }\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting the Losses\n", "\n", "With the information from the history object, we can plot the progress of our training. The history object always provides `batch_loss` summarizing the training losses after each batch as well as `loss` as the train losses after each epoch. Depending on additional parameters passed to the fit function, additional keys are available." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "all_losses = history.batch_loss\n", "plt.figure(dpi=150)\n", "plt.plot(range(len(all_losses)), all_losses)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In our case, we used validation and therefore there exists a `val_loss` property on the history object. Theoretically, we would also be able to plot `val_accuracy` as all metrics are recorded in the history object as well." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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zZs3l7s3IyPDu0YgKytLP/vZz9SmTRvFx8frzDPP1LRp0wL7A6uB9957Tz/60Y/UvHlzJSQkqHv37po8ebKOHTtW7l5rrWbMmKH+/fsrLS1NCQkJ6tChg6688kr985//9Lu3sLBQ//rXv3T++ecrJSVFjRs3VqdOnXTDDTfojTfeqPWfqyqCMiHOWjtd0vQq3D9F0pQq3J8hX+CoF5ztTL93hgPamQIAEFH69OmjM844Q99++60WL16sa665xu96bm6u5s2bJ2OMxowZI0lauXKlfvnLX6pTp07q3r27+vXrpz179mjRokVatGiRXnzxRY0fP75GdS1YsEA//vGPVVxcrAsuuEBdunTRunXrdNlll1W6CPfFF1/U448/rjPPPFPnn3++4uPjtXHjRr322muaN2+eli1bpt69e0uSTjvtNN1+++165ZVXlJiYqGHDhnmf06NHj1PW99FHH+nGG29UXl6ezj33XA0cOFCbNm3Sa6+9prlz5+q9997TpZdeWu59x44dU79+/ZSTk6NLL71UR44c0SeffKI777xTLpdLEyZMqN4f2Ck89thjuv/++xUTE6MBAwYoNTVVy5cv19SpUzV37lx98sknSkvztaCfNGmSnnjiCcXHx+uyyy5TamqqDh48qK+//lrbtm3TxIkTvfeOGTNGs2fPVnJysi699FI1adJE+/fv16effqqcnByNHDmyVn6marHWNsgvSRt69uxpw+XnM76w6fctsOn3LbDPfrTF2ofTrP1TE/fX/rVhqwsA0LCVlJTYjRs32o0bN9qSkpLyN7hc1p44Wve+XK4a/bk8+uijVpIdM2ZMuWuvvvqqlWQHDBjgPbdjxw67YsWKcveuXbvWNmvWzDZp0sRmZ2f7Xbv99tutJPvxxx/7nR8wYICVZHfu3Ok998MPP9iWLVtaSXbatGne8y6Xy953331WkpVk//SnP/k9a8WKFXbHjh3l6po2bZqVZAcNGlTumiSbnp5e7vzJ6svJybFpaWlWkn322Wf97n/yySetJNu+fXubl5fnPf/xxx976x45cqTNz8/3Xps7d66VZDt27FhpHWW9/PLLVpK9/fbbT3nv559/bqOiomxSUpJduXKl93x+fr4dPny4lWSHDh3qPZ+Xl2fj4+NtcnJyuT/PoqIi+8knn3iPd+zY4f0zPHLkiN+9eXl59rPPPjtlfaf8e+nQs2dPK2mDrebvyPVnKX0dkxTn+6PPLSyRWnSRvt/gPpG1Q2p7bpgqAwDgJPKPS1PTT31fpLlvt9So2anvq8SYMWP0wAMP6J133lFubq4SExO910rXIpROKZKkzp07q3PnzuWec+6552rixIn685//rI8//lg33nhjteqZPXu2Dh8+rMsuu0x33HGH93xp29UZM2Zo37595d530UUXVfi8O+64Qy+99JIyMjJ0/PhxNW3atFp1lZo1a5YOHTqkfv36+f0LuiT9+te/1owZM/TFF1/o7bff9o62lGrSpImeffZZxcfHe88NHjxYZ555ptavX69du3YFvXvSs88+K5fLpV/84he68MILvefj4+P17LPPasGCBZo7d6727t2rDh066IcfflBBQYHOOOOMcv+dY2Ji/EZEDh8+LMn93z4lJcXv3oSEBPXr1y+oP0tNRUwr04bGOa0op6BYSuniu0jHIgAAIkrHjh112WWXKTc3V++88473/KFDh/TRRx8pISFBw4cP93tPSUmJFi1apClTpujuu+/WuHHjNG7cOH388ceSpK1bt1a7nmXLlklShdNRYmNj/aYAlZWTk6OZM2fqvvvu01133eWt67vvvpO1Vtu317w5Sml9ZX/xL1UapErvc+rTp0+5X6IlqVu3bpKk7777rsb1lXWyelu1aqWrrrpKLpdLy5cv955r3769vvrqK02ePFk7dlT+u1uPHj2UmJiod999V3/961914MCBoNcfTIwchIlfK9OCYqlFV99FOhYBABBxxo4dq6VLl+r111/3/hI5c+ZMlZSUaMiQIX7/2r5v3z7dcMMNWrduXaXPy87OrnYtpb9gpqdXPIpT2b+sL1myRCNHjvT+a3aw6ypbX2V1lJ7fv39/uWvt27ev8D3JycmSpIKCghrXV1Z16n3llVc0cuRITZ06VVOnTlV6eroGDBigkSNH6tprr/Xe16RJE73wwgv6yU9+okmTJmnSpEnq1q2bBg0apLFjx+qSSy4J+s9TE4SDMEl2hIPcgmL3tKJSdCwCAESqhKbuKTp1TULNpslI0rBhw3TPPffoww8/1Pfff69WrVp5pxSV3dtgwoQJWrdunYYOHapJkyape/fuSk5OVlRUlJ5//nndfffdpWsgQyYnJ0cjRoxQVlaWHnzwQY0cOVLp6elq1KiRjDEaPXq0Zs6cGZK6Srsg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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(dpi=150)\n", "plt.plot(range(len(history.loss)), history.loss, label='Training Loss')\n", "plt.plot(np.array(range(len(history.val_loss))) * 5, history.val_loss, label='Validation Loss')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, the losses are starting to diverge and the generalization gap becomes larger starting from epoch 25. However, the lowest validation loss was obtained after epoch 61." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evaluating the Model\n", "\n", "Lastly, we want to evaluate the performance of our model. For this, we use our test data and call `evaluate` on the model. We are interested only in a single metric, the accuracy.\n", "\n", "The returned value is a dictionary which provides the metrics that were recorded. In our case, the only metric is `accuracy`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K [Elapsed 0:00:01 | 3.16 it/s] \n" ] } ], "source": [ "evaluation = engine.evaluate(\n", " test_loader,\n", " callbacks=[\n", " xnn.PredictionProgressLogger()\n", " ],\n", " metrics={\n", " 'accuracy': X.accuracy\n", " }\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Our model achieves an accuracy of 86.46%.\n" ] } ], "source": [ "print(f\"Our model achieves an accuracy of {evaluation['accuracy']:.2%}.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using GPUs\n", "\n", "As PyBlaze is a framework dedicated for large-scale machine learning, it has first-class support for GPUs. In fact, in order to run training and evaluation on a GPU, **you do not have to do anything**. In fact, if you had a GPU at your disposal when running this tutorial, you already used it. Generally, PyBlaze will use all available GPUs automatically, speeding up training as much as possible.\n", "\n", "If you have multiple GPUs and want to use a specific one, just pass `gpu=` to any of the functions above. Likewise, you can select a subset of GPUs by providing `gpu=[, , …]` or no GPU at all by using `gpu=False`.\n", "\n", "A special case is `gpu=True` which chooses a single GPU: the one with the most amount of free memory." ] } ], "metadata": { "kernelspec": { "display_name": "epn", "language": "python", "name": "epn" }, "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.3" } }, "nbformat": 4, "nbformat_minor": 4 }