view()
函数对张量x
有什么作用?负值的含义是什么?
x = x.view(-1, 16 * 5 * 5)
回答:
view()
函数重塑张量形状而不复制内存,类似于numpy的reshape()
函数。
假设有一个包含16个元素的张量a
:
import torcha = torch.range(1, 16)
要将这个张量重塑为4 x 4
的张量,可以使用:
a = a.view(4, 4)
现在a
将是一个4 x 4
的张量。*请注意,reshape后元素的总数需要保持不变。将张量a
重塑为3 x 5
的张量是不合适的。*
参数-1的含义是什么?
如果在某些情况下你不知道需要多少行,但确定了列数,你可以用-1来指定。(*请注意,这可以扩展到更多维度的张量。只有一个轴的值可以是-1*)。这是一种告诉库的方式:“给我一个具有这些列数的张量,你来计算需要多少行来实现这一点”。
这可以在这个模型定义代码中看到。在forward函数中的x = self.pool(F.relu(self.conv2(x)))
这行之后,你将得到一个深度为16的特征图。你需要将它展平以提供给全连接层。因此,你告诉PyTorch将你得到的张量重塑为特定数量的列,并让它自己决定行数。