我正在训练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层?
答案 0 :(得分:0)
尚不清楚一个层将被视为哪一层(flattening
是一层还是仅仅是一个操作?如果将其实现为torch.nn.Module
会怎样?)。神经网络本质上是执行操作的图形,层是一种有用的抽象,可以帮助我们对它们进行推理。
在IMO的PyTorch中,它将是torch.nn.Module
的单个实例,因此在这种情况下,它将是14
。甚至更是如此,BatchNorm
被普遍认为是一层,为了简便起见,我也将其他人(ReLU
,MaxPool2d
,Dropout
)也视为一个层。
layer1
和layer2
更像是一个块(层堆叠)。您的fc1
,fc2
和fc3
仍然应该是IMO(请注意,我再次使用过)编码为另一个block
(可能包裹在torch.nn.Seqeuntial
中)。