Cainvas
Model Files
captcha_model.h5
keras
Model
deepSea Compiled Models
captcha_model.exe
deepSea
Ubuntu

Captcha recognition

Credit: AITS Cainvas Community

Photo by Alex Castro

This notebook uses convolutional neural networks to determine the characters in the given captcha.

A base case implementation of recognizing text in images.

Dataset

The link below contains the zipped dataset folder.

The dataset has 1070 captcha images, each with 5 characters. Each character is either a lowercase alphabet or a digit.

The filename is of each image is its corresponding text.

In [1]:
!wget -N "https://cainvas-static.s3.amazonaws.com/media/user_data/cainvas-admin/captcha.zip"
!unzip -qo captcha.zip
!rm captcha.zip
--2020-11-29 04:41:20--  https://cainvas-static.s3.amazonaws.com/media/user_data/cainvas-admin/captcha.zip
Resolving cainvas-static.s3.amazonaws.com (cainvas-static.s3.amazonaws.com)... 52.219.62.8
Connecting to cainvas-static.s3.amazonaws.com (cainvas-static.s3.amazonaws.com)|52.219.62.8|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9169027 (8.7M) [application/zip]
Saving to: ‘captcha.zip’

captcha.zip         100%[===================>]   8.74M  --.-KB/s    in 0.1s    

2020-11-29 04:41:20 (83.2 MB/s) - ‘captcha.zip’ saved [9169027/9169027]

In [2]:
import numpy as np
import matplotlib.pyplot as plt
import os
import tensorflow as tf
from PIL import Image, ImageOps
from tensorflow.keras import layers
import random

The captcha in the images contains only lowercase alphabets and digits 0-9.

In [3]:
# The set of characters in the captcha

characters = 'abcdefghijklmnopqrstuvwxyz0123456789'
print("Number of characters: ", len(characters))
Number of characters:  36
In [4]:
# total number of images in dataset

total_samples = len(os.listdir('samples'))
print("Total number of images: ", total_samples)
Total number of images:  1070

Viewing few images in the dataset.

In [5]:
num = 4    # NUmber of examples to show
fig = plt.figure()

for i, filename in enumerate(os.listdir('samples')[:num]):
    img = Image.open('samples/'+filename)
    
    ax = fig.add_subplot(num, 1, i+1)    # Adding subplot
    ax.axes.get_xaxis().set_visible(False)    # Removing x axis
    ax.axes.get_yaxis().set_visible(False)    # Removing y axis
    
    ax.imshow(img)

Preprocessing

Functions to one hot encode and decode all the characters in the captcha

In [6]:
def encode_label(label):   
    y_temp = np.zeros((5, len(characters)))     # Initializing zero array of required shape
    for k, l in enumerate(label):    
        index = characters.find(l)
        y_temp[k, index] = 1
    return y_temp

def decode_label(output):
    captcha = []
    for i in range(5):
        captcha.append(characters[np.argmax(output[i])])    # Find index of max value and map it to characters array
    return ''.join(captcha)
In [7]:
encoded = encode_label('22efd')

decoded = decode_label(encoded)

print("Encoded: ", encoded)
print("Decoded: ", decoded)
Encoded:  [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
  0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
Decoded:  22efd

Input

The input X is the numpy array representation of each image. The images have 4 channels which are reduced to 1 by converting the image to greyscale. They are then normalized so that every pixel has a value between 0 and 1.

Output

The output y has 5 arrays representing the five characters required as output. Each of these arrays has a one hot encoded array of length 36 representing the ith (1 to 5) character for each input image.

In [8]:
X, y = [], np.zeros((5, total_samples, len(characters)))
images_list = os.listdir('samples')

for i in range(total_samples):
    img = Image.open('samples/'+images_list[i])
    img = ImageOps.grayscale(img)    # Convert to greyscale
    img = np.asarray(img)/255    # Normalization; shape of img = (50,200)
    img = np.reshape(img, (img.shape[0], img.shape[1], 1))    # Adding another dimension to represent channel.
   
    label = images_list[i][:-4]    # The filename contains the captcha text.
    # One hot encoding
    y[:, i] = encode_label(label)    # Write to y array as output of ith image
   
    X.append(img)    # Appending to X
In [9]:
X = np.asarray(X)
y = np.asarray(y)

print("Shape of X: ", X.shape)
print("Shape of y: ", y.shape)
Shape of X:  (1070, 50, 200, 1)
Shape of y:  (5, 1070, 36)

Using a train-test split of 90-10

In [10]:
train_count = int(total_samples * 0.9)
test_count = total_samples-train_count

print("Images in train set: ", train_count)
print("Images in test set: ", test_count)
Images in train set:  963
Images in test set:  107
In [11]:
#Splitting the X and y arrays into train and test

xtrain, xtest = X[:train_count], X[train_count:] 
ytrain, ytest = y[:, :train_count], y[:, train_count:]

print("Train shapes: ", xtrain.shape, ytrain.shape)
print("Test shapes: ", xtest.shape, ytest.shape)
Train shapes:  (963, 50, 200, 1) (5, 963, 36)
Test shapes:  (107, 50, 200, 1) (5, 107, 36)

Model

The model has convolution and max pooling layers that branch into 5 dense networks, one for each character.

In [12]:
def create_model():
    input_layer = layers.Input(shape = xtrain[0].shape)
    
    conv1 = layers.Conv2D(8, (3, 3), padding = 'same', activation = 'relu')(input_layer)
    max1 = layers.MaxPooling2D(padding = 'same', )(conv1)
    
    conv2 =  layers.Conv2D(16, (3, 3), padding = 'same', activation = 'relu')(max1)
    max2 =  layers.MaxPooling2D(padding = 'same', )(conv2)
    
    conv3 =  layers.Conv2D(32, (3, 3), padding = 'same', activation = 'relu')(max2)
    max3 =  layers.MaxPooling2D(padding = 'same', )(conv3)
    
    batch3 =  layers.BatchNormalization()(max3)
    
    flat = layers.Flatten()(batch3)

    output_layers = []
    for _ in range(5):    # For all the 5 output characters
        dense1 = tf.keras.layers.Dense(32, activation='relu')(flat)
        drop = tf.keras.layers.Dropout(0.6)(dense1)
        dense2 = tf.keras.layers.Dense(len(characters), activation='sigmoid')(drop)
        output_layers.append(dense2)

    model = tf.keras.models.Model(input_layer, output_layers)
    model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])
    return model
In [13]:
model = create_model()
model.summary()
Model: "functional_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 50, 200, 1)] 0                                            
__________________________________________________________________________________________________
conv2d (Conv2D)                 (None, 50, 200, 8)   80          input_1[0][0]                    
__________________________________________________________________________________________________
max_pooling2d (MaxPooling2D)    (None, 25, 100, 8)   0           conv2d[0][0]                     
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 25, 100, 16)  1168        max_pooling2d[0][0]              
__________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)  (None, 13, 50, 16)   0           conv2d_1[0][0]                   
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 13, 50, 32)   4640        max_pooling2d_1[0][0]            
__________________________________________________________________________________________________
max_pooling2d_2 (MaxPooling2D)  (None, 7, 25, 32)    0           conv2d_2[0][0]                   
__________________________________________________________________________________________________
batch_normalization (BatchNorma (None, 7, 25, 32)    128         max_pooling2d_2[0][0]            
__________________________________________________________________________________________________
flatten (Flatten)               (None, 5600)         0           batch_normalization[0][0]        
__________________________________________________________________________________________________
dense (Dense)                   (None, 32)           179232      flatten[0][0]                    
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 32)           179232      flatten[0][0]                    
__________________________________________________________________________________________________
dense_4 (Dense)                 (None, 32)           179232      flatten[0][0]                    
__________________________________________________________________________________________________
dense_6 (Dense)                 (None, 32)           179232      flatten[0][0]                    
__________________________________________________________________________________________________
dense_8 (Dense)                 (None, 32)           179232      flatten[0][0]                    
__________________________________________________________________________________________________
dropout (Dropout)               (None, 32)           0           dense[0][0]                      
__________________________________________________________________________________________________
dropout_1 (Dropout)             (None, 32)           0           dense_2[0][0]                    
__________________________________________________________________________________________________
dropout_2 (Dropout)             (None, 32)           0           dense_4[0][0]                    
__________________________________________________________________________________________________
dropout_3 (Dropout)             (None, 32)           0           dense_6[0][0]                    
__________________________________________________________________________________________________
dropout_4 (Dropout)             (None, 32)           0           dense_8[0][0]                    
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 36)           1188        dropout[0][0]                    
__________________________________________________________________________________________________
dense_3 (Dense)                 (None, 36)           1188        dropout_1[0][0]                  
__________________________________________________________________________________________________
dense_5 (Dense)                 (None, 36)           1188        dropout_2[0][0]                  
__________________________________________________________________________________________________
dense_7 (Dense)                 (None, 36)           1188        dropout_3[0][0]                  
__________________________________________________________________________________________________
dense_9 (Dense)                 (None, 36)           1188        dropout_4[0][0]                  
==================================================================================================
Total params: 908,116
Trainable params: 908,052
Non-trainable params: 64
__________________________________________________________________________________________________
In [14]:
# Evaluating an untrained model.

eval = model.evaluate(xtest,[ytest[0], ytest[1], ytest[2], ytest[3], ytest[4]],verbose=1)    
4/4 [==============================] - 0s 22ms/step - loss: 17.9145 - dense_1_loss: 3.5831 - dense_3_loss: 3.5940 - dense_5_loss: 3.5859 - dense_7_loss: 3.5708 - dense_9_loss: 3.5807 - dense_1_accuracy: 0.0187 - dense_3_accuracy: 0.0000e+00 - dense_5_accuracy: 0.0187 - dense_7_accuracy: 0.0374 - dense_9_accuracy: 0.0841 

