我正在运行一个模型,输入的维度为1x 24 x24 x8。(1是输入通道)输入将通过卷积层编码如下:
nn.Sequential(OrderedDict([
(name+'conv1',nn.Conv3d(in_channels=1,out_channels=8,kernel_size=3,padding=1, bias=False)),
(name+'bnorm1',nn.BatchNorm3d(num_features=8)),
(name+'relu1',nn.ReLU(inplace=True)),
(name+'conv2',nn.Conv3d(in_channels=8, out_channels=8,kernel_size=3,padding=1, bias=False)),
(name+'bnorm2',nn.BatchNorm3d(num_features=8)),
(name+'relu2',nn.ReLU(inplace=True))]))
字符串
因此,在'conv1'
之后,输入的尺寸将变为8x 24 x24 x8(8是输出通道)。kernel_size
是3。
我能理解的是:
我们有8个过滤器,每个过滤器的尺寸为1x 3x 3x 8,或者每个内核的尺寸为3x 3x 8。这里我几乎可以确定过滤器的尺寸,因为内核立方体将覆盖图像立方体,我们将重复8层。
但是,如果在最大池化之后,它进入另一个卷积层:
然后输入将具有8x 12 x12 x4的大小(8是输入通道)
nn.Sequential(OrderedDict([
(name+'conv1',nn.Conv3d(in_channels=8,out_channels= 8*2,kernel_size=3,padding=1, bias=False)),
(name+'bnorm1',nn.BatchNorm3d(num_features=8*2)),
(name+'relu1',nn.ReLU(inplace=True)),
(name+'conv2',nn.Conv3d(in_channels= 8*2, out_channels=8*2, kernel_size=3,padding=1, bias=False)),
(name+'bnorm2',nn.BatchNorm3d(num_features=8*2)),
(name+'relu2',nn.ReLU(inplace=True))]
))
型
因此,在'conv 1'之后,输入的尺寸将更改为16 x12 x12 x4(16是输出通道)。
kernel_size = 3
这里,过滤器的数量是多少?我们有16个过滤器是正确的吗?每个过滤器/内核的维度是多少?
如果我们说每个过滤器的尺寸是8x 3x 3x 4,那么我们应该有2个过滤器才能达到最终尺寸16 x3 x3 x8,对吗?
如果我们说每个过滤器的维度是1x 3x 3x 4,我们有16个过滤器,那么它是如何在8x 12 x12 x4的立方体上移动以生成16 x12 x12 x4的?
1条答案
按热度按时间0qx6xfy61#
只要看看图层权重的形状
字符串