In [ ]:
import keras
from keras.models import Sequential
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPooling2D
from keras.callbacks import ModelCheckpoint, TensorBoard, EarlyStopping, ProgbarLogger
from keras.preprocessing.image import ImageDataGenerator

import numpy as np

In [ ]:
%pylab inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

In [ ]:
model = keras.models.load_model('models/gtsrb1/gtsrb1-last.hdf5')

In [ ]:
model.summary()

In [ ]:
gen = ImageDataGenerator(rescale=1./255)
testgen = gen.flow_from_directory('../dataset/GTSRB/Test', classes=None, target_size=(40,40), batch_size=1000, shuffle=True)
# valgen   = gen.flow_from_directory('../dataset/GTSRB/Val'  , target_size=(40,40), batch_size=100)

In [ ]:
batch = testgen.next()[0]
preds = model.predict_on_batch(batch)
preds = np.argmax(preds, axis=-1)

In [ ]:
cols = 4
for cls in range(43):
    imgs = batch[preds==cls]
    num = imgs.shape[0]
    rows = num//cols + 1
    fig = plt.figure()
    fig.suptitle('Class {:d}'.format(cls), fontsize=36)
    fig.set_size_inches((16, 16 / cols * rows))
    for j in range(num):
        plt.subplot(rows, cols, j+1)
        plt.imshow(imgs[j])
    plt.tight_layout(rect=[0, 0.03, 1, 0.95])
    plt.show()