Training the model

Since the model has 5 different dense networks, one for each character, the y parameter of the model.fit() method is given a list of 5 arrays.

Training the model for 128 epochs.

In [15]:
 history = model.fit(xtrain, [ytrain[0], ytrain[1], ytrain[2], ytrain[3], ytrain[4]], batch_size=32, epochs=128, verbose=1)
Epoch 1/128
31/31 [==============================] - 3s 86ms/step - loss: 17.8460 - dense_1_loss: 3.5904 - dense_3_loss: 3.5594 - dense_5_loss: 3.5644 - dense_7_loss: 3.5907 - dense_9_loss: 3.5410 - dense_1_accuracy: 0.0405 - dense_3_accuracy: 0.0384 - dense_5_accuracy: 0.0706 - dense_7_accuracy: 0.0436 - dense_9_accuracy: 0.0488
Epoch 2/128
31/31 [==============================] - 3s 91ms/step - loss: 17.0846 - dense_1_loss: 3.4439 - dense_3_loss: 3.4391 - dense_5_loss: 3.4428 - dense_7_loss: 3.4163 - dense_9_loss: 3.3425 - dense_1_accuracy: 0.0748 - dense_3_accuracy: 0.0550 - dense_5_accuracy: 0.0582 - dense_7_accuracy: 0.0467 - dense_9_accuracy: 0.0633
Epoch 3/128
31/31 [==============================] - 3s 87ms/step - loss: 16.4504 - dense_1_loss: 3.2999 - dense_3_loss: 3.2769 - dense_5_loss: 3.3354 - dense_7_loss: 3.3354 - dense_9_loss: 3.2027 - dense_1_accuracy: 0.0924 - dense_3_accuracy: 0.0810 - dense_5_accuracy: 0.0717 - dense_7_accuracy: 0.0540 - dense_9_accuracy: 0.0841
Epoch 4/128
31/31 [==============================] - 3s 88ms/step - loss: 15.8506 - dense_1_loss: 3.1568 - dense_3_loss: 3.1245 - dense_5_loss: 3.2359 - dense_7_loss: 3.2433 - dense_9_loss: 3.0901 - dense_1_accuracy: 0.0935 - dense_3_accuracy: 0.1018 - dense_5_accuracy: 0.0592 - dense_7_accuracy: 0.0706 - dense_9_accuracy: 0.0966
Epoch 5/128
31/31 [==============================] - 3s 86ms/step - loss: 15.2391 - dense_1_loss: 3.0025 - dense_3_loss: 2.9882 - dense_5_loss: 3.1477 - dense_7_loss: 3.1384 - dense_9_loss: 2.9623 - dense_1_accuracy: 0.1080 - dense_3_accuracy: 0.1111 - dense_5_accuracy: 0.0675 - dense_7_accuracy: 0.0696 - dense_9_accuracy: 0.1070
Epoch 6/128
31/31 [==============================] - 3s 87ms/step - loss: 14.5535 - dense_1_loss: 2.8790 - dense_3_loss: 2.8243 - dense_5_loss: 2.9965 - dense_7_loss: 3.0127 - dense_9_loss: 2.8410 - dense_1_accuracy: 0.1329 - dense_3_accuracy: 0.1578 - dense_5_accuracy: 0.0872 - dense_7_accuracy: 0.0914 - dense_9_accuracy: 0.1194
Epoch 7/128
31/31 [==============================] - 3s 86ms/step - loss: 14.0478 - dense_1_loss: 2.7266 - dense_3_loss: 2.6916 - dense_5_loss: 2.9096 - dense_7_loss: 2.9536 - dense_9_loss: 2.7665 - dense_1_accuracy: 0.1568 - dense_3_accuracy: 0.1475 - dense_5_accuracy: 0.0955 - dense_7_accuracy: 0.1111 - dense_9_accuracy: 0.1256
Epoch 8/128
31/31 [==============================] - 3s 87ms/step - loss: 13.3394 - dense_1_loss: 2.5475 - dense_3_loss: 2.5315 - dense_5_loss: 2.7264 - dense_7_loss: 2.8177 - dense_9_loss: 2.7163 - dense_1_accuracy: 0.1693 - dense_3_accuracy: 0.1734 - dense_5_accuracy: 0.1350 - dense_7_accuracy: 0.1049 - dense_9_accuracy: 0.1506
Epoch 9/128
31/31 [==============================] - 3s 86ms/step - loss: 12.8204 - dense_1_loss: 2.4442 - dense_3_loss: 2.3986 - dense_5_loss: 2.5911 - dense_7_loss: 2.7659 - dense_9_loss: 2.6205 - dense_1_accuracy: 0.1963 - dense_3_accuracy: 0.2150 - dense_5_accuracy: 0.1516 - dense_7_accuracy: 0.1371 - dense_9_accuracy: 0.1568
Epoch 10/128
31/31 [==============================] - 3s 87ms/step - loss: 12.0907 - dense_1_loss: 2.2379 - dense_3_loss: 2.1732 - dense_5_loss: 2.4824 - dense_7_loss: 2.6716 - dense_9_loss: 2.5256 - dense_1_accuracy: 0.2430 - dense_3_accuracy: 0.2876 - dense_5_accuracy: 0.1911 - dense_7_accuracy: 0.1485 - dense_9_accuracy: 0.1578
Epoch 11/128
31/31 [==============================] - 3s 87ms/step - loss: 11.3257 - dense_1_loss: 2.0269 - dense_3_loss: 1.9895 - dense_5_loss: 2.3499 - dense_7_loss: 2.5389 - dense_9_loss: 2.4205 - dense_1_accuracy: 0.3157 - dense_3_accuracy: 0.2991 - dense_5_accuracy: 0.1963 - dense_7_accuracy: 0.1776 - dense_9_accuracy: 0.1880
Epoch 12/128
31/31 [==============================] - 3s 85ms/step - loss: 10.4682 - dense_1_loss: 1.7880 - dense_3_loss: 1.7818 - dense_5_loss: 2.1750 - dense_7_loss: 2.4820 - dense_9_loss: 2.2413 - dense_1_accuracy: 0.3988 - dense_3_accuracy: 0.3946 - dense_5_accuracy: 0.2565 - dense_7_accuracy: 0.1703 - dense_9_accuracy: 0.1963
Epoch 13/128
31/31 [==============================] - 3s 85ms/step - loss: 9.6869 - dense_1_loss: 1.5728 - dense_3_loss: 1.5966 - dense_5_loss: 2.0350 - dense_7_loss: 2.3528 - dense_9_loss: 2.1297 - dense_1_accuracy: 0.4714 - dense_3_accuracy: 0.4486 - dense_5_accuracy: 0.2814 - dense_7_accuracy: 0.1859 - dense_9_accuracy: 0.2430
Epoch 14/128
31/31 [==============================] - 3s 85ms/step - loss: 8.8640 - dense_1_loss: 1.2857 - dense_3_loss: 1.4281 - dense_5_loss: 1.8948 - dense_7_loss: 2.2560 - dense_9_loss: 1.9993 - dense_1_accuracy: 0.5182 - dense_3_accuracy: 0.4995 - dense_5_accuracy: 0.3240 - dense_7_accuracy: 0.2139 - dense_9_accuracy: 0.2793
Epoch 15/128
31/31 [==============================] - 3s 86ms/step - loss: 8.2515 - dense_1_loss: 1.1587 - dense_3_loss: 1.2984 - dense_5_loss: 1.8081 - dense_7_loss: 2.1564 - dense_9_loss: 1.8300 - dense_1_accuracy: 0.5888 - dense_3_accuracy: 0.5369 - dense_5_accuracy: 0.3645 - dense_7_accuracy: 0.2627 - dense_9_accuracy: 0.3375
Epoch 16/128
31/31 [==============================] - 3s 85ms/step - loss: 7.4411 - dense_1_loss: 0.9812 - dense_3_loss: 1.1760 - dense_5_loss: 1.6330 - dense_7_loss: 1.9916 - dense_9_loss: 1.6594 - dense_1_accuracy: 0.6511 - dense_3_accuracy: 0.5877 - dense_5_accuracy: 0.4143 - dense_7_accuracy: 0.3063 - dense_9_accuracy: 0.3988
Epoch 17/128
31/31 [==============================] - 3s 86ms/step - loss: 6.9383 - dense_1_loss: 0.8993 - dense_3_loss: 1.0916 - dense_5_loss: 1.5152 - dense_7_loss: 1.8959 - dense_9_loss: 1.5365 - dense_1_accuracy: 0.6760 - dense_3_accuracy: 0.6168 - dense_5_accuracy: 0.4548 - dense_7_accuracy: 0.3572 - dense_9_accuracy: 0.4528
Epoch 18/128
31/31 [==============================] - 3s 85ms/step - loss: 6.3612 - dense_1_loss: 0.8408 - dense_3_loss: 0.9619 - dense_5_loss: 1.3505 - dense_7_loss: 1.8029 - dense_9_loss: 1.4051 - dense_1_accuracy: 0.6739 - dense_3_accuracy: 0.6604 - dense_5_accuracy: 0.5005 - dense_7_accuracy: 0.3593 - dense_9_accuracy: 0.4974
Epoch 19/128
31/31 [==============================] - 3s 86ms/step - loss: 5.7924 - dense_1_loss: 0.7161 - dense_3_loss: 0.8564 - dense_5_loss: 1.3149 - dense_7_loss: 1.6338 - dense_9_loss: 1.2713 - dense_1_accuracy: 0.6989 - dense_3_accuracy: 0.6563 - dense_5_accuracy: 0.5057 - dense_7_accuracy: 0.4123 - dense_9_accuracy: 0.5234
Epoch 20/128
31/31 [==============================] - 3s 85ms/step - loss: 5.4072 - dense_1_loss: 0.7060 - dense_3_loss: 0.8204 - dense_5_loss: 1.1921 - dense_7_loss: 1.5514 - dense_9_loss: 1.1374 - dense_1_accuracy: 0.7352 - dense_3_accuracy: 0.7030 - dense_5_accuracy: 0.5524 - dense_7_accuracy: 0.4278 - dense_9_accuracy: 0.5992
Epoch 21/128
31/31 [==============================] - 3s 86ms/step - loss: 5.1265 - dense_1_loss: 0.6339 - dense_3_loss: 0.8161 - dense_5_loss: 1.1092 - dense_7_loss: 1.4543 - dense_9_loss: 1.1131 - dense_1_accuracy: 0.7466 - dense_3_accuracy: 0.6885 - dense_5_accuracy: 0.5566 - dense_7_accuracy: 0.4590 - dense_9_accuracy: 0.5867
Epoch 22/128
31/31 [==============================] - 3s 85ms/step - loss: 4.8534 - dense_1_loss: 0.5841 - dense_3_loss: 0.7794 - dense_5_loss: 1.1481 - dense_7_loss: 1.3351 - dense_9_loss: 1.0067 - dense_1_accuracy: 0.7632 - dense_3_accuracy: 0.6895 - dense_5_accuracy: 0.5431 - dense_7_accuracy: 0.5088 - dense_9_accuracy: 0.6189
Epoch 23/128
31/31 [==============================] - 3s 86ms/step - loss: 4.6045 - dense_1_loss: 0.5737 - dense_3_loss: 0.7221 - dense_5_loss: 1.0676 - dense_7_loss: 1.3486 - dense_9_loss: 0.8925 - dense_1_accuracy: 0.7882 - dense_3_accuracy: 0.7196 - dense_5_accuracy: 0.5981 - dense_7_accuracy: 0.5130 - dense_9_accuracy: 0.6636
Epoch 24/128
31/31 [==============================] - 3s 86ms/step - loss: 4.2917 - dense_1_loss: 0.5773 - dense_3_loss: 0.7398 - dense_5_loss: 0.9715 - dense_7_loss: 1.1342 - dense_9_loss: 0.8689 - dense_1_accuracy: 0.7767 - dense_3_accuracy: 0.7144 - dense_5_accuracy: 0.6210 - dense_7_accuracy: 0.5691 - dense_9_accuracy: 0.6511
Epoch 25/128
31/31 [==============================] - 3s 86ms/step - loss: 4.1544 - dense_1_loss: 0.5226 - dense_3_loss: 0.6785 - dense_5_loss: 0.9768 - dense_7_loss: 1.1613 - dense_9_loss: 0.8152 - dense_1_accuracy: 0.7736 - dense_3_accuracy: 0.7290 - dense_5_accuracy: 0.6199 - dense_7_accuracy: 0.5607 - dense_9_accuracy: 0.6739
Epoch 26/128
31/31 [==============================] - 3s 86ms/step - loss: 3.9304 - dense_1_loss: 0.4905 - dense_3_loss: 0.6511 - dense_5_loss: 0.9457 - dense_7_loss: 1.0263 - dense_9_loss: 0.8168 - dense_1_accuracy: 0.7913 - dense_3_accuracy: 0.7352 - dense_5_accuracy: 0.6220 - dense_7_accuracy: 0.5981 - dense_9_accuracy: 0.6968
Epoch 27/128
31/31 [==============================] - 3s 85ms/step - loss: 3.8218 - dense_1_loss: 0.4686 - dense_3_loss: 0.6212 - dense_5_loss: 0.8825 - dense_7_loss: 1.0576 - dense_9_loss: 0.7920 - dense_1_accuracy: 0.8006 - dense_3_accuracy: 0.7591 - dense_5_accuracy: 0.6386 - dense_7_accuracy: 0.5846 - dense_9_accuracy: 0.7061
Epoch 28/128
31/31 [==============================] - 3s 85ms/step - loss: 3.7012 - dense_1_loss: 0.4734 - dense_3_loss: 0.6620 - dense_5_loss: 0.8469 - dense_7_loss: 1.0105 - dense_9_loss: 0.7084 - dense_1_accuracy: 0.7985 - dense_3_accuracy: 0.7352 - dense_5_accuracy: 0.6532 - dense_7_accuracy: 0.5992 - dense_9_accuracy: 0.7331
Epoch 29/128
31/31 [==============================] - 3s 85ms/step - loss: 3.5567 - dense_1_loss: 0.4352 - dense_3_loss: 0.5795 - dense_5_loss: 0.8405 - dense_7_loss: 1.0256 - dense_9_loss: 0.6759 - dense_1_accuracy: 0.8370 - dense_3_accuracy: 0.7612 - dense_5_accuracy: 0.6636 - dense_7_accuracy: 0.5909 - dense_9_accuracy: 0.7331
Epoch 30/128
31/31 [==============================] - 3s 104ms/step - loss: 3.4316 - dense_1_loss: 0.4548 - dense_3_loss: 0.5974 - dense_5_loss: 0.7997 - dense_7_loss: 0.9131 - dense_9_loss: 0.6665 - dense_1_accuracy: 0.8152 - dense_3_accuracy: 0.7560 - dense_5_accuracy: 0.6874 - dense_7_accuracy: 0.6303 - dense_9_accuracy: 0.7227
Epoch 31/128
31/31 [==============================] - 3s 87ms/step - loss: 3.3471 - dense_1_loss: 0.4621 - dense_3_loss: 0.5666 - dense_5_loss: 0.7698 - dense_7_loss: 0.8871 - dense_9_loss: 0.6615 - dense_1_accuracy: 0.8131 - dense_3_accuracy: 0.7830 - dense_5_accuracy: 0.6999 - dense_7_accuracy: 0.6511 - dense_9_accuracy: 0.7383
Epoch 32/128
31/31 [==============================] - 3s 85ms/step - loss: 3.2504 - dense_1_loss: 0.4254 - dense_3_loss: 0.5618 - dense_5_loss: 0.7498 - dense_7_loss: 0.8653 - dense_9_loss: 0.6481 - dense_1_accuracy: 0.8069 - dense_3_accuracy: 0.7591 - dense_5_accuracy: 0.6989 - dense_7_accuracy: 0.6480 - dense_9_accuracy: 0.7414
Epoch 33/128
31/31 [==============================] - 3s 85ms/step - loss: 3.2021 - dense_1_loss: 0.3661 - dense_3_loss: 0.5592 - dense_5_loss: 0.7712 - dense_7_loss: 0.8961 - dense_9_loss: 0.6094 - dense_1_accuracy: 0.8474 - dense_3_accuracy: 0.7591 - dense_5_accuracy: 0.6937 - dense_7_accuracy: 0.6355 - dense_9_accuracy: 0.7497
Epoch 34/128
31/31 [==============================] - 3s 86ms/step - loss: 3.1061 - dense_1_loss: 0.4479 - dense_3_loss: 0.5730 - dense_5_loss: 0.7300 - dense_7_loss: 0.8095 - dense_9_loss: 0.5456 - dense_1_accuracy: 0.8120 - dense_3_accuracy: 0.7529 - dense_5_accuracy: 0.7144 - dense_7_accuracy: 0.6698 - dense_9_accuracy: 0.7778
Epoch 35/128
31/31 [==============================] - 3s 86ms/step - loss: 2.9531 - dense_1_loss: 0.3864 - dense_3_loss: 0.5537 - dense_5_loss: 0.6669 - dense_7_loss: 0.7511 - dense_9_loss: 0.5950 - dense_1_accuracy: 0.8276 - dense_3_accuracy: 0.7736 - dense_5_accuracy: 0.7310 - dense_7_accuracy: 0.6999 - dense_9_accuracy: 0.7394
Epoch 36/128
31/31 [==============================] - 3s 85ms/step - loss: 2.8760 - dense_1_loss: 0.3620 - dense_3_loss: 0.4784 - dense_5_loss: 0.7110 - dense_7_loss: 0.7893 - dense_9_loss: 0.5353 - dense_1_accuracy: 0.8505 - dense_3_accuracy: 0.8120 - dense_5_accuracy: 0.7020 - dense_7_accuracy: 0.6874 - dense_9_accuracy: 0.7715
Epoch 37/128
31/31 [==============================] - 3s 86ms/step - loss: 2.9292 - dense_1_loss: 0.3987 - dense_3_loss: 0.5394 - dense_5_loss: 0.6863 - dense_7_loss: 0.7735 - dense_9_loss: 0.5313 - dense_1_accuracy: 0.8266 - dense_3_accuracy: 0.7747 - dense_5_accuracy: 0.7113 - dense_7_accuracy: 0.6906 - dense_9_accuracy: 0.7664
Epoch 38/128
31/31 [==============================] - 3s 86ms/step - loss: 2.8609 - dense_1_loss: 0.4131 - dense_3_loss: 0.5236 - dense_5_loss: 0.6612 - dense_7_loss: 0.7399 - dense_9_loss: 0.5230 - dense_1_accuracy: 0.8089 - dense_3_accuracy: 0.7757 - dense_5_accuracy: 0.7290 - dense_7_accuracy: 0.6843 - dense_9_accuracy: 0.7809
Epoch 39/128
31/31 [==============================] - 3s 85ms/step - loss: 2.8389 - dense_1_loss: 0.3450 - dense_3_loss: 0.5312 - dense_5_loss: 0.7101 - dense_7_loss: 0.7503 - dense_9_loss: 0.5023 - dense_1_accuracy: 0.8598 - dense_3_accuracy: 0.7767 - dense_5_accuracy: 0.7175 - dense_7_accuracy: 0.6750 - dense_9_accuracy: 0.8131
Epoch 40/128
31/31 [==============================] - 3s 85ms/step - loss: 2.7607 - dense_1_loss: 0.3211 - dense_3_loss: 0.5174 - dense_5_loss: 0.7169 - dense_7_loss: 0.6930 - dense_9_loss: 0.5122 - dense_1_accuracy: 0.8557 - dense_3_accuracy: 0.7902 - dense_5_accuracy: 0.7155 - dense_7_accuracy: 0.7165 - dense_9_accuracy: 0.7861
Epoch 41/128
31/31 [==============================] - 3s 85ms/step - loss: 2.6896 - dense_1_loss: 0.3005 - dense_3_loss: 0.4766 - dense_5_loss: 0.6939 - dense_7_loss: 0.7215 - dense_9_loss: 0.4972 - dense_1_accuracy: 0.8764 - dense_3_accuracy: 0.7965 - dense_5_accuracy: 0.7051 - dense_7_accuracy: 0.6719 - dense_9_accuracy: 0.7913
Epoch 42/128
31/31 [==============================] - 3s 85ms/step - loss: 2.6796 - dense_1_loss: 0.3510 - dense_3_loss: 0.4639 - dense_5_loss: 0.6433 - dense_7_loss: 0.7119 - dense_9_loss: 0.5095 - dense_1_accuracy: 0.8380 - dense_3_accuracy: 0.7861 - dense_5_accuracy: 0.7373 - dense_7_accuracy: 0.6760 - dense_9_accuracy: 0.7882
Epoch 43/128
31/31 [==============================] - 3s 85ms/step - loss: 2.7055 - dense_1_loss: 0.3391 - dense_3_loss: 0.5111 - dense_5_loss: 0.6546 - dense_7_loss: 0.6821 - dense_9_loss: 0.5187 - dense_1_accuracy: 0.8525 - dense_3_accuracy: 0.7985 - dense_5_accuracy: 0.7165 - dense_7_accuracy: 0.6989 - dense_9_accuracy: 0.7715
Epoch 44/128
31/31 [==============================] - 3s 85ms/step - loss: 2.6045 - dense_1_loss: 0.3246 - dense_3_loss: 0.5023 - dense_5_loss: 0.6436 - dense_7_loss: 0.6519 - dense_9_loss: 0.4821 - dense_1_accuracy: 0.8442 - dense_3_accuracy: 0.7965 - dense_5_accuracy: 0.7508 - dense_7_accuracy: 0.7310 - dense_9_accuracy: 0.7861
Epoch 45/128
31/31 [==============================] - 3s 86ms/step - loss: 2.4756 - dense_1_loss: 0.3317 - dense_3_loss: 0.4508 - dense_5_loss: 0.5805 - dense_7_loss: 0.6685 - dense_9_loss: 0.4442 - dense_1_accuracy: 0.8474 - dense_3_accuracy: 0.8141 - dense_5_accuracy: 0.7653 - dense_7_accuracy: 0.7259 - dense_9_accuracy: 0.8100
Epoch 46/128
31/31 [==============================] - 3s 87ms/step - loss: 2.5740 - dense_1_loss: 0.3372 - dense_3_loss: 0.4917 - dense_5_loss: 0.6252 - dense_7_loss: 0.6244 - dense_9_loss: 0.4956 - dense_1_accuracy: 0.8557 - dense_3_accuracy: 0.7902 - dense_5_accuracy: 0.7310 - dense_7_accuracy: 0.7300 - dense_9_accuracy: 0.8006
Epoch 47/128
31/31 [==============================] - 3s 86ms/step - loss: 2.5120 - dense_1_loss: 0.3037 - dense_3_loss: 0.4790 - dense_5_loss: 0.6443 - dense_7_loss: 0.6344 - dense_9_loss: 0.4505 - dense_1_accuracy: 0.8712 - dense_3_accuracy: 0.7975 - dense_5_accuracy: 0.7404 - dense_7_accuracy: 0.7414 - dense_9_accuracy: 0.8110
Epoch 48/128
31/31 [==============================] - 3s 86ms/step - loss: 2.5739 - dense_1_loss: 0.3321 - dense_3_loss: 0.4579 - dense_5_loss: 0.6498 - dense_7_loss: 0.6733 - dense_9_loss: 0.4608 - dense_1_accuracy: 0.8525 - dense_3_accuracy: 0.7934 - dense_5_accuracy: 0.7269 - dense_7_accuracy: 0.7072 - dense_9_accuracy: 0.8006
Epoch 49/128
31/31 [==============================] - 3s 85ms/step - loss: 2.4388 - dense_1_loss: 0.3632 - dense_3_loss: 0.4129 - dense_5_loss: 0.5865 - dense_7_loss: 0.6158 - dense_9_loss: 0.4605 - dense_1_accuracy: 0.8401 - dense_3_accuracy: 0.8245 - dense_5_accuracy: 0.7664 - dense_7_accuracy: 0.7259 - dense_9_accuracy: 0.8048
Epoch 50/128
31/31 [==============================] - 3s 86ms/step - loss: 2.4554 - dense_1_loss: 0.3326 - dense_3_loss: 0.4160 - dense_5_loss: 0.6194 - dense_7_loss: 0.6268 - dense_9_loss: 0.4606 - dense_1_accuracy: 0.8525 - dense_3_accuracy: 0.8183 - dense_5_accuracy: 0.7466 - dense_7_accuracy: 0.7331 - dense_9_accuracy: 0.7965
Epoch 51/128
31/31 [==============================] - 3s 85ms/step - loss: 2.5328 - dense_1_loss: 0.3262 - dense_3_loss: 0.4845 - dense_5_loss: 0.5800 - dense_7_loss: 0.6796 - dense_9_loss: 0.4626 - dense_1_accuracy: 0.8640 - dense_3_accuracy: 0.7954 - dense_5_accuracy: 0.7674 - dense_7_accuracy: 0.6978 - dense_9_accuracy: 0.8027
Epoch 52/128
31/31 [==============================] - 3s 85ms/step - loss: 2.3843 - dense_1_loss: 0.3332 - dense_3_loss: 0.4595 - dense_5_loss: 0.5566 - dense_7_loss: 0.5999 - dense_9_loss: 0.4351 - dense_1_accuracy: 0.8525 - dense_3_accuracy: 0.8037 - dense_5_accuracy: 0.7736 - dense_7_accuracy: 0.7425 - dense_9_accuracy: 0.8141
Epoch 53/128
31/31 [==============================] - 3s 85ms/step - loss: 2.3646 - dense_1_loss: 0.3215 - dense_3_loss: 0.4285 - dense_5_loss: 0.5776 - dense_7_loss: 0.6036 - dense_9_loss: 0.4334 - dense_1_accuracy: 0.8660 - dense_3_accuracy: 0.8141 - dense_5_accuracy: 0.7632 - dense_7_accuracy: 0.7404 - dense_9_accuracy: 0.8006
Epoch 54/128
31/31 [==============================] - 3s 85ms/step - loss: 2.3917 - dense_1_loss: 0.3150 - dense_3_loss: 0.4218 - dense_5_loss: 0.5920 - dense_7_loss: 0.6279 - dense_9_loss: 0.4350 - dense_1_accuracy: 0.8546 - dense_3_accuracy: 0.8276 - dense_5_accuracy: 0.7570 - dense_7_accuracy: 0.7342 - dense_9_accuracy: 0.8152
Epoch 55/128
31/31 [==============================] - 3s 85ms/step - loss: 2.2989 - dense_1_loss: 0.3207 - dense_3_loss: 0.4149 - dense_5_loss: 0.5062 - dense_7_loss: 0.6111 - dense_9_loss: 0.4461 - dense_1_accuracy: 0.8505 - dense_3_accuracy: 0.8287 - dense_5_accuracy: 0.7882 - dense_7_accuracy: 0.7290 - dense_9_accuracy: 0.8079
Epoch 56/128
31/31 [==============================] - 3s 85ms/step - loss: 2.2447 - dense_1_loss: 0.2805 - dense_3_loss: 0.4392 - dense_5_loss: 0.5044 - dense_7_loss: 0.6223 - dense_9_loss: 0.3983 - dense_1_accuracy: 0.8702 - dense_3_accuracy: 0.8089 - dense_5_accuracy: 0.7757 - dense_7_accuracy: 0.7259 - dense_9_accuracy: 0.8245
Epoch 57/128
31/31 [==============================] - 3s 85ms/step - loss: 2.2636 - dense_1_loss: 0.3039 - dense_3_loss: 0.4124 - dense_5_loss: 0.5262 - dense_7_loss: 0.5891 - dense_9_loss: 0.4321 - dense_1_accuracy: 0.8681 - dense_3_accuracy: 0.8390 - dense_5_accuracy: 0.7736 - dense_7_accuracy: 0.7310 - dense_9_accuracy: 0.8245
Epoch 58/128
31/31 [==============================] - 3s 85ms/step - loss: 2.2567 - dense_1_loss: 0.3186 - dense_3_loss: 0.3727 - dense_5_loss: 0.5965 - dense_7_loss: 0.5448 - dense_9_loss: 0.4242 - dense_1_accuracy: 0.8629 - dense_3_accuracy: 0.8505 - dense_5_accuracy: 0.7539 - dense_7_accuracy: 0.7643 - dense_9_accuracy: 0.8069
Epoch 59/128
31/31 [==============================] - 3s 85ms/step - loss: 2.1867 - dense_1_loss: 0.2895 - dense_3_loss: 0.4138 - dense_5_loss: 0.5116 - dense_7_loss: 0.6054 - dense_9_loss: 0.3664 - dense_1_accuracy: 0.8692 - dense_3_accuracy: 0.8328 - dense_5_accuracy: 0.7715 - dense_7_accuracy: 0.7362 - dense_9_accuracy: 0.8359
Epoch 60/128
31/31 [==============================] - 3s 86ms/step - loss: 2.1301 - dense_1_loss: 0.3069 - dense_3_loss: 0.4081 - dense_5_loss: 0.4706 - dense_7_loss: 0.5488 - dense_9_loss: 0.3957 - dense_1_accuracy: 0.8567 - dense_3_accuracy: 0.8287 - dense_5_accuracy: 0.7882 - dense_7_accuracy: 0.7456 - dense_9_accuracy: 0.8235
Epoch 61/128
31/31 [==============================] - 3s 85ms/step - loss: 2.1617 - dense_1_loss: 0.2832 - dense_3_loss: 0.3760 - dense_5_loss: 0.5170 - dense_7_loss: 0.5782 - dense_9_loss: 0.4074 - dense_1_accuracy: 0.8733 - dense_3_accuracy: 0.8422 - dense_5_accuracy: 0.7923 - dense_7_accuracy: 0.7508 - dense_9_accuracy: 0.8141
Epoch 62/128
31/31 [==============================] - 3s 85ms/step - loss: 2.1697 - dense_1_loss: 0.2979 - dense_3_loss: 0.3893 - dense_5_loss: 0.5285 - dense_7_loss: 0.5601 - dense_9_loss: 0.3939 - dense_1_accuracy: 0.8629 - dense_3_accuracy: 0.8422 - dense_5_accuracy: 0.7778 - dense_7_accuracy: 0.7466 - dense_9_accuracy: 0.8235
Epoch 63/128
31/31 [==============================] - 3s 85ms/step - loss: 2.1096 - dense_1_loss: 0.3012 - dense_3_loss: 0.3567 - dense_5_loss: 0.5434 - dense_7_loss: 0.5691 - dense_9_loss: 0.3392 - dense_1_accuracy: 0.8660 - dense_3_accuracy: 0.8494 - dense_5_accuracy: 0.7674 - dense_7_accuracy: 0.7425 - dense_9_accuracy: 0.8484
Epoch 64/128
31/31 [==============================] - 3s 85ms/step - loss: 2.1823 - dense_1_loss: 0.3073 - dense_3_loss: 0.3797 - dense_5_loss: 0.4916 - dense_7_loss: 0.6160 - dense_9_loss: 0.3875 - dense_1_accuracy: 0.8671 - dense_3_accuracy: 0.8380 - dense_5_accuracy: 0.8069 - dense_7_accuracy: 0.7207 - dense_9_accuracy: 0.8380
Epoch 65/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0155 - dense_1_loss: 0.3283 - dense_3_loss: 0.3208 - dense_5_loss: 0.4400 - dense_7_loss: 0.5245 - dense_9_loss: 0.4018 - dense_1_accuracy: 0.8339 - dense_3_accuracy: 0.8567 - dense_5_accuracy: 0.8172 - dense_7_accuracy: 0.7580 - dense_9_accuracy: 0.8079
Epoch 66/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0399 - dense_1_loss: 0.3133 - dense_3_loss: 0.3215 - dense_5_loss: 0.5039 - dense_7_loss: 0.5108 - dense_9_loss: 0.3904 - dense_1_accuracy: 0.8536 - dense_3_accuracy: 0.8567 - dense_5_accuracy: 0.7913 - dense_7_accuracy: 0.7736 - dense_9_accuracy: 0.8349
Epoch 67/128
31/31 [==============================] - 3s 86ms/step - loss: 2.0389 - dense_1_loss: 0.3056 - dense_3_loss: 0.3468 - dense_5_loss: 0.4724 - dense_7_loss: 0.5341 - dense_9_loss: 0.3801 - dense_1_accuracy: 0.8598 - dense_3_accuracy: 0.8536 - dense_5_accuracy: 0.7934 - dense_7_accuracy: 0.7580 - dense_9_accuracy: 0.8172
Epoch 68/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0296 - dense_1_loss: 0.2935 - dense_3_loss: 0.3339 - dense_5_loss: 0.4605 - dense_7_loss: 0.5592 - dense_9_loss: 0.3825 - dense_1_accuracy: 0.8660 - dense_3_accuracy: 0.8567 - dense_5_accuracy: 0.8079 - dense_7_accuracy: 0.7612 - dense_9_accuracy: 0.8359
Epoch 69/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0125 - dense_1_loss: 0.2717 - dense_3_loss: 0.3871 - dense_5_loss: 0.4809 - dense_7_loss: 0.5048 - dense_9_loss: 0.3680 - dense_1_accuracy: 0.8816 - dense_3_accuracy: 0.8463 - dense_5_accuracy: 0.7965 - dense_7_accuracy: 0.7861 - dense_9_accuracy: 0.8328
Epoch 70/128
31/31 [==============================] - 3s 86ms/step - loss: 2.1093 - dense_1_loss: 0.2915 - dense_3_loss: 0.3990 - dense_5_loss: 0.5126 - dense_7_loss: 0.5427 - dense_9_loss: 0.3635 - dense_1_accuracy: 0.8723 - dense_3_accuracy: 0.8287 - dense_5_accuracy: 0.7892 - dense_7_accuracy: 0.7612 - dense_9_accuracy: 0.8453
Epoch 71/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0648 - dense_1_loss: 0.2673 - dense_3_loss: 0.3933 - dense_5_loss: 0.5274 - dense_7_loss: 0.5185 - dense_9_loss: 0.3582 - dense_1_accuracy: 0.8764 - dense_3_accuracy: 0.8359 - dense_5_accuracy: 0.7954 - dense_7_accuracy: 0.7736 - dense_9_accuracy: 0.8411
Epoch 72/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0424 - dense_1_loss: 0.3270 - dense_3_loss: 0.3581 - dense_5_loss: 0.4785 - dense_7_loss: 0.5215 - dense_9_loss: 0.3573 - dense_1_accuracy: 0.8536 - dense_3_accuracy: 0.8380 - dense_5_accuracy: 0.7965 - dense_7_accuracy: 0.7757 - dense_9_accuracy: 0.8442
Epoch 73/128
31/31 [==============================] - 3s 85ms/step - loss: 2.0314 - dense_1_loss: 0.2999 - dense_3_loss: 0.3266 - dense_5_loss: 0.4824 - dense_7_loss: 0.5402 - dense_9_loss: 0.3823 - dense_1_accuracy: 0.8650 - dense_3_accuracy: 0.8650 - dense_5_accuracy: 0.7882 - dense_7_accuracy: 0.7653 - dense_9_accuracy: 0.8422
Epoch 74/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9440 - dense_1_loss: 0.2427 - dense_3_loss: 0.3205 - dense_5_loss: 0.5249 - dense_7_loss: 0.5237 - dense_9_loss: 0.3322 - dense_1_accuracy: 0.8837 - dense_3_accuracy: 0.8609 - dense_5_accuracy: 0.7871 - dense_7_accuracy: 0.7664 - dense_9_accuracy: 0.8463
Epoch 75/128
31/31 [==============================] - 3s 86ms/step - loss: 2.1678 - dense_1_loss: 0.3081 - dense_3_loss: 0.3432 - dense_5_loss: 0.5258 - dense_7_loss: 0.6062 - dense_9_loss: 0.3846 - dense_1_accuracy: 0.8619 - dense_3_accuracy: 0.8463 - dense_5_accuracy: 0.7788 - dense_7_accuracy: 0.7259 - dense_9_accuracy: 0.8235
Epoch 76/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9978 - dense_1_loss: 0.3195 - dense_3_loss: 0.3291 - dense_5_loss: 0.4749 - dense_7_loss: 0.5162 - dense_9_loss: 0.3581 - dense_1_accuracy: 0.8557 - dense_3_accuracy: 0.8484 - dense_5_accuracy: 0.8017 - dense_7_accuracy: 0.7840 - dense_9_accuracy: 0.8339
Epoch 77/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8992 - dense_1_loss: 0.2669 - dense_3_loss: 0.3453 - dense_5_loss: 0.4451 - dense_7_loss: 0.5278 - dense_9_loss: 0.3141 - dense_1_accuracy: 0.8806 - dense_3_accuracy: 0.8515 - dense_5_accuracy: 0.8100 - dense_7_accuracy: 0.7664 - dense_9_accuracy: 0.8525
Epoch 78/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9797 - dense_1_loss: 0.2801 - dense_3_loss: 0.3459 - dense_5_loss: 0.4753 - dense_7_loss: 0.5191 - dense_9_loss: 0.3592 - dense_1_accuracy: 0.8702 - dense_3_accuracy: 0.8494 - dense_5_accuracy: 0.7850 - dense_7_accuracy: 0.7674 - dense_9_accuracy: 0.8463
Epoch 79/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8705 - dense_1_loss: 0.2568 - dense_3_loss: 0.2812 - dense_5_loss: 0.4882 - dense_7_loss: 0.5222 - dense_9_loss: 0.3221 - dense_1_accuracy: 0.8785 - dense_3_accuracy: 0.8910 - dense_5_accuracy: 0.7985 - dense_7_accuracy: 0.7778 - dense_9_accuracy: 0.8515
Epoch 80/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8997 - dense_1_loss: 0.3202 - dense_3_loss: 0.3210 - dense_5_loss: 0.4619 - dense_7_loss: 0.5061 - dense_9_loss: 0.2905 - dense_1_accuracy: 0.8557 - dense_3_accuracy: 0.8640 - dense_5_accuracy: 0.8193 - dense_7_accuracy: 0.7726 - dense_9_accuracy: 0.8650
Epoch 81/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8467 - dense_1_loss: 0.2342 - dense_3_loss: 0.2991 - dense_5_loss: 0.4453 - dense_7_loss: 0.5371 - dense_9_loss: 0.3309 - dense_1_accuracy: 0.8930 - dense_3_accuracy: 0.8609 - dense_5_accuracy: 0.8204 - dense_7_accuracy: 0.7653 - dense_9_accuracy: 0.8525
Epoch 82/128
31/31 [==============================] - 3s 86ms/step - loss: 1.9342 - dense_1_loss: 0.2940 - dense_3_loss: 0.3057 - dense_5_loss: 0.4626 - dense_7_loss: 0.5335 - dense_9_loss: 0.3383 - dense_1_accuracy: 0.8681 - dense_3_accuracy: 0.8629 - dense_5_accuracy: 0.8027 - dense_7_accuracy: 0.7591 - dense_9_accuracy: 0.8712
Epoch 83/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9209 - dense_1_loss: 0.2505 - dense_3_loss: 0.3375 - dense_5_loss: 0.4991 - dense_7_loss: 0.5002 - dense_9_loss: 0.3337 - dense_1_accuracy: 0.8827 - dense_3_accuracy: 0.8474 - dense_5_accuracy: 0.7913 - dense_7_accuracy: 0.7965 - dense_9_accuracy: 0.8453
Epoch 84/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9196 - dense_1_loss: 0.2763 - dense_3_loss: 0.2928 - dense_5_loss: 0.4755 - dense_7_loss: 0.5307 - dense_9_loss: 0.3443 - dense_1_accuracy: 0.8795 - dense_3_accuracy: 0.8702 - dense_5_accuracy: 0.7996 - dense_7_accuracy: 0.7757 - dense_9_accuracy: 0.8494
Epoch 85/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9662 - dense_1_loss: 0.2799 - dense_3_loss: 0.3396 - dense_5_loss: 0.4821 - dense_7_loss: 0.5137 - dense_9_loss: 0.3510 - dense_1_accuracy: 0.8775 - dense_3_accuracy: 0.8546 - dense_5_accuracy: 0.7850 - dense_7_accuracy: 0.7601 - dense_9_accuracy: 0.8276
Epoch 86/128
31/31 [==============================] - 3s 85ms/step - loss: 1.9372 - dense_1_loss: 0.2327 - dense_3_loss: 0.3652 - dense_5_loss: 0.4829 - dense_7_loss: 0.5378 - dense_9_loss: 0.3186 - dense_1_accuracy: 0.8941 - dense_3_accuracy: 0.8474 - dense_5_accuracy: 0.7840 - dense_7_accuracy: 0.7632 - dense_9_accuracy: 0.8640
Epoch 87/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8704 - dense_1_loss: 0.2610 - dense_3_loss: 0.3370 - dense_5_loss: 0.4248 - dense_7_loss: 0.5128 - dense_9_loss: 0.3348 - dense_1_accuracy: 0.8827 - dense_3_accuracy: 0.8567 - dense_5_accuracy: 0.8120 - dense_7_accuracy: 0.7861 - dense_9_accuracy: 0.8505
Epoch 88/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8228 - dense_1_loss: 0.2621 - dense_3_loss: 0.3267 - dense_5_loss: 0.4291 - dense_7_loss: 0.4630 - dense_9_loss: 0.3420 - dense_1_accuracy: 0.8785 - dense_3_accuracy: 0.8640 - dense_5_accuracy: 0.8224 - dense_7_accuracy: 0.7923 - dense_9_accuracy: 0.8432
Epoch 89/128
31/31 [==============================] - 3s 87ms/step - loss: 1.8345 - dense_1_loss: 0.2695 - dense_3_loss: 0.3235 - dense_5_loss: 0.3954 - dense_7_loss: 0.4948 - dense_9_loss: 0.3513 - dense_1_accuracy: 0.8910 - dense_3_accuracy: 0.8660 - dense_5_accuracy: 0.8297 - dense_7_accuracy: 0.7809 - dense_9_accuracy: 0.8411
Epoch 90/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8248 - dense_1_loss: 0.2710 - dense_3_loss: 0.3030 - dense_5_loss: 0.4074 - dense_7_loss: 0.5298 - dense_9_loss: 0.3136 - dense_1_accuracy: 0.8764 - dense_3_accuracy: 0.8702 - dense_5_accuracy: 0.8162 - dense_7_accuracy: 0.7664 - dense_9_accuracy: 0.8650
Epoch 91/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8410 - dense_1_loss: 0.2514 - dense_3_loss: 0.3305 - dense_5_loss: 0.4208 - dense_7_loss: 0.4935 - dense_9_loss: 0.3448 - dense_1_accuracy: 0.8754 - dense_3_accuracy: 0.8546 - dense_5_accuracy: 0.8183 - dense_7_accuracy: 0.7819 - dense_9_accuracy: 0.8474
Epoch 92/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7924 - dense_1_loss: 0.2719 - dense_3_loss: 0.3146 - dense_5_loss: 0.4075 - dense_7_loss: 0.4889 - dense_9_loss: 0.3096 - dense_1_accuracy: 0.8806 - dense_3_accuracy: 0.8660 - dense_5_accuracy: 0.8089 - dense_7_accuracy: 0.7871 - dense_9_accuracy: 0.8567
Epoch 93/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8986 - dense_1_loss: 0.2568 - dense_3_loss: 0.3496 - dense_5_loss: 0.4237 - dense_7_loss: 0.4962 - dense_9_loss: 0.3723 - dense_1_accuracy: 0.8785 - dense_3_accuracy: 0.8515 - dense_5_accuracy: 0.8069 - dense_7_accuracy: 0.7778 - dense_9_accuracy: 0.8318
Epoch 94/128
31/31 [==============================] - 3s 86ms/step - loss: 1.7680 - dense_1_loss: 0.2478 - dense_3_loss: 0.2939 - dense_5_loss: 0.4248 - dense_7_loss: 0.4680 - dense_9_loss: 0.3335 - dense_1_accuracy: 0.8868 - dense_3_accuracy: 0.8723 - dense_5_accuracy: 0.8162 - dense_7_accuracy: 0.7975 - dense_9_accuracy: 0.8474
Epoch 95/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8129 - dense_1_loss: 0.2522 - dense_3_loss: 0.3013 - dense_5_loss: 0.4414 - dense_7_loss: 0.5011 - dense_9_loss: 0.3168 - dense_1_accuracy: 0.8951 - dense_3_accuracy: 0.8671 - dense_5_accuracy: 0.8120 - dense_7_accuracy: 0.7861 - dense_9_accuracy: 0.8536
Epoch 96/128
31/31 [==============================] - 3s 86ms/step - loss: 1.8013 - dense_1_loss: 0.2225 - dense_3_loss: 0.3371 - dense_5_loss: 0.4116 - dense_7_loss: 0.4819 - dense_9_loss: 0.3482 - dense_1_accuracy: 0.8972 - dense_3_accuracy: 0.8515 - dense_5_accuracy: 0.8204 - dense_7_accuracy: 0.7975 - dense_9_accuracy: 0.8422
Epoch 97/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8962 - dense_1_loss: 0.2443 - dense_3_loss: 0.3392 - dense_5_loss: 0.4297 - dense_7_loss: 0.5165 - dense_9_loss: 0.3664 - dense_1_accuracy: 0.8868 - dense_3_accuracy: 0.8546 - dense_5_accuracy: 0.8069 - dense_7_accuracy: 0.7601 - dense_9_accuracy: 0.8339
Epoch 98/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8667 - dense_1_loss: 0.2792 - dense_3_loss: 0.3423 - dense_5_loss: 0.3989 - dense_7_loss: 0.5126 - dense_9_loss: 0.3338 - dense_1_accuracy: 0.8692 - dense_3_accuracy: 0.8609 - dense_5_accuracy: 0.8370 - dense_7_accuracy: 0.7736 - dense_9_accuracy: 0.8557
Epoch 99/128
31/31 [==============================] - 3s 85ms/step - loss: 1.8157 - dense_1_loss: 0.2486 - dense_3_loss: 0.3685 - dense_5_loss: 0.4036 - dense_7_loss: 0.4753 - dense_9_loss: 0.3198 - dense_1_accuracy: 0.8889 - dense_3_accuracy: 0.8339 - dense_5_accuracy: 0.8162 - dense_7_accuracy: 0.7913 - dense_9_accuracy: 0.8598
Epoch 100/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7485 - dense_1_loss: 0.2270 - dense_3_loss: 0.3123 - dense_5_loss: 0.4403 - dense_7_loss: 0.4499 - dense_9_loss: 0.3189 - dense_1_accuracy: 0.8972 - dense_3_accuracy: 0.8733 - dense_5_accuracy: 0.7985 - dense_7_accuracy: 0.7913 - dense_9_accuracy: 0.8567
Epoch 101/128
31/31 [==============================] - 3s 86ms/step - loss: 1.7112 - dense_1_loss: 0.2281 - dense_3_loss: 0.2922 - dense_5_loss: 0.4298 - dense_7_loss: 0.4422 - dense_9_loss: 0.3190 - dense_1_accuracy: 0.8993 - dense_3_accuracy: 0.8806 - dense_5_accuracy: 0.8224 - dense_7_accuracy: 0.8069 - dense_9_accuracy: 0.8588
Epoch 102/128
31/31 [==============================] - 3s 86ms/step - loss: 1.7719 - dense_1_loss: 0.2252 - dense_3_loss: 0.3230 - dense_5_loss: 0.4387 - dense_7_loss: 0.4628 - dense_9_loss: 0.3223 - dense_1_accuracy: 0.8941 - dense_3_accuracy: 0.8619 - dense_5_accuracy: 0.8162 - dense_7_accuracy: 0.7996 - dense_9_accuracy: 0.8536
Epoch 103/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7566 - dense_1_loss: 0.2294 - dense_3_loss: 0.3369 - dense_5_loss: 0.4190 - dense_7_loss: 0.4557 - dense_9_loss: 0.3155 - dense_1_accuracy: 0.9003 - dense_3_accuracy: 0.8536 - dense_5_accuracy: 0.8307 - dense_7_accuracy: 0.8037 - dense_9_accuracy: 0.8692
Epoch 104/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7680 - dense_1_loss: 0.2183 - dense_3_loss: 0.3258 - dense_5_loss: 0.4120 - dense_7_loss: 0.4941 - dense_9_loss: 0.3178 - dense_1_accuracy: 0.9024 - dense_3_accuracy: 0.8619 - dense_5_accuracy: 0.8100 - dense_7_accuracy: 0.7861 - dense_9_accuracy: 0.8619
Epoch 105/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6653 - dense_1_loss: 0.1997 - dense_3_loss: 0.2895 - dense_5_loss: 0.3875 - dense_7_loss: 0.4427 - dense_9_loss: 0.3459 - dense_1_accuracy: 0.9076 - dense_3_accuracy: 0.8775 - dense_5_accuracy: 0.8370 - dense_7_accuracy: 0.8120 - dense_9_accuracy: 0.8432
Epoch 106/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6479 - dense_1_loss: 0.2281 - dense_3_loss: 0.2749 - dense_5_loss: 0.3773 - dense_7_loss: 0.4757 - dense_9_loss: 0.2918 - dense_1_accuracy: 0.8972 - dense_3_accuracy: 0.8795 - dense_5_accuracy: 0.8307 - dense_7_accuracy: 0.7850 - dense_9_accuracy: 0.8775
Epoch 107/128
31/31 [==============================] - 3s 86ms/step - loss: 1.7126 - dense_1_loss: 0.2340 - dense_3_loss: 0.2845 - dense_5_loss: 0.3972 - dense_7_loss: 0.4892 - dense_9_loss: 0.3077 - dense_1_accuracy: 0.8993 - dense_3_accuracy: 0.8733 - dense_5_accuracy: 0.8172 - dense_7_accuracy: 0.7840 - dense_9_accuracy: 0.8671
Epoch 108/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7755 - dense_1_loss: 0.2252 - dense_3_loss: 0.3080 - dense_5_loss: 0.4410 - dense_7_loss: 0.4511 - dense_9_loss: 0.3502 - dense_1_accuracy: 0.9065 - dense_3_accuracy: 0.8754 - dense_5_accuracy: 0.8100 - dense_7_accuracy: 0.8048 - dense_9_accuracy: 0.8422
Epoch 109/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6897 - dense_1_loss: 0.2264 - dense_3_loss: 0.3007 - dense_5_loss: 0.4042 - dense_7_loss: 0.4407 - dense_9_loss: 0.3177 - dense_1_accuracy: 0.8972 - dense_3_accuracy: 0.8754 - dense_5_accuracy: 0.8276 - dense_7_accuracy: 0.8006 - dense_9_accuracy: 0.8567
Epoch 110/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6659 - dense_1_loss: 0.2214 - dense_3_loss: 0.3288 - dense_5_loss: 0.3939 - dense_7_loss: 0.4014 - dense_9_loss: 0.3204 - dense_1_accuracy: 0.8972 - dense_3_accuracy: 0.8567 - dense_5_accuracy: 0.8214 - dense_7_accuracy: 0.8183 - dense_9_accuracy: 0.8629
Epoch 111/128
31/31 [==============================] - 3s 87ms/step - loss: 1.7449 - dense_1_loss: 0.2389 - dense_3_loss: 0.3352 - dense_5_loss: 0.3941 - dense_7_loss: 0.4706 - dense_9_loss: 0.3061 - dense_1_accuracy: 0.8951 - dense_3_accuracy: 0.8577 - dense_5_accuracy: 0.8287 - dense_7_accuracy: 0.7934 - dense_9_accuracy: 0.8629
Epoch 112/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6896 - dense_1_loss: 0.2386 - dense_3_loss: 0.3278 - dense_5_loss: 0.3738 - dense_7_loss: 0.4395 - dense_9_loss: 0.3098 - dense_1_accuracy: 0.8910 - dense_3_accuracy: 0.8629 - dense_5_accuracy: 0.8401 - dense_7_accuracy: 0.8120 - dense_9_accuracy: 0.8671
Epoch 113/128
31/31 [==============================] - 3s 85ms/step - loss: 1.5717 - dense_1_loss: 0.2393 - dense_3_loss: 0.2676 - dense_5_loss: 0.3758 - dense_7_loss: 0.4080 - dense_9_loss: 0.2810 - dense_1_accuracy: 0.8858 - dense_3_accuracy: 0.8847 - dense_5_accuracy: 0.8307 - dense_7_accuracy: 0.8224 - dense_9_accuracy: 0.8806
Epoch 114/128
31/31 [==============================] - 3s 86ms/step - loss: 1.7373 - dense_1_loss: 0.2657 - dense_3_loss: 0.2728 - dense_5_loss: 0.4281 - dense_7_loss: 0.4666 - dense_9_loss: 0.3041 - dense_1_accuracy: 0.8744 - dense_3_accuracy: 0.8806 - dense_5_accuracy: 0.8204 - dense_7_accuracy: 0.8027 - dense_9_accuracy: 0.8609
Epoch 115/128
31/31 [==============================] - 3s 86ms/step - loss: 1.6744 - dense_1_loss: 0.2114 - dense_3_loss: 0.2761 - dense_5_loss: 0.4195 - dense_7_loss: 0.4529 - dense_9_loss: 0.3145 - dense_1_accuracy: 0.9024 - dense_3_accuracy: 0.8827 - dense_5_accuracy: 0.8183 - dense_7_accuracy: 0.8120 - dense_9_accuracy: 0.8681
Epoch 116/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7562 - dense_1_loss: 0.2366 - dense_3_loss: 0.3070 - dense_5_loss: 0.4110 - dense_7_loss: 0.5047 - dense_9_loss: 0.2969 - dense_1_accuracy: 0.8879 - dense_3_accuracy: 0.8588 - dense_5_accuracy: 0.8318 - dense_7_accuracy: 0.7819 - dense_9_accuracy: 0.8806
Epoch 117/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6603 - dense_1_loss: 0.1997 - dense_3_loss: 0.2951 - dense_5_loss: 0.3996 - dense_7_loss: 0.4679 - dense_9_loss: 0.2979 - dense_1_accuracy: 0.9138 - dense_3_accuracy: 0.8640 - dense_5_accuracy: 0.8224 - dense_7_accuracy: 0.7975 - dense_9_accuracy: 0.8744
Epoch 118/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7978 - dense_1_loss: 0.2709 - dense_3_loss: 0.2988 - dense_5_loss: 0.4375 - dense_7_loss: 0.4682 - dense_9_loss: 0.3224 - dense_1_accuracy: 0.8816 - dense_3_accuracy: 0.8588 - dense_5_accuracy: 0.8131 - dense_7_accuracy: 0.8048 - dense_9_accuracy: 0.8629
Epoch 119/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7072 - dense_1_loss: 0.2318 - dense_3_loss: 0.3255 - dense_5_loss: 0.4058 - dense_7_loss: 0.4212 - dense_9_loss: 0.3229 - dense_1_accuracy: 0.9055 - dense_3_accuracy: 0.8557 - dense_5_accuracy: 0.8235 - dense_7_accuracy: 0.8058 - dense_9_accuracy: 0.8442
Epoch 120/128
31/31 [==============================] - 3s 86ms/step - loss: 1.7258 - dense_1_loss: 0.2136 - dense_3_loss: 0.3085 - dense_5_loss: 0.4396 - dense_7_loss: 0.4361 - dense_9_loss: 0.3280 - dense_1_accuracy: 0.8910 - dense_3_accuracy: 0.8629 - dense_5_accuracy: 0.8183 - dense_7_accuracy: 0.8131 - dense_9_accuracy: 0.8598
Epoch 121/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6618 - dense_1_loss: 0.2356 - dense_3_loss: 0.2604 - dense_5_loss: 0.3975 - dense_7_loss: 0.4278 - dense_9_loss: 0.3406 - dense_1_accuracy: 0.8837 - dense_3_accuracy: 0.8889 - dense_5_accuracy: 0.8390 - dense_7_accuracy: 0.8131 - dense_9_accuracy: 0.8432
Epoch 122/128
31/31 [==============================] - 3s 85ms/step - loss: 1.7236 - dense_1_loss: 0.2053 - dense_3_loss: 0.2848 - dense_5_loss: 0.4353 - dense_7_loss: 0.4631 - dense_9_loss: 0.3351 - dense_1_accuracy: 0.9055 - dense_3_accuracy: 0.8744 - dense_5_accuracy: 0.7985 - dense_7_accuracy: 0.7923 - dense_9_accuracy: 0.8515
Epoch 123/128
31/31 [==============================] - 3s 86ms/step - loss: 1.6273 - dense_1_loss: 0.2295 - dense_3_loss: 0.2563 - dense_5_loss: 0.3973 - dense_7_loss: 0.4549 - dense_9_loss: 0.2893 - dense_1_accuracy: 0.8930 - dense_3_accuracy: 0.8920 - dense_5_accuracy: 0.8245 - dense_7_accuracy: 0.7975 - dense_9_accuracy: 0.8744
Epoch 124/128
31/31 [==============================] - 3s 86ms/step - loss: 1.5539 - dense_1_loss: 0.2187 - dense_3_loss: 0.2434 - dense_5_loss: 0.3995 - dense_7_loss: 0.4404 - dense_9_loss: 0.2519 - dense_1_accuracy: 0.8982 - dense_3_accuracy: 0.8972 - dense_5_accuracy: 0.8235 - dense_7_accuracy: 0.7923 - dense_9_accuracy: 0.8806
Epoch 125/128
31/31 [==============================] - 3s 86ms/step - loss: 1.5622 - dense_1_loss: 0.1823 - dense_3_loss: 0.2567 - dense_5_loss: 0.4106 - dense_7_loss: 0.4242 - dense_9_loss: 0.2884 - dense_1_accuracy: 0.9180 - dense_3_accuracy: 0.8920 - dense_5_accuracy: 0.8255 - dense_7_accuracy: 0.8224 - dense_9_accuracy: 0.8692
Epoch 126/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6481 - dense_1_loss: 0.2346 - dense_3_loss: 0.3087 - dense_5_loss: 0.4151 - dense_7_loss: 0.4259 - dense_9_loss: 0.2639 - dense_1_accuracy: 0.8941 - dense_3_accuracy: 0.8671 - dense_5_accuracy: 0.8172 - dense_7_accuracy: 0.8017 - dense_9_accuracy: 0.8702
Epoch 127/128
31/31 [==============================] - 3s 85ms/step - loss: 1.6186 - dense_1_loss: 0.2108 - dense_3_loss: 0.2833 - dense_5_loss: 0.3860 - dense_7_loss: 0.4403 - dense_9_loss: 0.2981 - dense_1_accuracy: 0.8962 - dense_3_accuracy: 0.8754 - dense_5_accuracy: 0.8484 - dense_7_accuracy: 0.8162 - dense_9_accuracy: 0.8681
Epoch 128/128
31/31 [==============================] - 3s 86ms/step - loss: 1.5815 - dense_1_loss: 0.2315 - dense_3_loss: 0.2708 - dense_5_loss: 0.3658 - dense_7_loss: 0.4275 - dense_9_loss: 0.2860 - dense_1_accuracy: 0.8982 - dense_3_accuracy: 0.8816 - dense_5_accuracy: 0.8380 - dense_7_accuracy: 0.8141 - dense_9_accuracy: 0.8640
In [16]:
# Evaluating the trained model

