统计卷积神经网络层数

5

我参与了一个项目,创建了一个卷积神经网络(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个输出层?


3
只需写出12层,无需谈论输入或隐藏层,这些概念有点过时了。 - Dr. Snoopy
哦,我明白了,谢谢 :) - Olca Orakcı
1
命名约定在网络中省略了输入层,因此您的架构可以有11层。要了解更多,请参见http://cs231n.github.io/neural-networks-1/。 - mlneural03
1
在常见的做法中,我们只计算卷积层和全连接层。例如,在VGG-16论文中,VGG-16被描述为一个具有16个权重层的网络。而你的网络是一个4层网络(2个卷积层+2个全连接层)。 - huangbiubiu
1个回答

9

在计算CNN网络的深度时,我们只考虑具有可调/可训练权重/参数的层。在CNN中,只有卷积层和全连接层才具有可训练的参数。如果您想标记层,请仅考虑卷积层、完全连接层和输出层(Conv2D和Dense)。 池化层通常与卷积层一起作为一个层处理。


3
严格来说,batchnorm层中有一些可训练的参数,但我们也不计算bn层 :) - huangbiubiu
1
是的,即使在批量归一化中我们有可训练的伽马和贝塔参数,但我们不认为它是一个层。它是一种用于激活值的归一化技术。 - Ranmal Dewage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接