模型的层数

时间:2019-11-03 13:35:32

标签: neural-network conv-neural-network pytorch

我正在训练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层?

1 个答案:

答案 0 :(得分:0)

尚不清楚一个层将被视为哪一层(flattening是一层还是仅仅是一个操作?如果将其实现为torch.nn.Module会怎样?)。神经网络本质上是执行操作的图形,层是一种有用的抽象,可以帮助我们对它们进行推理。

在IMO的PyTorch中,它将是torch.nn.Module的单个实例,因此在这种情况下,它将是14。甚至更是如此,BatchNorm被普遍认为是一层,为了简便起见,我也将其他人(ReLUMaxPool2dDropout)也视为一个层。

在这种情况下,

layer1layer2更像是一个块(层堆叠)。您的fc1fc2fc3仍然应该是IMO(请注意,我再次使用过)编码为另一个block(可能包裹在torch.nn.Seqeuntial中)。