我使用Keras 1.1.1創建的cnn模型有兩個卷積池層,後面是兩個密集層,在第二個卷積池層和第一個密集層之後添加了丟失。的代碼如下:Keras CNN模型參數計算
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個特徵地圖。
此外,我已經實施了丟失。爲什麼參數表不能反映這一點。看起來沒有丟失的參數號碼被給出,儘管在表格中列出了丟失(層)。任何人都可以幫我解釋參數摘要?
關於丟失:這在訓練期間隨機禁用神經元。它們仍然存在於您的模型中,因此不會因模型摘要中的參數數量而減少。 – petezurich
我認爲你是對的 – jingweimo