如何在Python中检查神经网络的层数以及何时应该增加层数?

Ant*_*Joy 1 python machine-learning deep-learning keras tensorflow

请对您的想法添加最少的评论,以便我可以改进我的查询。谢谢。-)


我正在处理MNIST数据集并编写一些CNN代码。但是,我对代码中的一些要点感到困惑CNN。如何知道神经网络的层数?根据我目前的理解,我认为它有 6 层和 4 个隐藏层。是对的吗?如果我需要扩展到 10 层怎么办?怎么做?

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2D

model = Sequential()
model.add(Conv2D(28, kernel_size=(3,3), 
                    input_shape = ...))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(128, activation=tf.nn.relu))
model.add(Dropout(0.2))
model.add(Dense(10, activation=tf.nn.softmax))
Run Code Online (Sandbox Code Playgroud)

Pra*_*yut 5

在计算神经网络的层数时,我们通常只计算卷积层和全连接层。池化层与卷积层一起算作一层,Dropout 是一种正则化技术,因此也不会算作单独的层。

作为参考,VGG16模式被定义为16层模型。这 16 层只是卷积层和全连接密集层。如果计算所有池化层和激活层,它将变为 41 层模型,但事实并非如此。参考:VGG16VGG16论文

因此,根据您的代码,您有 3 层(1 个具有 28 个神经元的卷积层、1 个具有 128 个神经元的全连接层和 1 个具有 10 个神经元的全连接层)

至于使其成为 10 层网络,您可以在输出层之前添加更多卷积层或密集层,但这对于 MNIST 数据集来说不是必需的。