eval = model.evaluate(xtest,[ytest[0], ytest[1], ytest[2], ytest[3], ytest[4]],verbose=1)

print("\nAccuracies of the 5 dense networks: ")
for i in range(-5, 0):
    print(eval[i])
4/4 [==============================] - 0s 21ms/step - loss: 3.4292 - dense_1_loss: 0.1118 - dense_3_loss: 0.2583 - dense_5_loss: 1.4195 - dense_7_loss: 0.9192 - dense_9_loss: 0.7205 - dense_1_accuracy: 0.9813 - dense_3_accuracy: 0.9346 - dense_5_accuracy: 0.8131 - dense_7_accuracy: 0.8598 - dense_9_accuracy: 0.8972

Accuracies of the 5 dense networks: 
0.9813084006309509
0.9345794320106506
0.8130841255187988
0.8598130941390991
0.8971962332725525

Plot

In [17]:
history_keys = list(history.history.keys())
history_keys
Out[17]:
['loss',
 'dense_1_loss',
 'dense_3_loss',
 'dense_5_loss',
 'dense_7_loss',
 'dense_9_loss',
 'dense_1_accuracy',
 'dense_3_accuracy',
 'dense_5_accuracy',
 'dense_7_accuracy',
 'dense_9_accuracy']
In [18]:
# Plotting the overall loss and losses of the 5 dense networks

