我使用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