【问题标题】: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 时发生的情况。

【问题讨论】:

    标签: torch


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2013-03-29
      • 2014-10-26
      • 2011-06-20
      相关资源
      最近更新 更多