view方法

让我们举一些例子,从简到难。

  1. view方法返回张量与self张量相同的数据(这意味着返回的张量具有相同数量的元素),但具有不同的形状。例如:

    a = torch.arange(1, 17)  # a's shape is (16,)
    
    a.view(4, 4) # output below
      1   2   3   4
      5   6   7   8
      9  10  11  12
     13  14  15  16
    [torch.FloatTensor of size 4x4]
    
    a.view(2, 2, 4) # output below
    (0 ,.,.) = 
    1   2   3   4
    5   6   7   8
    
    (1 ,.,.) = 
     9  10  11  12
    13  14  15  16
    [torch.FloatTensor of size 2x2x4]
    
  2. 假设-1不是其中一个参数,当将它们相乘时,结果必须等于张量中的元素数。如果您执行:a.view(3, 3),它将引发RuntimeError,因为对于具有16个元素的输入,形状(3 x 3)无效。换句话说:3 x 3不等于16但是9。

  3. 您可以使用-1作为传递给函数的参数之一,但只能使用一次。所发生的事情是该方法将自动计算维度。例如,a.view(2, -1, 4)等同于a.view(2, 2, 4)。 [16 /(2 x 4)= 2]

  4. 特别请注意,返回的张量共享相同的数据。如果您相对"view"中进行更改,则需要更改原始张量数据:

    b = a.view(4, 4)
    b[0, 2] = 2
    a[2] == 3.0
    False

猜你喜欢

转载自blog.csdn.net/qq_30468133/article/details/85232788
今日推荐