def MyCNN_Keras2(X, nb_classes, nb_layers=4):
from keras import backend as K
K.set_image_data_format('channels_first')
nb_filters = 32 # number of convolutional filters = "feature maps"
kernel_size = (3, 3) # convolution kernel size
pool_size = (2, 2) # size of pooling area for max pooling
cl_dropout = 0.5 # conv. layer dropout
dl_dropout = 0.8 # dense layer dropout
channels = X.shape[1] # channels = 1 for mono, 2 for stereo
print(" MyCNN_Keras2: X.shape = ",X.shape,", channels = ",channels)
input_shape = (channels, X.shape[2], X.shape[3])
model = Sequential()
#model.add(Conv2D(nb_filters, kernel_size, border_mode='valid', input_shape=input_shape))
model.add(Conv2D(nb_filters, kernel_size, border_mode='valid', input_shape=input_shape))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
for layer in range(nb_layers-1): # add more layers than just the first
model.add(Conv2D(nb_filters, kernel_size))
model.add(BatchNormalization(axis=1))
model.add(ELU(alpha=1.0))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(cl_dropout))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(dl_dropout))
model.add(Dense(nb_classes))
model.add(Activation("softmax"))
model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
return model
评论列表
文章目录