Skip to content

Instantly share code, notes, and snippets.

@heaven00
Created October 26, 2018 17:10
Show Gist options
  • Save heaven00/0a8b1fff3d6aff6f96347d2786f90278 to your computer and use it in GitHub Desktop.
Save heaven00/0a8b1fff3d6aff6f96347d2786f90278 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "K70hAckqg0EA",
"outputId": "2fc6e1dd-b97c-46c9-9b74-1738093a5255"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mYou are using pip version 18.0, however version 18.1 is available.\r\n",
"You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\r\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jayant/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n",
"Using TensorFlow backend.\n",
"/home/jayant/anaconda3/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6\n",
" return f(*args, **kwds)\n"
]
}
],
"source": [
"# https://keras.io/\n",
"!pip install -q keras\n",
"import keras"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "wVIx_KIigxPV"
},
"outputs": [],
"source": [
"import keras\n",
"from keras.datasets import cifar10\n",
"from keras.models import Model, Sequential\n",
"from keras.layers import Dense, Dropout, Flatten, Input, AveragePooling2D, merge, Activation\n",
"from keras.layers import Conv2D, MaxPooling2D, BatchNormalization\n",
"from keras.layers import Concatenate\n",
"from keras.optimizers import Adam, SGD\n",
"from keras.preprocessing.image import ImageDataGenerator\n",
"\n",
"from sklearn.metrics import confusion_matrix\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"np.set_printoptions(suppress=True)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "UNHw6luQg3gc"
},
"outputs": [],
"source": [
"# this part will prevent tensorflow to allocate all the avaliable GPU Memory\n",
"# backend\n",
"import tensorflow as tf\n",
"from keras import backend as k\n",
"\n",
"# Don't pre-allocate memory; allocate as-needed\n",
"config = tf.ConfigProto()\n",
"config.gpu_options.allow_growth = True\n",
"\n",
"# Create a session with the above options specified.\n",
"k.tensorflow_backend.set_session(tf.Session(config=config))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "dsO_yGxcg5D8"
},
"outputs": [],
"source": [
"# Hyperparameters\n",
"batch_size = 200\n",
"num_classes = 10\n",
"epochs = 1\n",
"l = 40\n",
"num_filter = 12\n",
"compression = 0.5\n",
"dropout_rate = 0.2"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"colab_type": "code",
"id": "mB7o3zu1g6eT",
"outputId": "c1cea922-a38d-45da-f9d8-7977ab9c2dd2"
},
"outputs": [],
"source": [
"# Load CIFAR10 Data\n",
"(x_train, train_y), (x_test, test_y) = cifar10.load_data()\n",
"img_height, img_width, channel = x_train.shape[1],x_train.shape[2],x_train.shape[3]\n",
"\n",
"# convert to one hot encoing \n",
"y_train = keras.utils.to_categorical(train_y, num_classes)\n",
"y_test = keras.utils.to_categorical(test_y, num_classes)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ee-sge5Kg7vr"
},
"outputs": [],
"source": [
"# Dense Block\n",
"def add_denseblock(input, num_filter = 12, dropout_rate = 0.2):\n",
" global compression\n",
" temp = input\n",
" for _ in range(l):\n",
" BatchNorm = BatchNormalization()(temp)\n",
" relu = Activation('relu')(BatchNorm)\n",
" Conv2D_3_3 = Conv2D(int(num_filter*compression), (3,3), use_bias=False ,padding='same')(relu)\n",
" if dropout_rate>0:\n",
" Conv2D_3_3 = Dropout(dropout_rate)(Conv2D_3_3)\n",
" concat = Concatenate(axis=-1)([temp,Conv2D_3_3])\n",
" \n",
" temp = concat\n",
" \n",
" return temp"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "OOP6IPsGhBwb"
},
"outputs": [],
"source": [
"def add_transition(input, num_filter = 12, dropout_rate = 0.2):\n",
" global compression\n",
" BatchNorm = BatchNormalization()(input)\n",
" relu = Activation('relu')(BatchNorm)\n",
" Conv2D_BottleNeck = Conv2D(int(num_filter*compression), (1,1), use_bias=False ,padding='same')(relu)\n",
" if dropout_rate>0:\n",
" Conv2D_BottleNeck = Dropout(dropout_rate)(Conv2D_BottleNeck)\n",
" avg = AveragePooling2D(pool_size=(2,2))(Conv2D_BottleNeck)\n",
" \n",
" return avg"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "0RaKFpubhDIC"
},
"outputs": [],
"source": [
"def output_layer(input):\n",
" global compression\n",
" BatchNorm = BatchNormalization()(input)\n",
" relu = Activation('relu')(BatchNorm)\n",
" AvgPooling = AveragePooling2D(pool_size=(2,2))(relu)\n",
" flat = Flatten()(AvgPooling)\n",
" output = Dense(num_classes, activation=tf.nn.softmax)(flat)\n",
" \n",
" return output"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def plot_confusion_matrix(y_pred, y_test):\n",
" sns.heatmap(confusion_matrix(y_test.argmax(axis=1), y_pred.argmax(axis=1)))\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def rand_by_mask(mask, n=4):\n",
" return np.random.choice(np.where(mask)[0], n, replace=False)\n",
"\n",
"def plot_imgs(mask, x_test, y_test, pred, figsize=(12,6)):\n",
" f = plt.figure(figsize=figsize)\n",
" for index, idx in enumerate(mask):\n",
" sp = f.add_subplot(1, len(mask), index + 1)\n",
" sp.axis('Off')\n",
" title = 'actual:{0}, pred:{1}'.format(y_test[idx], pred[idx])\n",
" sp.set_title(title)\n",
" plt.imshow(x_test[idx])\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# Hyperparameters\n",
"batch_size = 250\n",
"num_classes = 10\n",
"epochs = 25\n",
"l = 12\n",
"num_filter = 12\n",
"compression = 1\n",
"dropout_rate = 0"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "anPCpQWhhGb7"
},
"outputs": [],
"source": [
"input = Input(shape=(img_height, img_width, channel,))\n",
"First_Conv2D = Conv2D(num_filter, (3,3), use_bias=False ,padding='same')(input)\n",
"\n",
"First_Block = add_denseblock(First_Conv2D, num_filter, dropout_rate)\n",
"First_Transition = add_transition(First_Block, num_filter, dropout_rate)\n",
"\n",
"Second_Block = add_denseblock(First_Transition, num_filter, dropout_rate)\n",
"Second_Transition = add_transition(Second_Block, num_filter, dropout_rate)\n",
"\n",
"Third_Block = add_denseblock(Second_Transition, num_filter, dropout_rate)\n",
"Third_Transition = add_transition(Third_Block, num_filter, dropout_rate)\n",
"\n",
"Last_Block = add_denseblock(Third_Transition, num_filter, dropout_rate)\n",
"output = output_layer(Last_Block)\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 9860
},
"colab_type": "code",
"id": "1kFh7pdxhNtT",
"outputId": "160abc05-9e09-4454-d453-0e33a7d95796"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 32, 32, 3) 0 \n",
"__________________________________________________________________________________________________\n",
"conv2d_1 (Conv2D) (None, 32, 32, 12) 324 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_1 (BatchNor (None, 32, 32, 12) 48 conv2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 32, 32, 12) 0 batch_normalization_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_2 (Conv2D) (None, 32, 32, 12) 1296 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_1 (Concatenate) (None, 32, 32, 24) 0 conv2d_1[0][0] \n",
" conv2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_2 (BatchNor (None, 32, 32, 24) 96 concatenate_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_2 (Activation) (None, 32, 32, 24) 0 batch_normalization_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_3 (Conv2D) (None, 32, 32, 12) 2592 activation_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_2 (Concatenate) (None, 32, 32, 36) 0 concatenate_1[0][0] \n",
" conv2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_3 (BatchNor (None, 32, 32, 36) 144 concatenate_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_3 (Activation) (None, 32, 32, 36) 0 batch_normalization_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_4 (Conv2D) (None, 32, 32, 12) 3888 activation_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_3 (Concatenate) (None, 32, 32, 48) 0 concatenate_2[0][0] \n",
" conv2d_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_4 (BatchNor (None, 32, 32, 48) 192 concatenate_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_4 (Activation) (None, 32, 32, 48) 0 batch_normalization_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_5 (Conv2D) (None, 32, 32, 12) 5184 activation_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_4 (Concatenate) (None, 32, 32, 60) 0 concatenate_3[0][0] \n",
" conv2d_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_5 (BatchNor (None, 32, 32, 60) 240 concatenate_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_5 (Activation) (None, 32, 32, 60) 0 batch_normalization_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_6 (Conv2D) (None, 32, 32, 12) 6480 activation_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_5 (Concatenate) (None, 32, 32, 72) 0 concatenate_4[0][0] \n",
" conv2d_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_6 (BatchNor (None, 32, 32, 72) 288 concatenate_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_6 (Activation) (None, 32, 32, 72) 0 batch_normalization_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_7 (Conv2D) (None, 32, 32, 12) 7776 activation_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_6 (Concatenate) (None, 32, 32, 84) 0 concatenate_5[0][0] \n",
" conv2d_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_7 (BatchNor (None, 32, 32, 84) 336 concatenate_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_7 (Activation) (None, 32, 32, 84) 0 batch_normalization_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_8 (Conv2D) (None, 32, 32, 12) 9072 activation_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_7 (Concatenate) (None, 32, 32, 96) 0 concatenate_6[0][0] \n",
" conv2d_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_8 (BatchNor (None, 32, 32, 96) 384 concatenate_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_8 (Activation) (None, 32, 32, 96) 0 batch_normalization_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_9 (Conv2D) (None, 32, 32, 12) 10368 activation_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_8 (Concatenate) (None, 32, 32, 108) 0 concatenate_7[0][0] \n",
" conv2d_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_9 (BatchNor (None, 32, 32, 108) 432 concatenate_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_9 (Activation) (None, 32, 32, 108) 0 batch_normalization_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_10 (Conv2D) (None, 32, 32, 12) 11664 activation_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_9 (Concatenate) (None, 32, 32, 120) 0 concatenate_8[0][0] \n",
" conv2d_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_10 (BatchNo (None, 32, 32, 120) 480 concatenate_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_10 (Activation) (None, 32, 32, 120) 0 batch_normalization_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_11 (Conv2D) (None, 32, 32, 12) 12960 activation_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_10 (Concatenate) (None, 32, 32, 132) 0 concatenate_9[0][0] \n",
" conv2d_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_11 (BatchNo (None, 32, 32, 132) 528 concatenate_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_11 (Activation) (None, 32, 32, 132) 0 batch_normalization_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_12 (Conv2D) (None, 32, 32, 12) 14256 activation_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_11 (Concatenate) (None, 32, 32, 144) 0 concatenate_10[0][0] \n",
" conv2d_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_12 (BatchNo (None, 32, 32, 144) 576 concatenate_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_12 (Activation) (None, 32, 32, 144) 0 batch_normalization_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_13 (Conv2D) (None, 32, 32, 12) 15552 activation_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_12 (Concatenate) (None, 32, 32, 156) 0 concatenate_11[0][0] \n",
" conv2d_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_13 (BatchNo (None, 32, 32, 156) 624 concatenate_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_13 (Activation) (None, 32, 32, 156) 0 batch_normalization_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_14 (Conv2D) (None, 32, 32, 12) 1872 activation_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_1 (AveragePoo (None, 16, 16, 12) 0 conv2d_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_14 (BatchNo (None, 16, 16, 12) 48 average_pooling2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_14 (Activation) (None, 16, 16, 12) 0 batch_normalization_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_15 (Conv2D) (None, 16, 16, 12) 1296 activation_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_13 (Concatenate) (None, 16, 16, 24) 0 average_pooling2d_1[0][0] \n",
" conv2d_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_15 (BatchNo (None, 16, 16, 24) 96 concatenate_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_15 (Activation) (None, 16, 16, 24) 0 batch_normalization_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_16 (Conv2D) (None, 16, 16, 12) 2592 activation_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_14 (Concatenate) (None, 16, 16, 36) 0 concatenate_13[0][0] \n",
" conv2d_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_16 (BatchNo (None, 16, 16, 36) 144 concatenate_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_16 (Activation) (None, 16, 16, 36) 0 batch_normalization_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_17 (Conv2D) (None, 16, 16, 12) 3888 activation_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_15 (Concatenate) (None, 16, 16, 48) 0 concatenate_14[0][0] \n",
" conv2d_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_17 (BatchNo (None, 16, 16, 48) 192 concatenate_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_17 (Activation) (None, 16, 16, 48) 0 batch_normalization_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_18 (Conv2D) (None, 16, 16, 12) 5184 activation_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_16 (Concatenate) (None, 16, 16, 60) 0 concatenate_15[0][0] \n",
" conv2d_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_18 (BatchNo (None, 16, 16, 60) 240 concatenate_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_18 (Activation) (None, 16, 16, 60) 0 batch_normalization_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_19 (Conv2D) (None, 16, 16, 12) 6480 activation_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_17 (Concatenate) (None, 16, 16, 72) 0 concatenate_16[0][0] \n",
" conv2d_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_19 (BatchNo (None, 16, 16, 72) 288 concatenate_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_19 (Activation) (None, 16, 16, 72) 0 batch_normalization_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_20 (Conv2D) (None, 16, 16, 12) 7776 activation_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_18 (Concatenate) (None, 16, 16, 84) 0 concatenate_17[0][0] \n",
" conv2d_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_20 (BatchNo (None, 16, 16, 84) 336 concatenate_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_20 (Activation) (None, 16, 16, 84) 0 batch_normalization_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_21 (Conv2D) (None, 16, 16, 12) 9072 activation_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_19 (Concatenate) (None, 16, 16, 96) 0 concatenate_18[0][0] \n",
" conv2d_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_21 (BatchNo (None, 16, 16, 96) 384 concatenate_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_21 (Activation) (None, 16, 16, 96) 0 batch_normalization_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_22 (Conv2D) (None, 16, 16, 12) 10368 activation_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_20 (Concatenate) (None, 16, 16, 108) 0 concatenate_19[0][0] \n",
" conv2d_22[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_22 (BatchNo (None, 16, 16, 108) 432 concatenate_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_22 (Activation) (None, 16, 16, 108) 0 batch_normalization_22[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_23 (Conv2D) (None, 16, 16, 12) 11664 activation_22[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_21 (Concatenate) (None, 16, 16, 120) 0 concatenate_20[0][0] \n",
" conv2d_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_23 (BatchNo (None, 16, 16, 120) 480 concatenate_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_23 (Activation) (None, 16, 16, 120) 0 batch_normalization_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_24 (Conv2D) (None, 16, 16, 12) 12960 activation_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_22 (Concatenate) (None, 16, 16, 132) 0 concatenate_21[0][0] \n",
" conv2d_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_24 (BatchNo (None, 16, 16, 132) 528 concatenate_22[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_24 (Activation) (None, 16, 16, 132) 0 batch_normalization_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_25 (Conv2D) (None, 16, 16, 12) 14256 activation_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_23 (Concatenate) (None, 16, 16, 144) 0 concatenate_22[0][0] \n",
" conv2d_25[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_25 (BatchNo (None, 16, 16, 144) 576 concatenate_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_25 (Activation) (None, 16, 16, 144) 0 batch_normalization_25[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_26 (Conv2D) (None, 16, 16, 12) 15552 activation_25[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_24 (Concatenate) (None, 16, 16, 156) 0 concatenate_23[0][0] \n",
" conv2d_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_26 (BatchNo (None, 16, 16, 156) 624 concatenate_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_26 (Activation) (None, 16, 16, 156) 0 batch_normalization_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_27 (Conv2D) (None, 16, 16, 12) 1872 activation_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_2 (AveragePoo (None, 8, 8, 12) 0 conv2d_27[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_27 (BatchNo (None, 8, 8, 12) 48 average_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_27 (Activation) (None, 8, 8, 12) 0 batch_normalization_27[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_28 (Conv2D) (None, 8, 8, 12) 1296 activation_27[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_25 (Concatenate) (None, 8, 8, 24) 0 average_pooling2d_2[0][0] \n",
" conv2d_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_28 (BatchNo (None, 8, 8, 24) 96 concatenate_25[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_28 (Activation) (None, 8, 8, 24) 0 batch_normalization_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_29 (Conv2D) (None, 8, 8, 12) 2592 activation_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_26 (Concatenate) (None, 8, 8, 36) 0 concatenate_25[0][0] \n",
" conv2d_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_29 (BatchNo (None, 8, 8, 36) 144 concatenate_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_29 (Activation) (None, 8, 8, 36) 0 batch_normalization_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_30 (Conv2D) (None, 8, 8, 12) 3888 activation_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_27 (Concatenate) (None, 8, 8, 48) 0 concatenate_26[0][0] \n",
" conv2d_30[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_30 (BatchNo (None, 8, 8, 48) 192 concatenate_27[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_30 (Activation) (None, 8, 8, 48) 0 batch_normalization_30[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_31 (Conv2D) (None, 8, 8, 12) 5184 activation_30[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_28 (Concatenate) (None, 8, 8, 60) 0 concatenate_27[0][0] \n",
" conv2d_31[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_31 (BatchNo (None, 8, 8, 60) 240 concatenate_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_31 (Activation) (None, 8, 8, 60) 0 batch_normalization_31[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_32 (Conv2D) (None, 8, 8, 12) 6480 activation_31[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_29 (Concatenate) (None, 8, 8, 72) 0 concatenate_28[0][0] \n",
" conv2d_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_32 (BatchNo (None, 8, 8, 72) 288 concatenate_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_32 (Activation) (None, 8, 8, 72) 0 batch_normalization_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_33 (Conv2D) (None, 8, 8, 12) 7776 activation_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_30 (Concatenate) (None, 8, 8, 84) 0 concatenate_29[0][0] \n",
" conv2d_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_33 (BatchNo (None, 8, 8, 84) 336 concatenate_30[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_33 (Activation) (None, 8, 8, 84) 0 batch_normalization_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_34 (Conv2D) (None, 8, 8, 12) 9072 activation_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_31 (Concatenate) (None, 8, 8, 96) 0 concatenate_30[0][0] \n",
" conv2d_34[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_34 (BatchNo (None, 8, 8, 96) 384 concatenate_31[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_34 (Activation) (None, 8, 8, 96) 0 batch_normalization_34[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_35 (Conv2D) (None, 8, 8, 12) 10368 activation_34[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_32 (Concatenate) (None, 8, 8, 108) 0 concatenate_31[0][0] \n",
" conv2d_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_35 (BatchNo (None, 8, 8, 108) 432 concatenate_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_35 (Activation) (None, 8, 8, 108) 0 batch_normalization_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_36 (Conv2D) (None, 8, 8, 12) 11664 activation_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_33 (Concatenate) (None, 8, 8, 120) 0 concatenate_32[0][0] \n",
" conv2d_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_36 (BatchNo (None, 8, 8, 120) 480 concatenate_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_36 (Activation) (None, 8, 8, 120) 0 batch_normalization_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_37 (Conv2D) (None, 8, 8, 12) 12960 activation_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_34 (Concatenate) (None, 8, 8, 132) 0 concatenate_33[0][0] \n",
" conv2d_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_37 (BatchNo (None, 8, 8, 132) 528 concatenate_34[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_37 (Activation) (None, 8, 8, 132) 0 batch_normalization_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_38 (Conv2D) (None, 8, 8, 12) 14256 activation_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_35 (Concatenate) (None, 8, 8, 144) 0 concatenate_34[0][0] \n",
" conv2d_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_38 (BatchNo (None, 8, 8, 144) 576 concatenate_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_38 (Activation) (None, 8, 8, 144) 0 batch_normalization_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_39 (Conv2D) (None, 8, 8, 12) 15552 activation_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_36 (Concatenate) (None, 8, 8, 156) 0 concatenate_35[0][0] \n",
" conv2d_39[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_39 (BatchNo (None, 8, 8, 156) 624 concatenate_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_39 (Activation) (None, 8, 8, 156) 0 batch_normalization_39[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_40 (Conv2D) (None, 8, 8, 12) 1872 activation_39[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_3 (AveragePoo (None, 4, 4, 12) 0 conv2d_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_40 (BatchNo (None, 4, 4, 12) 48 average_pooling2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_40 (Activation) (None, 4, 4, 12) 0 batch_normalization_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_41 (Conv2D) (None, 4, 4, 12) 1296 activation_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_37 (Concatenate) (None, 4, 4, 24) 0 average_pooling2d_3[0][0] \n",
" conv2d_41[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_41 (BatchNo (None, 4, 4, 24) 96 concatenate_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_41 (Activation) (None, 4, 4, 24) 0 batch_normalization_41[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_42 (Conv2D) (None, 4, 4, 12) 2592 activation_41[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_38 (Concatenate) (None, 4, 4, 36) 0 concatenate_37[0][0] \n",
" conv2d_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_42 (BatchNo (None, 4, 4, 36) 144 concatenate_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_42 (Activation) (None, 4, 4, 36) 0 batch_normalization_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_43 (Conv2D) (None, 4, 4, 12) 3888 activation_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_39 (Concatenate) (None, 4, 4, 48) 0 concatenate_38[0][0] \n",
" conv2d_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_43 (BatchNo (None, 4, 4, 48) 192 concatenate_39[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_43 (Activation) (None, 4, 4, 48) 0 batch_normalization_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_44 (Conv2D) (None, 4, 4, 12) 5184 activation_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_40 (Concatenate) (None, 4, 4, 60) 0 concatenate_39[0][0] \n",
" conv2d_44[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_44 (BatchNo (None, 4, 4, 60) 240 concatenate_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_44 (Activation) (None, 4, 4, 60) 0 batch_normalization_44[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_45 (Conv2D) (None, 4, 4, 12) 6480 activation_44[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_41 (Concatenate) (None, 4, 4, 72) 0 concatenate_40[0][0] \n",
" conv2d_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_45 (BatchNo (None, 4, 4, 72) 288 concatenate_41[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_45 (Activation) (None, 4, 4, 72) 0 batch_normalization_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_46 (Conv2D) (None, 4, 4, 12) 7776 activation_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_42 (Concatenate) (None, 4, 4, 84) 0 concatenate_41[0][0] \n",
" conv2d_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_46 (BatchNo (None, 4, 4, 84) 336 concatenate_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_46 (Activation) (None, 4, 4, 84) 0 batch_normalization_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_47 (Conv2D) (None, 4, 4, 12) 9072 activation_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_43 (Concatenate) (None, 4, 4, 96) 0 concatenate_42[0][0] \n",
" conv2d_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_47 (BatchNo (None, 4, 4, 96) 384 concatenate_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_47 (Activation) (None, 4, 4, 96) 0 batch_normalization_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_48 (Conv2D) (None, 4, 4, 12) 10368 activation_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_44 (Concatenate) (None, 4, 4, 108) 0 concatenate_43[0][0] \n",
" conv2d_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_48 (BatchNo (None, 4, 4, 108) 432 concatenate_44[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_48 (Activation) (None, 4, 4, 108) 0 batch_normalization_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_49 (Conv2D) (None, 4, 4, 12) 11664 activation_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_45 (Concatenate) (None, 4, 4, 120) 0 concatenate_44[0][0] \n",
" conv2d_49[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_49 (BatchNo (None, 4, 4, 120) 480 concatenate_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_49 (Activation) (None, 4, 4, 120) 0 batch_normalization_49[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_50 (Conv2D) (None, 4, 4, 12) 12960 activation_49[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_46 (Concatenate) (None, 4, 4, 132) 0 concatenate_45[0][0] \n",
" conv2d_50[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_50 (BatchNo (None, 4, 4, 132) 528 concatenate_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_50 (Activation) (None, 4, 4, 132) 0 batch_normalization_50[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_51 (Conv2D) (None, 4, 4, 12) 14256 activation_50[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_47 (Concatenate) (None, 4, 4, 144) 0 concatenate_46[0][0] \n",
" conv2d_51[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_51 (BatchNo (None, 4, 4, 144) 576 concatenate_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_51 (Activation) (None, 4, 4, 144) 0 batch_normalization_51[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_52 (Conv2D) (None, 4, 4, 12) 15552 activation_51[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_48 (Concatenate) (None, 4, 4, 156) 0 concatenate_47[0][0] \n",
" conv2d_52[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_52 (BatchNo (None, 4, 4, 156) 624 concatenate_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_52 (Activation) (None, 4, 4, 156) 0 batch_normalization_52[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_4 (AveragePoo (None, 2, 2, 156) 0 activation_52[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten_1 (Flatten) (None, 624) 0 average_pooling2d_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"dense_1 (Dense) (None, 10) 6250 flatten_1[0][0] \n",
"==================================================================================================\n",
"Total params: 434,014\n",
"Trainable params: 425,278\n",
"Non-trainable params: 8,736\n",
"__________________________________________________________________________________________________\n"
]
}
],
"source": [
"model = Model(inputs=[input], outputs=[output])\n",
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "b4XOsW3ahSkL"
},
"outputs": [],
"source": [
"# determine Loss function and Optimizer\n",
"sgd = SGD(lr=0.1, momentum=0.9, nesterov=True)\n",
"model.compile(loss='categorical_crossentropy',\n",
" optimizer=sgd,\n",
" metrics=['accuracy'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Image Augmentation\n",
"\n",
"- Rotation, the model is confused between dogs and cats at different rotation position\n",
"- Add zoom range \n",
"- Shift of up down\n",
"- Shift of left and right\n",
"- Shear range\n",
"- Horizontal flip"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"datagen = ImageDataGenerator(width_shift_range=0.05, height_shift_range=0.05, shear_range=0.05,\n",
" zoom_range=0.05, fill_mode='nearest', horizontal_flip=True)\n",
"datagen.fit(x_train)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1771
},
"colab_type": "code",
"id": "crhGk7kEhXAz",
"outputId": "e3e2d0d0-1492-41ab-df5b-5a7ecd705c2c",
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/25\n",
"200/200 [==============================] - 131s 656ms/step - loss: 1.7398 - acc: 0.3827 - val_loss: 2.3229 - val_acc: 0.2981\n",
"Epoch 2/25\n",
"200/200 [==============================] - 123s 617ms/step - loss: 1.3004 - acc: 0.5287 - val_loss: 2.4500 - val_acc: 0.3313\n",
"Epoch 3/25\n",
"200/200 [==============================] - 124s 620ms/step - loss: 1.0823 - acc: 0.6147 - val_loss: 1.2594 - val_acc: 0.5695\n",
"Epoch 4/25\n",
"200/200 [==============================] - 125s 623ms/step - loss: 0.9271 - acc: 0.6685 - val_loss: 1.3724 - val_acc: 0.5882\n",
"Epoch 5/25\n",
"200/200 [==============================] - 125s 625ms/step - loss: 0.8172 - acc: 0.7112 - val_loss: 1.2374 - val_acc: 0.5953\n",
"Epoch 6/25\n",
"200/200 [==============================] - 125s 626ms/step - loss: 0.7394 - acc: 0.7400 - val_loss: 1.2518 - val_acc: 0.6198\n",
"Epoch 7/25\n",
"200/200 [==============================] - 125s 626ms/step - loss: 0.6756 - acc: 0.7624 - val_loss: 0.9029 - val_acc: 0.6967\n",
"Epoch 8/25\n",
"200/200 [==============================] - 125s 627ms/step - loss: 0.6208 - acc: 0.7815 - val_loss: 0.9332 - val_acc: 0.6914\n",
"Epoch 9/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.5855 - acc: 0.7948 - val_loss: 0.9463 - val_acc: 0.6940\n",
"Epoch 10/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.5455 - acc: 0.8088 - val_loss: 0.9990 - val_acc: 0.6961\n",
"Epoch 11/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.5209 - acc: 0.8174 - val_loss: 0.9168 - val_acc: 0.7176\n",
"Epoch 12/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.4883 - acc: 0.8294 - val_loss: 0.6579 - val_acc: 0.7798\n",
"Epoch 13/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.4648 - acc: 0.8368 - val_loss: 0.8200 - val_acc: 0.7474\n",
"Epoch 14/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.4460 - acc: 0.8446 - val_loss: 0.7980 - val_acc: 0.7439\n",
"Epoch 15/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.4243 - acc: 0.8526 - val_loss: 0.6542 - val_acc: 0.7864\n",
"Epoch 16/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.4099 - acc: 0.8544 - val_loss: 0.5500 - val_acc: 0.8196\n",
"Epoch 17/25\n",
"200/200 [==============================] - 125s 627ms/step - loss: 0.3902 - acc: 0.8636 - val_loss: 0.5449 - val_acc: 0.8102\n",
"Epoch 18/25\n",
"200/200 [==============================] - 126s 628ms/step - loss: 0.3756 - acc: 0.8683 - val_loss: 0.9821 - val_acc: 0.7316\n",
"Epoch 19/25\n",
"200/200 [==============================] - 126s 629ms/step - loss: 0.3641 - acc: 0.8712 - val_loss: 0.5663 - val_acc: 0.8135\n",
"Epoch 20/25\n",
"200/200 [==============================] - 127s 633ms/step - loss: 0.3477 - acc: 0.8782 - val_loss: 0.6375 - val_acc: 0.7999\n",
"Epoch 21/25\n",
"200/200 [==============================] - 126s 631ms/step - loss: 0.3380 - acc: 0.8821 - val_loss: 0.8798 - val_acc: 0.7512\n",
"Epoch 22/25\n",
"200/200 [==============================] - 126s 631ms/step - loss: 0.3233 - acc: 0.8860 - val_loss: 0.7800 - val_acc: 0.7685\n",
"Epoch 23/25\n",
"200/200 [==============================] - 126s 632ms/step - loss: 0.3106 - acc: 0.8908 - val_loss: 0.5561 - val_acc: 0.8216\n",
"Epoch 24/25\n",
"200/200 [==============================] - 127s 633ms/step - loss: 0.2982 - acc: 0.8953 - val_loss: 0.5910 - val_acc: 0.8213\n",
"Epoch 25/25\n",
"200/200 [==============================] - 126s 631ms/step - loss: 0.2959 - acc: 0.8958 - val_loss: 0.6032 - val_acc: 0.8137\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x7f2a498d3940>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size),\n",
" epochs=epochs,\n",
" verbose=1,\n",
" validation_data=(x_test, y_test))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"colab_type": "code",
"id": "ZcWydmIVhZGr",
"outputId": "a0345aa5-79ff-4e56-eb94-50437b43c4fe"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 11s 1ms/step\n",
"Test loss: 0.6031653834104538\n",
"Test accuracy: 0.8137\n"
]
}
],
"source": [
"# Test the model\n",
"score = model.evaluate(x_test, y_test, verbose=1)\n",
"print('Test loss:', score[0])\n",
"print('Test accuracy:', score[1])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"predictions = model.predict(x_test)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2ac69a6e10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(predictions, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"pred_arg = predictions.argmax(axis=1)\n",
"y_argmax = y_test.argmax(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2b2808b8d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Correct images\n",
"is_correct = rand_by_mask(pred_arg == y_argmax)\n",
"plot_imgs(is_correct, x_test, y_argmax, pred_arg)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2a42d30cf8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# images that we got wrong\n",
"is_wrong = rand_by_mask(pred_arg != y_argmax)\n",
"plot_imgs(is_wrong, x_test, y_argmax, pred_arg)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2a42bed278>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# images that have actual prediction 5 and predicted cls 3\n",
"actual_cls = 5\n",
"predicted_cls = 3\n",
"actual_5_pred_3 = (pred_arg != y_argmax) & (pred_arg == predicted_cls) & (y_argmax == actual_cls)\n",
"is_wrong = rand_by_mask(actual_5_pred_3)\n",
"plot_imgs(is_wrong, x_test, y_argmax, pred_arg)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2a42afb9b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# images that have actual prediction 5 and predicted cls 3\n",
"actual_cls = 3\n",
"predicted_cls = 5\n",
"actual_5_pred_3 = (pred_arg == predicted_cls) & (y_argmax == actual_cls)\n",
"\n",
"is_correct = rand_by_mask(actual_5_pred_3)\n",
"plot_imgs(is_correct, x_test, y_argmax, pred_arg)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "UE3lF6EH1r_L",
"outputId": "92df862c-76a7-4a02-9533-6c164bc5984d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saved model to disk\n"
]
}
],
"source": [
"# Save the trained weights in to .h5 format\n",
"model.save_weights(\"DNST_model_changelog_row_15_and_more_filters.h5\")\n",
"print(\"Saved model to disk\")"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ai-yZ2ED5AK1"
},
"outputs": [],
"source": [
"from google.colab import files\n",
"\n",
"files.download('DNST_model.h5')"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Og56VCRh5j8V"
},
"outputs": [],
"source": []
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "DNST_CIFAR10_AUG.ipynb",
"provenance": [],
"version": "0.3.2"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment