PyTorch中view的用法
把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[,]]还是,因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。比如,a=torch.Tensor([[,]])
b=torch.Tensor()
print(a.view(1,6))
print(b.view(1,6))
得到的结果都是tensor([])
再看一个例子:
a=torch.Tensor([[,]])
print(a.view(3,2))
将会得到:
tensor([,
,
])
相当于就是从1,2,3,4,5,6顺序的拿数组来填充需要的形状。但是如果您想得到如下的结果:
tensor([,
,
])
就需要使用另一个函数了:permute()
参数不可为空。参数中的-1就代表这个位置由其他位置的数字来推断,只要在不致歧义的情况的下,view参数就可以推断出来,也就是人可以推断出形状的情况下,view函数也可以推断出来。比如a tensor的数据个数是6个,如果view(1,-1),我们就可以根据tensor的元素个数推断出-1代表6。而如果是view(-1,-1,2),人不知道怎么推断,机器也不知道。还有一种情况是人可以推断出来,但是机器推断不出来的:view(-1,-1,6),人可以知道-1都代表1,但是机器不允许同时有两个负1。
如果没有-1,那么所有参数的乘积就要和tensor中元素的总个数一致了,否则就会出现错误
https://blog.csdn.net/york1996/article/details/81949843
页:
[1]