...

Artificial Intelligence - Keras

Back to Course

Lesson Description


Lession - #934 Keras-convolution Neural Network


Allow us to change the model from MPL to Convolution Neural Network (CNN>
for our prior digit ID issue.

The core features of the model are as per the following −
  • Input layer comprises of (1, 8, 28>
    values.
  • First layer, Conv2D comprises of 32 channels and 'relu' enactment function with piece size, (3,3>
    .
  • Second layer, Conv2D comprises of 64 channels and 'relu' initiation work with piece size, (3,3>
    .
  • Thrid layer, MaxPooling has pool size of (2, 2>
    .
  • Fifth layer, Flatten is utilized to smooth all its contribution to single aspect.
  • 6th layer, Dense comprises of 128 neurons and 'relu' initiation work.
  • Seventh layer, Dropout has 0.5 as its worth.
  • Eighth and last layer comprises of 10 neurons and 'softmax' actuation work.
  • Use categorical_crossentropy as misfortune work.
  • Use Adadelta(>
    as Optimizer.
  • Use precision as measurements.
  • Utilize 128 as bunch size.
  • Utilize 20 as ages.

    Step 1 - Import the modules

    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 numpy as np

    Step 2 - Load data

    Let us import the mnist dataset.
    (x_train, y_train>
    , (x_test, y_test>
    = mnist.load_data(>

    Step 3 - Process the data

    Allow us to change the dataset as per our model, with the goal that it tends to be feed into our model.
    img_rows, img_cols = 28, 28 
    
    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 y_train = keras.utils.to_categorical(y_train, 10>
    y_test = keras.utils.to_categorical(y_test, 10>

    Step 4 - Create 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(10, activation = 'softmax'>
    >

    Step 5 - Compile the model

    model.compile(loss = keras.losses.categorical_crossentropy, 
       optimizer = keras.optimizers.Adadelta(>
    , metrics = ['accuracy']>

    Step 6 - Train the model

    model.fit(
       x_train, y_train, 
       batch_size = 128, 
       epochs = 12, 
       verbose = 1, 
       validation_data = (x_test, y_test>
    >

    Step 7 - Evaluate the model

    score = model.evaluate(x_test, y_test, verbose = 0>
    print('Test loss:', score[0]>
    print('Test accuracy:', score[1]>

    Step 8 - Predict

    At last, anticipate the digit from pictures as beneath −
    pred = model.predict(x_test>
    pred = np.argmax(pred, axis = 1>
    [:5] label = np.argmax(y_test,axis = 1>
    [:5] print(pred>
    print(label>
    The result of the above application is as per the following −
    [7 2 1 0 4] 
    [7 2 1 0 4]
    keras interview question
    keras zeropadding2d :Zero-padding layer for 2D input (e.g. picture>
    . This layer can add rows and columns of zeros at the top, bottom, left and right side of an image tensor.
    keras 1d convolution :a convolution operation is performed between the vector and the filter, producing as output a new vector with as many channels as the number of filters.