Get in touch
or send us a question?

Traffic sign recognition – 02 – Training model

  1. Create the convolutional base

As input, a CNN takes tensors of shape (image_height, image_width, color_channels), ignoring the batch size. In this example, you will configure our CNN to process inputs of shape (32, 32, 3), which is the format of CIFAR images.

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

2. Add Dense layers on top

Dense layers take vectors as input (which are 1D), while the current output is a 3D tensor. First, you will flatten (or unroll) the 3D output to 1D, then add one or more Dense layers on top

model.add(layers.Dense(64, activation='relu'))

3. Compile and train the model


history =, train_labels, epochs=10, 
                    validation_data=(test_images, test_labels))

4. Evaluate the model

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.ylim([0.5, 1])
plt.legend(loc='lower right')

test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)

Leave a Reply

Your email address will not be published. Required fields are marked *