首页 > 解决方案 > 模型层数

问题描述

我正在训练CNN。出于报告目的,我想找出我的模型具有的层数。

从我在下面的代码中看到,我一共有6层,layer1、layer2、conv2_drop、fc1、fc2、fc3。我对吗?

Net(
  (layer1): Sequential(
    (0): Conv2d(3, 10, kernel_size=(5, 5), stride=(1, 1))
    (1): BatchNorm2d(10, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (2): ReLU()
    (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (4): Dropout(p=0.2, inplace=False)
  )
  (layer2): Sequential(
    (0): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1))
    (1): BatchNorm2d(20, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (2): ReLU()
    (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (4): Dropout(p=0.2, inplace=False)
  )
  (conv2_drop): Dropout2d(p=0.5, inplace=False)
  (fc1): Linear(in_features=500, out_features=250, bias=True)
  (fc2): Linear(in_features=250, out_features=50, bias=True)
  (fc3): Linear(in_features=50, out_features=10, bias=True)
)

我的 NN 有 6 层,还是 layer1 和 layer2 本身又增加了 4 层?那总共是14层吗?

标签: neural-networkconv-neural-networkpytorch

解决方案


不完全清楚人们会考虑什么层(是flattening层还是只是一个操作?如果它被实现为torch.nn.Module呢?)。本质上,神经网络是执行操作的图,层是一种有用的抽象,可以帮助我们推理它们。

在 IMO 的 PyTorch 中,它将是 的单个实例torch.nn.Module,因此在这种情况下它将是14. 更重要的是,BatchNorm它被普遍认为是一个层,为了方便起见,我也会将其他层 ( ReLU, MaxPool2d, Dropout) 视为层。

layer1在这种情况下,layer2它更像是一个块(层堆叠)。仍然是您的fc1,fc2并且fc3应该是 IMO(注意我已经再次使用它)编码为另一个blocktorch.nn.Seqeuntial可能包含在其中)。


推荐阅读