view() 操作:
在torch里面,view函数相当于numpy的reshape,来看几个例子:
a = torch.arange(1, 17) # a's shape is (16,)
# 将1*16大小变为4*4大小
a.view(4, 4) # output below
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
[torch.FloatTensor of size 4x4]
# 将1*16大小变为2*2*4大小
a.view(2, 2, 4) # output below
tensor([[[ 1, 2, 3, 4],
[ 5, 6, 7, 8]],
[[ 9, 10, 11, 12],
[13, 14, 15, 16]]])
[torch.FloatTensor of size 2x2x4]
view(-1) 操作:
在函数的参数中经常可以看到-1例如x.view(-1, 4)
这里-1表示一个不确定的数,就是你如果不确定你想要reshape成几行,但是你很肯定要reshape成4列,那不确定的地方就可以写成-1
举例一:
例如一个长度的16向量x,
x.view(-1, 4)等价于x.view(4, 4)
x.view(-1, 2)等价于x.view(8,2)
举例二:
import torch
a = torch.randn(3,5,2)
print(a)
print(a.view(-1))
运行结果:
原来是三维的,现在只有一个-1,那么就是生成一维的,那么就是只有一行数据