Моя модель cnn, созданная с использованием Keras 1.1.1, имеет два слоя с объединением сверток, за которыми следуют два плотных слоя, и отсев добавляется после второго слоя с сверткой и первого плотного слоя. Коды следующие:
model = Sequential()
#convolution-pooling layers
model.add(Convolution2D(32, 5, 5, input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, 5, 5))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
#dense layers
model.add(Flatten())
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add((Dense(2)))
model.add(Activation('softmax'))
#optimizer
sgd = SGD(lr=1e-3, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer = sgd,
metrics=['accuracy'])
print model.summary()
Сводная модель дает следующую таблицу:
Мне не ясно, как вычисляется число параметров второго слоя свертки (т.е. 51264, обозначенного красным прямоугольником). Я думал, что число будет (5 * 5 + 1) * 64 = 1664, так как ядро свертки имеет размер 5 * 5 и нужно извлечь 64 карты характеристик.
Кроме того, я уже реализовал отсев. Почему таблица параметров не отражает эту точку. Похоже, номер параметра без выпадения задан, хотя выпадение (слой) указано в таблице. Кто-нибудь может помочь мне интерпретировать сводку параметров?