In [ ]:
import tensorflow as tf
import numpy as np
import keras
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
print(mnist.train.images.shape)
print(mnist.train.labels.shape)
Xtrain = mnist.train.images
ytrain = mnist.train.labels
Xtest = mnist.test.images
ytest = mnist.test.labels
# import matplotlib.pyplot as plt
# plt.imshow(Xtest[0].reshape(28,28), cmap='gray')
# plt.show()
img_rows, img_cols = 28, 28
Xtrain = Xtrain.reshape(Xtrain.shape[0], img_rows, img_cols, 1)
Xtest = Xtest.reshape(Xtest.shape[0], img_rows, img_cols, 1)
In [ ]:
model = keras.models.Sequential()
model.add(keras.layers.Conv2D(64, kernel_size=(3,3), input_shape=(28, 28, 1), strides=(1,1), activation='elu'))
model.add(keras.layers.Conv2D(64, kernel_size=(3,3), strides=(1,1), activation='elu'))
model.add(keras.layers.MaxPooling2D(pool_size=(3,3)))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(32, activation='elu'))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(ytrain.shape[1], activation='softmax'))
print(model.summary())
model.compile(loss=keras.losses.categorical_crossentropy, optimizer='adam', metrics=['accuracy'])
model.fit(Xtrain, ytrain, batch_size=64, epochs=20)
In [ ]:
x = model.evaluate(x=Xtest, y=ytest)
print(x)
print(model.metrics_names)