This post aims to designing a convolutional neural network (CNN) using Keras. We can write most of the deeplearning algoritham in 5 simple steps using Keras. The steps are like importing all the requirments, loading data, designing the model, compailing model and followed by training the model.
The Basic layers of CNN are convolution, rectification and pooling operation.
Convolution Operation:
Pooling Operation:
Rectification:
The following code is self explanetry,
Training and testing accuracy vs epoch are showin in the following figure.
The Basic layers of CNN are convolution, rectification and pooling operation.
Convolution Operation:
Pooling Operation:
Rectification:
The following code is self explanetry,
######### Step 0: Importing requirments ############
import keras  
from keras.datasets import mnist  
from keras.models import Sequential  
from keras.layers import Dense, Dropout, Flatten  
from keras.layers import Conv2D, MaxPooling2D  
from keras import backend as K
import matplotlib.pyplot as plt 
###### Step 1: Loading data and setting up training parameters## 
batch_size = 128  
num_classes = 10  
epochs = 12  
# input image dimensions  
img_rows, img_cols = 28, 28  
# the data, shuffled and split between train and test sets  
(x_train, y_train), (x_test, y_test) = mnist.load_data()  
if K.image_data_format() == 'channels_first':  
  x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)  
  x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)  
  input_shape = (1, img_rows, img_cols)  
else:  
  x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)  
  x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)  
  input_shape = (img_rows, img_cols, 1)  
x_train = x_train.astype('float32')  
x_test = x_test.astype('float32')  
x_train /= 255  
x_test /= 255  
print('x_train shape:', x_train.shape)  
print(x_train.shape[0], 'train samples')  
print(x_test.shape[0], 'test samples')  
# convert class vectors to binary class matrices  
y_train = keras.utils.to_categorical(y_train, num_classes)  
y_test = keras.utils.to_categorical(y_test, num_classes) 
####### Step 2: Designing the model############
model = Sequential()  
model.add(Conv2D(32, kernel_size=(3, 3),  
         activation='relu',  
         input_shape=input_shape))  
model.add(Conv2D(64, (3, 3), activation='relu'))  
model.add(MaxPooling2D(pool_size=(2, 2)))  
model.add(Dropout(0.25))  
model.add(Flatten())  
model.add(Dense(128, activation='relu'))  
model.add(Dropout(0.5))  
model.add(Dense(num_classes, activation='softmax'))  
##### Step 3: Compailing the Model###########
model.compile(loss=keras.losses.categorical_crossentropy,  
       optimizer=keras.optimizers.Adadelta(),  
       metrics=['accuracy'])
  
######### Step 4: Traning the Model ###########
history = model.fit(x_train, y_train,  
     batch_size=batch_size,  
     epochs=epochs,  
     verbose=1,  
     validation_data=(x_test, y_test))  
score = model.evaluate(x_test, y_test, verbose=0)  
print('Test loss:', score[0])  
print('Test accuracy:', score[1])  
print(history.history.keys())  
# summarize history for accuracy  
plt.plot(history.history['acc'])  
plt.plot(history.history['val_acc'])  
plt.title('model accuracy')  
plt.ylabel('accuracy')  
plt.xlabel('epoch')  
plt.legend(['train', 'test'], loc='upper left')  
plt.show()  
# summarize history for loss  
plt.plot(history.history['loss'])  
plt.plot(history.history['val_loss'])  
plt.title('model loss')  
plt.ylabel('loss')  
plt.xlabel('epoch')  
plt.legend(['train', 'test'], loc='upper left')  
plt.show()
Output:
('x_train shape:', (60000, 1, 28, 28))
(60000, 'train samples')
(10000, 'test samples')
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
60000/60000 [==============================] - 2s - loss: 0.3321 - acc: 0.8987 - val_loss: 0.0747 - val_acc: 0.9758
Epoch 2/12
60000/60000 [==============================] - 2s - loss: 0.1112 - acc: 0.9673 - val_loss: 0.0495 - val_acc: 0.9840
Epoch 3/12
60000/60000 [==============================] - 2s - loss: 0.0845 - acc: 0.9749 - val_loss: 0.0436 - val_acc: 0.9849
Epoch 4/12
60000/60000 [==============================] - 2s - loss: 0.0692 - acc: 0.9796 - val_loss: 0.0384 - val_acc: 0.9865
Epoch 5/12
60000/60000 [==============================] - 2s - loss: 0.0622 - acc: 0.9819 - val_loss: 0.0347 - val_acc: 0.9874
Epoch 6/12
60000/60000 [==============================] - 2s - loss: 0.0549 - acc: 0.9836 - val_loss: 0.0367 - val_acc: 0.9874
Epoch 7/12
60000/60000 [==============================] - 2s - loss: 0.0499 - acc: 0.9848 - val_loss: 0.0338 - val_acc: 0.9887
Epoch 8/12
60000/60000 [==============================] - 2s - loss: 0.0456 - acc: 0.9863 - val_loss: 0.0298 - val_acc: 0.9895
Epoch 9/12
60000/60000 [==============================] - 2s - loss: 0.0436 - acc: 0.9871 - val_loss: 0.0309 - val_acc: 0.9898
Epoch 10/12
60000/60000 [==============================] - 2s - loss: 0.0406 - acc: 0.9881 - val_loss: 0.0303 - val_acc: 0.9900
Epoch 11/12
60000/60000 [==============================] - 2s - loss: 0.0403 - acc: 0.9884 - val_loss: 0.0302 - val_acc: 0.9896
Epoch 12/12
60000/60000 [==============================] - 2s - loss: 0.0372 - acc: 0.9889 - val_loss: 0.0289 - val_acc: 0.9906
('Test loss:', 0.027463116704608184)
('Test accuracy:', 0.99209999999999998)
['acc', 'loss', 'val_acc', 'val_loss']
('Test loss:', 0.027463116704608184)
('Test accuracy:', 0.99209999999999998)
Training and testing accuracy vs epoch are showin in the following figure.
Training and testing loss vs epoch are showin in the following figure.


Nice and very informative blog, glad to learn something through you.
ReplyDeleteartificial intelligence course in noida
Good information you shared. keep posting.
ReplyDeletedata analytics courses delhi
Good information you shared. keep posting.
ReplyDeleteartificial intelligence course in noida
It is truly a well-researched content and excellent wording. I got so engaged in this material that I couldn't wait reading. I am impressed with your work and skill. Thanks.
ReplyDeleteDevOps Training in Hyderabad
Awesome article. Extremely fascinating to peruse this article. I might want to thank you for the endeavors you had made for composing this great article.
ReplyDeleteMuch obliged to you for sharing any great information and a debt of gratitude is in order for incredible endeavors…
Data Science Training in Hyderabad
Thanks for sharing this post with us.
ReplyDeleteAI Patasala Artificial Intelligence Courses
We sincerely appreciate the valuable information you have shared regarding the top CEC colleges in Hyderabad. Your insights have been extremely helpful. Thank you for providing such useful knowledge.
ReplyDeleteTop CEC colleges in Hyderabad