用法:torch.view()返回的数据和传入的tensor一样,只是形状不一样。

注意:返回的tensor和传入的tensor共享内存,也就是修改其中一个,数据都会变。

接下来我们举一个例子:

>>> a = torch.ones(6,3)
>>> a
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])
>>> b = a.view(2,-1)
>>> b
tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1.]])
>>> b = a.view(9,2)
>>> b
tensor([[1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.]])
>>> b = a.view(1,1,-1)
>>> b
tensor([[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
          1.]]])
>>> b = a.view(3,3,-1)
>>> b
tensor([[[1., 1.],
         [1., 1.],
         [1., 1.]],

        [[1., 1.],
         [1., 1.],
         [1., 1.]],

        [[1., 1.],
         [1., 1.],
         [1., 1.]]])

>>> a = torch.rand(3,6)
>>> a
tensor([[0.0091, 0.3211, 0.4842, 0.0589, 0.6838, 0.0532],
        [0.8668, 0.4099, 0.8746, 0.4159, 0.1801, 0.3756],
        [0.1054, 0.1218, 0.4357, 0.9017, 0.3050, 0.4209]])
>>> b = a.view(3,3,-1)
>>> b
tensor([[[0.0091, 0.3211],
         [0.4842, 0.0589],
         [0.6838, 0.0532]],

        [[0.8668, 0.4099],
         [0.8746, 0.4159],
         [0.1801, 0.3756]],

        [[0.1054, 0.1218],
         [0.4357, 0.9017],
         [0.3050, 0.4209]]])
>>> b = a.view(2,3,-1)
>>> b
tensor([[[0.0091, 0.3211, 0.4842],
         [0.0589, 0.6838, 0.0532],
         [0.8668, 0.4099, 0.8746]],

        [[0.4159, 0.1801, 0.3756],
         [0.1054, 0.1218, 0.4357],
         [0.9017, 0.3050, 0.4209]]])

>>> a =torch.ones(3,3,3)
>>> a
tensor([[[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]],

        [[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]],

        [[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]]])

>>> a.view(-1,9)
tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1.]])
>>> a.view(-1,27)
tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
         1., 1., 1., 1., 1., 1., 1., 1., 1.]])

>>> a
tensor([[[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]],

        [[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]],

        [[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]]])
>>> a=a.view(-1,27)
>>> a
tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
         1., 1., 1., 1., 1., 1., 1., 1., 1.]])

更多推荐