火炬神经网络:如何获取输出(特征图)的维度?

3
在卷积模块中,许多参数可能会改变输入的维度。有没有办法获取卷积模块输出的维度,或者一般来说,任何模块的维度?
我尝试查看SpatialConvolution中公开的方法,但没有任何方法可以提供此信息。
此外,输出张量似乎具有以下维度:
conv1 = nn.SpatialConvolution(3, 96, 5, 5, 1, 1, 2, 2)
conv1.id   = 'conv1'
print(conv1.output:size())
[torch.LongStorage of size 0]

有什么想法吗?

我意识到我甚至没有设置输入的维度,除了通道数(即3x32x32)。如何设置?为什么不是必须的?


2
没有这样的方法存在。您需要在函数上调用forward以调整输出大小,然后获取形状。 - smhx
1个回答

5
输出大小取决于您的输入大小。您可以尝试类似以下的内容:
th> require 'nngraph'
th> conv1 = nn.SpatialConvolution(3, 96, 5, 5, 1, 1, 2, 2)()
th> model = nn.gModule({conv1},{conv1})
th> x = torch.rand(3,20,20)
th> y = model:forward(x)
th> y:size()

96
20
20
[torch.LongStorage of size 3]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接