leemengtaiwan
11/9/2017 - 2:32 PM

Keras建立CNN model的template

Keras建立CNN model的template(基本五步驟: Define model ->Create model instance -> Compile the model -> Fit/Train -> Evaluate/Test)

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)