Torch 中的 setNumInputDims 应该做啥?
Posted
技术标签:
【中文标题】Torch 中的 setNumInputDims 应该做啥?【英文标题】:What is setNumInputDims in Torch supposed to be doing?Torch 中的 setNumInputDims 应该做什么? 【发布时间】:2017-08-05 08:28:53 【问题描述】: minibatch = torch.Tensor(5, 2, 3,5)
m = nn.View(-1):setNumInputDims(1)
m:forward(minibatch)
给出一个大小的张量
30x5
m = nn.View(-1):setNumInputDims(3)
m:forward(minibatch)
给出一个大小的张量
5 x 30
m = nn.View(-1):setNumInputDims(2)
m:forward(minibatch)
给出一个大小的张量
10 x 15
发生了什么事?我不明白为什么我得到我现在的尺寸。 我认为我不理解它的原因是我认为 View m 期望 n dims 作为输入。因此,如果 n = 1,那么我们将 5 作为第一个暗淡,将 30 作为第二个暗淡,这似乎是当 numInputDims 设置为 2 时发生的情况。
【问题讨论】:
【参考方案1】:顾名思义,View(-1):setNumInputDims(n)就是设置View(-1)的输入维数。
要了解View(-1)的作用,请参考How view() method works for tensor in torch
如果有任何情况你不知道你想要多少行但确定列的数量,那么你可以将它称为 -1(你可以将它扩展到张量更多维度。只有一个轴值可以是-1)。这是一种告诉图书馆的方式;给我一个包含这么多列的张量,然后你计算出实现这一点所需的适当行数。
所以 View(-1) 将输入转换为二维矩阵。注意 View(-1) 对应于该矩阵的列。因此它的输入维度是完整输入的后半部分。它的维度数意味着为列“分配”了多少维度,并且这些维度之前的任何维度都用于行。
因此在您的示例中:
minibatch = torch.Tensor(5, 2, 3,5)
m = nn.View(-1):setNumInputDims(2)
它将最后两个维度 (3*5) 分配给列,将前两个维度 (5*2) 分配给行。结果张量为 10*15。
【讨论】:
以上是关于Torch 中的 setNumInputDims 应该做啥?的主要内容,如果未能解决你的问题,请参考以下文章
PyTorch中的torch.Tensor.permute()和torch.Tensor.transpose()的区别