【Pytorch】view的用法

torch.Tensor.view会返回具有相同数据但大小不同的新张量。 返回的张量必须有与原张量相同的数据和相同数量的元素,但可以有不同的大小。一个张量必须是连续contiguous()的才能被查看。类似于Numpy的np.reshape()。

pytorch中view的用法

torch.Tensor.view会将原有数据重新分配为一个新的张量,比如我们使用:

x = torch.randn(2, 4)

会输出一个随机张量:

 1.5600 -1.6180 -2.0366  2.7115
 0.8415 -1.0103 -0.4793  1.5734
[torch.FloatTensor of size 2x4]

然后我们看一下使用view重新构造一个Tensor

y = x.view(4,2)
print y

# 输出如下
 1.5600 -1.6180
-2.0366  2.7115
 0.8415 -1.0103
-0.4793  1.5734
[torch.FloatTensor of size 4x2]

从这里我们可以看出来他的作用,既然这样,我们可以将他变成一个三维数组:

z = x.view(2,2,2)

# 输出
(0 ,.,.) = 
  1.5600 -1.6180
 -2.0366  2.7115

(1 ,.,.) = 
  0.8415 -1.0103
 -0.4793  1.5734
[torch.FloatTensor of size 2x2x2]

注意:我们不能随便定义参数,需要根据自己的数据使用,比如x.view(2,2,1)会返回错误RuntimeError: invalid argument 2: size '[2 x 2 x 1]' is invalid for input of with 8 elements at /Users/soumith/code/builder/wheel/pytorch-src/torch/lib/TH/THStorage.c:41

下面是官方的案例:

x = torch.randn(4, 4)
print x
print x.size()

# 输出(4L, 4L)

y = x.view(16)
print y.size()
# 输出(16L,)

z = x.view(-1, 8)  # the size -1 is inferred from other dimensions
print z.size()

# 输出(2L, 8L)

转自:https://ptorch.com/news/59.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值