for i in range(6):
    plt.plot(history.epoch, history.history[history_keys[i]])

plt.title("Losses")
plt.xlabel("Epochs")
plt.ylabel("Loss")

plt.legend(history_keys[:6])

plt.show()
In [19]:
# Plotting the accuracies of the 5 dense networks

for i in range(6,11):
    plt.plot(history.epoch, history.history[history_keys[i]])

plt.title("Accuracies")
plt.xlabel("Epochs")
plt.ylabel("Accuracy")

plt.legend(history_keys[6:11])

plt.show()
In [20]:
def predict(file):
    img = Image.open(file)
    img = ImageOps.grayscale(img)
    img = np.asarray(img)/255
    img = np.reshape(img, (1, img.shape[0], img.shape[1], 1))
    
    output = np.asarray(model.predict(img))
    output = output.squeeze()    # Remove empty dimensions
    return decode_label(output)
In [21]:
#i = random.randint(1, total_samples) # Pick one from all the image samples
i = random.randint(train_count, total_samples) # Pick one from only the test set

filename = 'samples/' + images_list[i]
plt.imshow(Image.open(filename))
plt.axis('off')    # Removing the axes

print("Predicted: ", predict(filename))
Predicted:  dyxnc

deepC

In [22]:
model.save('captcha_model.h5')
In [23]:
!deepCC captcha_model.h5
reading [keras model] from 'captcha_model.h5'
Saved 'captcha_model.onnx'
reading onnx model from file  captcha_model.onnx
Model info:
  ir_vesion :  5 
  doc       : 
