-
Notifications
You must be signed in to change notification settings - Fork 0
Create a model (1) using function API
import os
import numpy as np
from keras.models import Sequential, Model
from keras.layers import Activation, Dropout, Flatten, Dense, Input
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Conv2D, MaxPooling2D, ZeroPadding2D
from keras import optimizers
import scipy
import pylab as pl
import matplotlib.cm as cm
%matplotlib inline
input_shape = (150, 150, 3)
img_width = 150
img_height = 150
nb_train_samples = 2000
nb_validation_samples = 1000
batch_size = 32
epochs = 10
train_data_dir = ‘D:/development/DeepLearningCV/datasets/catsvsdogs/train’
validation_data_dir = ‘D:/development/DeepLearningCV/datasets/catsvsdogs/validation’
# used to rescale the pixel values from [0, 255] to [0, 1] interval
datagen = ImageDataGenerator(rescale=1./255)
# automagically retrieve images and their classes for train and validation sets
train_generator = datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=16,
class_mode=‘binary’)
validation_generator = datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=32,
class_mode=‘binary’)
input_img = Input(shape=(150, 150, 3), name=‘input_img’)
conv2d_1 = Conv2D(32, (3, 3), name=‘conv2d_1’)(input_img)
activation_2 = Activation(‘relu’, name=‘activation_2’)(conv2d_1)
max_pooling2d_3 = MaxPooling2D(pool_size=(2, 2), name=‘max_pooling2d_3’)(activation_2)
dropout_4 = Dropout(0.5, name=‘dropout_4’)(max_pooling2d_3)
conv2d_5 = Conv2D(32, (3, 3), name=‘conv2d_5’)(dropout_4);
activation_6 = Activation(‘relu’, name=‘activation_6’)(conv2d_5)
max_pooling2d_7 = MaxPooling2D(pool_size=(2, 2), name=‘max_pooling2d_7’)(activation_6)
dropout_8 = Dropout(0.5, name=‘dropout_8’)(max_pooling2d_7)
conv2d_9 = Conv2D(64, (3, 3), name=‘conv2d_9’)(dropout_8)
activation_10 = Activation(‘relu’, name=‘activation_10’)(conv2d_9)
max_pooling2d_11 = MaxPooling2D(pool_size=(2, 2), name=‘max_pooling2d_11’)(activation_10)
dropout_12 =Dropout(0.5, name=‘dropout_12’)(max_pooling2d_11)
flatten_13 = Flatten(name=‘flatten_13’)(dropout_12)
dense_14 = Dense(64, name=‘dense_14’)(flatten_13)
activation_15 = Activation(‘relu’, name=‘activation_15’)(dense_14)
dropout_16 = Dropout(0.5, name=‘dropout_16’)(activation_15)
dense_17 = Dense(1, name=‘dense_17’)(dropout_16)
activation_18 = Activation(‘sigmoid’, name=‘activation_18’)(dense_17)
model = Model(inputs=input_img, outputs=activation_18)
print(model.summary())
model.compile(loss=‘binary_crossentropy’,
optimizer=‘rmsprop’,
metrics=[‘accuracy’])
Layer (type) Output Shape Param #
=============
input_img (InputLayer) (None, 150, 150, 3) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 148, 148, 32) 896
_________________________________________________________________
activation_2 (Activation) (None, 148, 148, 32) 0
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 74, 74, 32) 0
_________________________________________________________________
dropout_4 (Dropout) (None, 74, 74, 32) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 72, 72, 32) 9248
_________________________________________________________________
activation_6 (Activation) (None, 72, 72, 32) 0
_________________________________________________________________
max_pooling2d_7 (MaxPooling2 (None, 36, 36, 32) 0
_________________________________________________________________
dropout_8 (Dropout) (None, 36, 36, 32) 0
_________________________________________________________________
conv2d_9 (Conv2D) (None, 34, 34, 64) 18496
_________________________________________________________________
activation_10 (Activation) (None, 34, 34, 64) 0
_________________________________________________________________
max_pooling2d_11 (MaxPooling (None, 17, 17, 64) 0
_________________________________________________________________
dropout_12 (Dropout) (None, 17, 17, 64) 0
_________________________________________________________________
flatten_13 (Flatten) (None, 18496) 0
_________________________________________________________________
dense_14 (Dense) (None, 64) 1183808
_________________________________________________________________
activation_15 (Activation) (None, 64) 0
_________________________________________________________________
dropout_16 (Dropout) (None, 64) 0
_________________________________________________________________
dense_17 (Dense) (None, 1) 65
_________________________________________________________________
activation_18 (Activation) (None, 1) 0
=============
Total params: 1,212,513
Trainable params: 1,212,513
Non-trainable params: 0
_________________________________________________________________
None