Pytorch中view()、squeeze()、unsqueeze()

原文出处:http://milletpu.com/2018/04/07/pytorch-view/

本篇博客主要向大家介绍Pytorch中view()、squeeze()、unsqueeze()函数,这些函数虽然简单,但是在神经网络编程总却经常用到,希望大家看了这篇博文能够把这些函数的作用弄清楚。

import torch

a=torch.Tensor(2,3)

a


3.8686e+25 9.1836e-39 1.2771e-40

9.0079e+15 1.6751e-37 2.9775e-41

[torch.FloatTensor of size 2x3]

view()函数作用是将一个多行的Tensor,拼接成一行。如果一个数为-1,则表示这个维度的大小会根据另外几个维度的大小自动计算,可以看到2*3=1*6

a.view(1,-1)
a



3.8686e+25 9.1836e-39 1.2771e-40 9.0079e+15 1.6751e-37 2.9775e-41

[torch.FloatTensor of size 1x6]

下面是torch中squeeze()和unsqueeze()两个函数。

先介绍squeeze函数

b=torch.Tensor(1,3)

b


3.3447e+30 6.1237e-43 5.9179e+32

[torch.FloatTensor of size 1x3]


b.squeeze(0)
b

3.3447e+30

6.1237e-43

5.9179e+32

[torch.FloatTensor of size 3]


b.squeeze(1)
b

3.3447e+30 6.1237e-43 5.9179e+32

[torch.FloatTensor of size 1x3]

 

squeeze中的参数0、1分别代表第一、第二维度,squeeze(0)表示如果第一维度值为1,则去掉,否则不变。故b的维度(1,3),可去掉1成(3),但不可去掉3。如果还有更高的维度,则squeeze()中的参数可以逐渐增大。

接下来是unsqueeze函数

c=torch.Tensor(3)
c


7.5589e+28

5.2839e-11

1.8888e+31

[torch.FloatTensor of size 3]

c.unsqueeze(0)
c



7.5589e+28 5.2839e-11 1.8888e+31

[torch.FloatTensor of size 1x3]

c.unsqueeze(1)
c


7.5589e+28

5.2839e-11

1.8888e+31

[torch.FloatTensor of size 3x1]

unsqueeze()与squeeze()作用相反。参数代表的意思相同。unsqueeze中参数的输入范围取决于要处理的向量的维数,比如输入的是一个二维向量,那么参数范围是(-3,2),输入的是一个三维向量,那么参数范围是(-4,3),负数表示倒序。加入的维度总是在指定位置的前面。

  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值