WARN (ONNX): graph-node conv2d's attribute auto_pad has no meaningful data.
WARN (ONNX): graph-node conv2d_1's attribute auto_pad has no meaningful data.
WARN (ONNX): graph-node conv2d_2's attribute auto_pad has no meaningful data.
WARN (ONNX): terminal (input/output) input_1's shape is less than 1.
             changing it to 1.
WARN (ONNX): terminal (input/output) dense_1's shape is less than 1.
             changing it to 1.
WARN (GRAPH): found operator node with the same name (dense_1) as io node.
WARN (ONNX): terminal (input/output) dense_3's shape is less than 1.
             changing it to 1.
WARN (GRAPH): found operator node with the same name (dense_3) as io node.
WARN (ONNX): terminal (input/output) dense_5's shape is less than 1.
             changing it to 1.
WARN (GRAPH): found operator node with the same name (dense_5) as io node.
WARN (ONNX): terminal (input/output) dense_7's shape is less than 1.
             changing it to 1.
WARN (GRAPH): found operator node with the same name (dense_7) as io node.
WARN (ONNX): terminal (input/output) dense_9's shape is less than 1.
             changing it to 1.
WARN (GRAPH): found operator node with the same name (dense_9) as io node.
running DNNC graph sanity check ... passed.
Writing C++ file  captcha_model_deepC/captcha_model.cpp
INFO (ONNX): model files are ready in dir captcha_model_deepC
g++ -std=c++11 -O3 -I. -I/opt/tljh/user/lib/python3.7/site-packages/deepC-0.13-py3.7-linux-x86_64.egg/deepC/include -isystem /opt/tljh/user/lib/python3.7/site-packages/deepC-0.13-py3.7-linux-x86_64.egg/deepC/packages/eigen-eigen-323c052e1731 captcha_model_deepC/captcha_model.cpp -o captcha_model_deepC/captcha_model.exe
Model executable  captcha_model_deepC/captcha_model.exe
In [24]:
def input_to_deepC(file):
    img = Image.open(file)
    img = ImageOps.grayscale(img)
    img = np.asarray(img)/255
    img = np.reshape(img, (1, img.shape[0], img.shape[1], 1))
    return img
In [26]:
sample = xtest[1]
np.savetxt('sample.data', input_to_deepC(''))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/opt/tljh/user/lib/python3.7/site-packages/PIL/Image.py in open(fp, mode, formats)
   2894     try:
-> 2895         fp.seek(0)
   2896     except (AttributeError, io.UnsupportedOperation):

AttributeError: 'str' object has no attribute 'seek'

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last)
<ipython-input-26-779ff31c967a> in <module>
      1 sample = xtest[1]
----> 2 np.savetxt('sample.data', input_to_deepC(''))

<ipython-input-24-df63fbfa5aea> in input_to_deepC(file)
      1 def input_to_deepC(file):
----> 2     img = Image.open(file)
      3     img = ImageOps.grayscale(img)
      4     img = np.asarray(img)/255
      5     img = np.reshape(img, (1, img.shape[0], img.shape[1], 1))

/opt/tljh/user/lib/python3.7/site-packages/PIL/Image.py in open(fp, mode, formats)
   2895         fp.seek(0)
   2896     except (AttributeError, io.UnsupportedOperation):
-> 2897         fp = io.BytesIO(fp.read())
   2898         exclusive_fp = True
   2899 

AttributeError: 'str' object has no attribute 'read'
In [ ]: