When I save and load a model during the same session, I get the same accuracy as before saving, as expected. However, when I restart the kernel after saving and then load the model, accuracy will be much lower. I suspect this has to do with the randomized train/validation split, since for datasets which are split into training and validation data (i.e. CIFAR-10), I don’t have this issue.
Below is a minimal example. I’m using version 1.0.28.
from fastai import *
from fastai.vision import *
DATA_DIR = ‘path/to/planet/dataset/’
size = 224
bs = 32
np.random.seed(42)
data = ImageDataBunch.from_csv(path=Path(DATA_DIR), folder=‘train-jpg’,
csv_labels=‘train_v2.csv’,
suffix=’.jpg’, sep=’ ', size=size, ds_tfms=get_transforms(),
bs=bs)
data = data.normalize(imagenet_stats)
learn = create_cnn(data, models.resnet34, metrics=accuracy_thresh)
learn.fit_one_cycle(1)
learn.validate() # get [0.09976922, tensor(0.9611)]
learn.save(‘test’)
Successfully load the saved model
del data
del learn
np.random.seed(42)
data = ImageDataBunch.from_csv(path=Path(DATA_DIR), folder=‘train-jpg’,
csv_labels=‘train_v2.csv’,
suffix=’.jpg’, sep=’ ', size=size, ds_tfms=get_transforms(),
bs=bs)
data = data.normalize(imagenet_stats)
learn = create_cnn(data, models.resnet34, metrics=accuracy_thresh).load(‘test’)
learn.validate() # get same values as above
Now restart the kernel and try loading again
from fastai import *
from fastai.vision import *
DATA_DIR = ‘path/to/planet/dataset/’
size = 224
bs = 32
np.random.seed(42)
data = ImageDataBunch.from_csv(path=Path(DATA_DIR), folder=‘train-jpg’,
csv_labels=‘train_v2.csv’,
suffix=’.jpg’, sep=’ ', size=size, ds_tfms=get_transforms(),
bs=bs)
data = data.normalize(imagenet_stats)
learn = create_cnn(data, models.resnet34, metrics=accuracy_thresh).load(‘test’)
learn.validate() # get [1.3317215, tensor(0.7516)]