Skip to content

Instantly share code, notes, and snippets.

@miki998
Created March 21, 2020 17:02
Show Gist options
  • Save miki998/8acf45d5ab8785e6b6519c5084842326 to your computer and use it in GitHub Desktop.
Save miki998/8acf45d5ab8785e6b6519c5084842326 to your computer and use it in GitHub Desktop.
cnn_model for hyperas.py
def create_model(X_train,y_train,X_test,y_test):
# Initialising the CNN
model = Sequential()
# 1 - Convolution
model.add(Conv2D(64,(3,3), padding='same', input_shape=(48, 48,1)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout({{uniform(0,1)}}))
# 2nd Convolution layer
model.add(Conv2D(128,(5,5), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout({{uniform(0,1)}}))
# 3rd Convolution layer
model.add(Conv2D(512,(3,3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
#1st Max Pool Layer
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout({{uniform(0,1)}}))
# 4th Convolution layer
model.add(Conv2D(512,(3,3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
# 5h Convolution layer
if {{choice(['four', 'five'])}} == 'five':
model.add(Conv2D(512,(3,3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
#2nd Max Pool Layer
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout({{uniform(0,1)}}))
# Flattening
model.add(Flatten())
# Fully connected layer 1st layer
model.add(Dense({{choice([256, 512, 1024])}}))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout({{uniform(0,1)}}))
# Fully connected layer 2nd layer
model.add(Dense({{choice([512, 1024])}}))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout({{uniform(0,1)}}))
model.add(Dense(4, activation='softmax'))
model.compile(optimizer={{choice(['rmsprop', 'adam', 'sgd'])}}, loss='categorical_crossentropy', metrics=['accuracy'])
result = model.fit(X_train, y_train,
batch_size={{choice([64, 128])}},
epochs=10,
verbose=2,
validation_data=(X_test, y_test))
validation_acc = np.amax(result.history['val_acc'])
print('Best validation acc of epoch:', validation_acc)
return {'loss': -validation_acc, 'status': STATUS_OK, 'model': model}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment