【问题标题】:Keras CNN model parameters calculationKeras CNN模型参数计算
【发布时间】: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


【解决方案1】:

这是一个相当简单的基本概念计算。通过查看您的代码和模型摘要,这是我的步骤。

第一步:计算参数的公式

total_params =
(filter_height * filter_width * input_image_channels + 1) * number_of_filters

第 2 步:计算第一层的参数

filter_height = 5,
filter_weight = 5,
input_image_channels = 1
number_of_filters = 32
虽然你还没有向我们提供输入 图像通道,但我是根据您的参数值计算出来的。

现在我们将计算第一个卷积层的参数数量。

total_param = (5*5*1 + 1)*32 = 832

第 3 步: 同样我们可以计算第二个 conv 层。 请注意,前一层的过滤器数量会成为当前层输入图像的通道数。

filter_height = 5,
filter_weight = 5,
input_image_channels = 32
number_of_filters = 64

现在我们将计算第二个卷积层的参数数量。

total_param = (5*5*32 + 1)*64 = 51264

【讨论】:

  • 谢谢!这是有道理的
  • 嘿@jingweimo,如果我的回答有道理,请采纳。
  • @blitu12345 谢谢你的回答,你知道我们为什么加1吗?
  • @Rami 偏见
  • @Rami,如果是 Convolution2D(32, 5, 5, input_shape=input_shape, bias=False),则不加 1。默认为 true。
【解决方案2】:

关于问题的第二部分:

Dropout 层在训练期间随机禁用神经元。它们仍然存在于您的模型中,因此不会从模型摘要中的参数数量中扣除。

【讨论】:

    【解决方案3】:

    在创建网络后键入 model.count_params()。

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 2020-03-19
      • 1970-01-01
      • 2020-07-11
      • 2019-03-05
      • 2018-08-31
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多