import keras.backend as K
K.set_image_data_format('channels_last')
def Model(input_shape):
# Define the input placeholder as a tensor with shape input_shape. Think of this as your input image!
X_input = Input(input_shape)
# Zero-Padding: pads the border of X_input with zeroes
X = ZeroPadding2D((3, 3))(X_input)
# CONV -> BN -> RELU Block applied to X
X = Conv2D(32, (7, 7), strides = (1, 1), name = 'conv0')(X)
X = BatchNormalization(axis = 3, name = 'bn0')(X)
X = Activation('relu')(X)
# MAXPOOL
X = MaxPooling2D((2, 2), name='max_pool')(X)
# FLATTEN X (means convert it to a vector) + FULLYCONNECTED
X = Flatten()(X)
X = Dense(1, activation='sigmoid', name='fc')(X)
# Create model. This creates your Keras model instance, you'll use this instance to train/test the model.
model = Model(inputs = X_input, outputs = X, name='HappyModel')
return model
model = Model(input_shape=(64, 64, 3))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=["accuracy"])
model.fit(x=X_train, y=Y_train, batch_size=16, epochs=10) # (600, 64, 64, 3), (600, 1)
preds = model.evaluate(x=X_test, y=Y_test)