import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras.datasets import mnist
import matplotlib.pyplot as plt
import numpy as np
(data_train,labels_train),(data_test,labels_test) = mnist.load_data()
data_train.shape
plt.imshow(data_train[5])
data_train = data_train.reshape(60000,28,28,1)
data_test = data_test.reshape(10000,28,28,1)
from tensorflow.keras.utils import to_categorical
print(labels_train[0])
labels_train = to_categorical(labels_train)
print(labels_train[0])
from tensorflow.keras.models import Sequential
# we just create a model
model = Sequential()
# add layers to it
model.add(layers.Conv2D(64,kernel_size=3,activation = 'relu', input_shape = (28,28,1)))
model.add(layers.Conv2D(32,kernel_size=3,activation='relu',kernel_regularizer = tf.keras.regularizers.l2(0.00001)))
model.add(layers.Flatten())
model.add(layers.Dense(10,activation='softmax'))
#compile the model
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(data_train,labels_train,batch_size=32 , epochs=3)
labels_test = to_categorical(labels_test)
model.evaluate(data_test,labels_test,batch_size=32)
for i in range(10):
print(np.argmax(model.predict(data_test[i:i+1]))+1, np.argmax(labels_test[i])+1)