squeeze和unsqueeze
1.unqueeze-指定dim添加一个维度
import torch
# 创建一个3X3的tensor
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a.shape
torch.Size([3, 3])
# dim的范围在[-input.dim() - 1, input.dim() + 1), 左闭右开区间,如果dim是负数,dim = dim + input.dim() + 1.b0 = a.unsqueeze(0) # 相当于:a.unsqueeze(-3) # dim = -3 + 2 + 1 =0
b1 = a.unsqueeze(1) # 相当于:a.unsqueeze(-2) # dim = -2 + 2 + 1 =1
b2 = a.unsqueeze(2) # 相当于:a.unsqueeze(-1) # dim = -1 + 2 + 1 =2b0.shape, b1.shape, b2.shape
(torch.Size([1, 3, 3]), torch.Size([3, 1, 3]), torch.Size([3, 3, 1]))
2.squeeze-指定dim减少一个维度
# 我们再给所有b*的dim=1加一个维度
b00 = b0.unsqueeze(1)
b11 = b1.unsqueeze(1)
b22 = b2.unsqueeze(1) b00.shape, b11.shape, b22.shape,
(torch.Size([1, 1, 3, 3]), torch.Size([3, 1, 1, 3]), torch.Size([3, 1, 3, 1]))
# dim为空时, 去除所有为1的维度
c0 = b00.squeeze()
c1 = b11.squeeze()
c2 = b22.squeeze()c0.shape, c1.shape, c2.shape
(torch.Size([3, 3]), torch.Size([3, 3]), torch.Size([3, 3]))
# dim为不为空时, 去除指定的dim=1的维度
# 以 b22(torch.Size([3, 1, 3, 1]))) 为例
d0 = b22.squeeze(0) # 不变
d1 = b22.squeeze(1) # 维度减少
d2 = b22.squeeze(2) # 不变
d3 = b22.squeeze(3) # 维度减少
d4 = b22.squeeze(-3)
d0.shape, d1.shape, d2.shape, d3.shape, d4.shape
(torch.Size([3, 1, 3, 1]),
torch.Size([3, 3, 1]),
torch.Size([3, 1, 3, 1]),
torch.Size([3, 1, 3]),
torch.Size([3, 3, 1]))
>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])
>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])
squeeze和unsqueeze相关推荐
- Pytorch view()、squeeze()、unsqueeze()、torch.max()
本篇博客主要向大家介绍Pytorch中view().squeeze().unsqueeze().torch.max()函数,这些函数虽然简单,但是在 神经网络编程总却经常用到,希望大家看了这篇博文能够 ...
- torch.squeeze()和unsqueeze()
torch.squeeze()和unsqueeze() unsqueeze() 函数功能:与squeeze()函数功能相反,用于添加维度. queeze() 函数功能:去除size为1的维度,包括行和 ...
- PyTorch中为什么需要使用squeeze()和unsqueeze()操作?
1 问题描述 今天在学习FaceBoxes~ 在看到模型推理部分的代码时,总会出现squeeze()和unsqueeze()操作,从网上的资料上来看,就是升维和降维的操作,但是为什么需要进行这样的操作 ...
- python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
- 【Pytorch】tensor类型数据.squeeze()和.unsqueeze()函数的简明教程(一看就会)
文章目录 1 squeeze 1.1 1.2 1.3 执行操作后需要写回 2 unsqueeze pytorch系列代码中常见的两个函数squeeze()和unsqueeze() 1 squeeze ...
- pytorch中squeeze()与unsqueeze()的用法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.pytorch中的数据维度 二.squeeze()与unsqueeze()用法 1.squeeze() 2.unsque ...
- pytorch中的squeeze和unsqueeze的用法小结
文章目录 1. 理论简介 2. 举例 2.1 squeeze (1)x.squeeze() (2)x.squeeze(n) (3)torch.squeeze(x) 2.2 unsqueeze (1)x ...
- PyTorch中squeeze()和unsqueeze()详解
pytorch中squeeze()和unsqueeze()作用 squeeze() squeeze() 用于在张量的指定维度插入新的维度 (为1) 得到维度提升的张量. unsqueeze() uns ...
- pytorch中的squeeze和unsqueeze
squeeze:压缩,要减少维度. unsqueeze:解压缩,要增加维度. torch.squeeze(input),那么会把input中所有维度长度为1的维度去掉. torch.squeeze(i ...
- Pytorch squeeze() 和 unsqueeze() 方法区别
1 增加维度 unsqueeze() tensor = tensor.unsqueeze(0) 2 减少维度 squeeze() tensor = tensor.squeeze(0)
最新文章
- 一款免费好用的正则表达式工具:Regex Match Tracer
- 上海浦发银行总行信息科技部大数据专家陈春宝:大数据与机器学习重塑零售银行业务...
- [转载]VS2005中ifstream不能读中文路径文件的bug
- questasim linux安装包,Ubuntu16.04下Questasim10.7安装(64bit)全攻略
- Android4.0添加java层服务
- 实用小技巧(一):UIScrollView中上下左右滚动方向的判断
- this指针 java_彻底理解Java中this指针
- Google Analytics 搜索引擎来源
- mongodb 创建数据库权限账号,增删改查(基本操作)
- mysql各存储引擎介绍表格_十六、MySQL基础系列笔记之数据表存储引擎的介绍
- idea的NoClassDefFoundError的情况
- 计算机专业杭州申请公租房有,2018年第四批公租房配租方案及参加摇号名单出炉!报名状况查询方式在此!...
- HASH SEMI JOIN (semi join) 比 hash join 快!
- hashTabel List 和 dic
- 【C++·C11】C++ 时间与时间戳
- [转载] 中华典故故事(孙刚)——26 叫了王承恩
- Android NDK开发配置NDK
- PHP7安装redis扩展 Star.Hou
- 马里兰大学 计算机视觉,马里兰大学信息系统排名2019年
- 如何通过安防网络设备的EHOME协议把设备接入EasyCVR平台,进行互联网直播及分发?