【问题标题】:Counting CNN layers计算 CNN 层数
【发布时间】:2019-08-21 12:12:34
【问题描述】:

我为我参与的一个项目创建了一个 CNN,我需要展示它。问题是,我不确定如何计算层数。

这是我的模型:

model = Sequential()
model.add(Conv2D(64,(3,3), input_shape = (40,40,2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))


model.add(Dense(1600))
model.add(Reshape((40,40)))
model.add(Activation('sigmoid'))

model.compile(loss='MSE',
             optimizer='SGD',
             metrics=['MAE'])

len(model.layers) 返回 12:

所以我使用了 1 个输入 10 个隐藏 1 个输出层,

我需要将它们算作一个组,并说 1 输入 2 隐藏 1 输出?

【问题讨论】:

  • 写12层就行了,不用说输入层和隐藏层,这些概念有点过时了
  • 哦,我明白了,谢谢 :)
  • 命名约定省略了网络中的输入层,因此您的架构可以有 11 层。要了解更多信息,请参阅cs231n.github.io/neural-networks-1
  • 在通常的实践中,我们只计算卷积层和密集层。例如,VGG-16 在paper 中被描述为具有 16 个权重层的网络。您的网络是一个 4 层网络 (2 conv + 2 fc)。

标签: python tensorflow keras neural-network deep-learning


【解决方案1】:

在计算 CNN 网络的深度时,我们只考虑具有可调/可训练权重/参数的层。在 CNN 中,只有卷积层和全连接层具有可训练的参数。如果要标记层,请仅考虑卷积层、全连接层和输出层(Conv2D 和 Dense)。 Max Pooling Layers 一般与卷积层合为一层。

【讨论】:

  • 严格来说,batchnorm 层中有一些可训练的参数,但我们也不计算 bn 层:)
  • 是的,即使我们在 Batch Normalization 中有可训练的 gamma 和 beta 参数,我们也不将其视为一个层。这是激活值的归一化技术??。
猜你喜欢
  • 2017-08-27
  • 2015-07-23
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2020-09-19
  • 2020-04-08
相关资源
最近更新 更多