Output top 5 predicted classes in multi class classification

Here is the example MNIST kernel

the code is attached below:

arch = resnet50
sz = 28
classes = np.unique(Y_train)

data = ImageClassifierData.from_arrays(path=wd,
trn=(X_train, Y_train),
val=(X_valid, Y_valid),
classes=Y_train,
test=test_df,
tfms=tfms_from_model(arch, sz))

learn = ConvLearner.pretrained(arch, data, precompute=True)

find optimal learning rate

lrf = learn.lr_find()

learn.fit(1e-2, 2)
learn.precompute=False
learn.unfreeze()

lr = np.array([0.001, 0.0075, 0.01])

learn.fit(lr, 3, cycle_len=1, cycle_mult=2)
log_preds, y = learn.TTA()

probs = np.mean(np.exp(log_preds), 0)
accuracy_np(probs, y)

%time log_preds_test, y_test = learn.TTA(is_test=True)
probs_test = np.mean(np.exp(log_preds_test), 0)
probs_test.shape

Submission

df = pd.DataFrame(probs_test)
df.index += 1
df = df.assign(Label = df.values.argmax(axis=1))
df = df.assign(ImageId = df.index.values)
df = df.drop([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], axis=1)
df = df[[“ImageId”, “Label”]]