【发布时间】:2017-11-20 08:53:43
【问题描述】:
我的 cnn 模型是使用 Keras 1.1.1 创建的,它有两个卷积池层和两个密集层,并且在第二个卷积池层和第一个密集层之后添加了 dropout。代码如下:
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 个特征图。
此外,我已经实现了 dropout。为什么参数表没有反映这一点。尽管表中列出了 dropout(层),但似乎给出了没有 dropout 的参数编号。谁能帮我解释一下参数摘要?
【问题讨论】:
-
关于 dropout:这会在训练期间随机禁用神经元。它们仍然存在于您的模型中,因此不会从模型摘要中的参数数量中扣除。
-
我认为你是对的
标签: keras