Keras is a high-level library that is available as part of TensorFlow. In this section, we will rebuild the same model we built earlier with TensorFlow core with Keras:
- Keras takes data in a different format, and so we must first reformat the data using
datasetslib
:
x_train_im = mnist.load_images(x_train) x_train_im, x_test_im = x_train_im / 255.0, x_test / 255.0
In the preceding code, we are loading the training images in memory before both the training and test images are scaled, which we do by dividing them by 255
.
- Then, we build the model:
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ])
- Compile the model with the
sgd
optimizer. Set the categorical entropy as theloss
function and the accuracy as a metric to test the model:
model.compile(optimizer='sgd', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
- Train the model for
5
epochs with the training set of images and labels:
model.fit(x_train_im, y_train, epochs=5) Epoch 1/5 60000/60000 [==============================] - 3s 45us/step - loss: 0.7874 - acc: 0.8095 Epoch 2/5 60000/60000 [==============================] - 3s 42us/step - loss: 0.4585 - acc: 0.8792 Epoch 3/5 60000/60000 [==============================] - 2s 42us/step - loss: 0.4049 - acc: 0.8909 Epoch 4/5 60000/60000 [==============================] - 3s 42us/step - loss: 0.3780 - acc: 0.8965 Epoch 5/5 60000/60000 [==============================] - 3s 42us/step - loss: 0.3610 - acc: 0.9012 10000/10000 [==============================] - 0s 24us/step
- Evaluate the model with the test data:
model.evaluate(x_test_im, nputil.argmax(y_test))
We get the following evaluation scores as output:
[0.33530342621803283, 0.9097]
Wow! Using Keras, we can achieve higher accuracy. We achieved approximately 90% accuracy. This is because Keras internally sets many optimal values for us so that we can quickly start building models.