Is there a simple function to predict results?


#1

I used Module.predict() before I use Gluon. But now when I migrate everything to Gluon I can’t find a simple API to do prediction.
How do you make prediction with Gluon package?


#2

I use the following for prediction with Gluon: Say you have defined a model mynet somehow, that takes as input some datum, say data. Predictions takes place - on a single batch - with:

with autograd.predict_mode():
    predictions = mynet(data)

this takes care of layers that have different behaviour in train/predict mode, although by default

predictions = mynet(data)

is on predict mode. You need a for loop if you want prediction for a set of points larger than a single batch.

Hope this helps.


#3

Thanks. I currently used similar method too. I didn’t notice this autograd.predict_mode(). I used something like:

for data in data_iter:
    predictions = mynet(data)

But wouldn’t it be cumbersome?


#4

Personally, I prefer the for loop solution instead of just having a predict_on_whole_data solution. The reason is that my models/data are almost never small enough so I can fit everything inside memory easily, so I need to write custom data generators etc. From that point and on, it is trivial to write a function that will include the data generator in the for loop.

This is just personal opinion and I am not involved in any way in mxnet development. Just a (very happy) user.

I am using autograd.predict_mode() for clear code reading (for other people) and peace of mind, just in case I missed something from the documentation.