Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def custom_single_cnn(size, conv_layers=(8, 16, 32, 64), dense_layers=(512, 256), conv_dropout=0.2,
- dense_dropout=0.2):
- model = Sequential()
- model.add(
- Conv2D(conv_layers[0], kernel_size=(3, 3), padding='same', activation='relu', input_shape=(size, size, 1)))
- model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
- if conv_dropout:
- model.add(Dropout(conv_dropout))
- for conv_layer_size in conv_layers[1:]:
- model.add(Conv2D(conv_layer_size, kernel_size=(3, 3), activation='relu'))
- model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
- if conv_dropout:
- model.add(Dropout(conv_dropout))
- model.add(Flatten())
- for dense_layer_size in dense_layers:
- model.add(Dense(dense_layer_size, activation='relu'))
- model.add(Activation('relu'))
- if dense_dropout:
- model.add(Dropout(dense_dropout))
- model.add(Dense(NCATS, activation='softmax'))
- return model
- <Model Declaration>
- model = custom_single_cnn(size=size,
- conv_layers=[128, 128, 256],
- dense_layers=[2048],
- conv_dropout=False,
- dense_dropout=0.10 )
- model.compile(optimizer=Adam(lr=0.002), loss='categorical_crossentropy',
- metrics=[categorical_crossentropy, categorical_accuracy, top_3_accuracy])
- print(model.summary())
Add Comment
Please, Sign In to add comment