Tutorial 2: Predicting with your model

In this tutorial we are going to show you how to run prediction using the NPU API. All you need is, a model, some data and the following line of code:

pred = npu.predict(model, x)

First, let’s get the data that we will be using for prediction. We can either pass 1 sample or multiple samples as a batch to be predicted. We will be using the FashionMNIST testing dataset for this. We can easily get this data from our global datasets on the NPU library but for the sake of teaching more closely to a real world scenario, let’s get it from torchvision package and do the required pre-processing.

import torch.nn as nn
import torchvision.datasets as dset
import os
from pathlib import Path

# Create folder to save Datasets if it doesn't exist already
CWD = os.getcwd()
DATA_PATH = CWD + '/datasets'
Path(DATA_PATH).mkdir(parents=True, exist_ok=True)

test_ds = dset.FashionMNIST(DATA_PATH, train=False, download=True)

# Get 100 samples, reshape to [N,C,H,W] and transform to numpy.
max = 100
x = test_ds.data.unsqueeze(1).numpy()[0:max]
y = test_ds.targets.numpy()[0:max]

Let’s now get the model. As we saw on the previous tutorial, we can compile the model from 4 formats and then use it for prediction. We will be using the id from one of the models trained on the previous tutorial:

trained_model = "5efdfa49e8479257197d54c0"

Note

The output of npu.train() provides you the id of the trained model and you can directly refer to this output. You can also access to the id of the trained model from your dashboard.

Now that we have the data and the model, let’s run a batch of predictions and check the accuracy of our model.

import npu
import numpy as np

npu.api(API_TOKEN)

# Get a batch of results
predictions = npu.predict(trained_model, x)

accuracy = 0
for i, result in enumerate(predictions.get_result()):
    predicted = np.argmax(result)
    if y[i] == predicted:
        accuracy+=1
print(accuracy, "correct out of", max)

Note

Use method .get_result() to retrieve the result from the cloud.

Out:

78 correct out of 100