pytorch 中 squeeze 和unsqueeze函数
1. torch.squeeze() 函数 :
作用:移除指定或所有维数为1的维度,从而得到维度减少的张量
解释一下:
x=torch.zeros(5,1,1,1)print(x)'输出'
tensor([[[[0.]]],[[[0.]]],[[[0.]]],[[[0.]]],[[[0.]]]])
举个极端点的例子,这是一个4维的数组,除了第0个维度之外每个维度的维数均为1
也就是说,每一个0都被3个括号括着,这显然不太合理
下面调用squeeze函数:
y = x.squeeze()
print(y)
print(y.shape)'输出'
tensor([0., 0., 0., 0., 0.])
torch.Size([5])
瞬间一系列的括号都没有了,是不是看着舒服了许多?
进一步:
y = x.squeeze(1)
print(y)
print(y.shape)'输出'
tensor([[[0.]],[[0.]],[[0.]],[[0.]],[[0.]]])
torch.Size([5, 1, 1])
这里添加了参数1,这样就只压缩了第1个维度(计数从0开始),一个0被2个括号括着
但压缩的前提是,该张量必须有维数为1的维度,比如:
y = x.squeeze(0)
print(y)
print(y.shape)a = torch.tensor([[1, 1, 1], [2, 2, 2]])
b = a.squeeze()
print(b)
print(b.shape)'输出'
tensor([[[[0.]]],[[[0.]]],[[[0.]]],[[[0.]]],[[[0.]]]])
torch.Size([5, 1, 1, 1])tensor([[1, 1, 1],[2, 2, 2]])
torch.Size([2, 3])
y和b相对于x和a均没有发生变化,原因就是:x的第0个维度,维数不是1;a中更是没有维数为1的维度
另外:x.squeeze() 或者 torch.squeeze(x) 都不会让x发生改变
y = x.squeeze()
print(x.shape)
print(y.shape)'输出'
torch.Size([5, 1, 1, 1])
torch.Size([5])
2. torch.unsqueeze() 函数 :
作用:在张量的制定维度插入新的维度得到维度提升的张量
举个例子:
x= torch.zeros(5)
print(x)
print(x.shape)'输出'
tensor([0, 0, 0, 0, 0])
torch.Size([5])
一维张量,总共5个0,接下来依次操作:
y = x.unsqueeze(dim=0)
print(y)
print(y.shape)y = x.unsqueeze(dim=1)
print(y)
print(y.shape)z = y.unsqueeze(dim=2)
print(z)
print(z.shape)'输出'
tensor([[0., 0., 0., 0., 0.]])
torch.Size([1, 5])tensor([[0.],[0.],[0.],[0.],[0.]])
torch.Size([5, 1])tensor([[[0.]],[[0.]],[[0.]],[[0.]],[[0.]]])
torch.Size([5, 1, 1])
把第0维进行扩张,就是在最外面加了一个括号
把第1维进行扩张,就是把里面的每个元素元素(也可以理解成是,扩充后的第1维,也就是0.)都加一个括号
继续套,选择dim=2,还是把最内层的了(也可以理解成是,扩充后的第2维,也就是0.),都加一个括号
再举个例子:
a = torch.tensor([[1, 1, 1], [2, 2, 2]])
print(a)
print(a.shape)b = a.unsqueeze(dim=0)
print(b)
print(b.shape)b = a.unsqueeze(dim=1)
print(b)
print(b.shape)b = a.unsqueeze(dim=2)
print(b)
print(b.shape)'输出'
tensor([[1, 1, 1],[2, 2, 2]])
torch.Size([2, 3])tensor([[[1, 1, 1],[2, 2, 2]]])
torch.Size([1, 2, 3])tensor([[[1, 1, 1]],[[2, 2, 2]]])
torch.Size([2, 1, 3])tensor([[[1],[1],[1]],[[2],[2],[2]]])
torch.Size([2, 3, 1])
怎么套的括号,是不是一目了然~
同样:x.unsqueeze() 或者 torch.unsqueeze(x) 都不会让x发生改变
x = torch.tensor([[1, 1, 1], [2, 2, 2]])
print(x)
y = x.unsqueeze(dim=0)
print(y.shape)
print(x.shape)'输出'
torch.Size([1, 2, 3])
torch.Size([2, 3])
pytorch 中 squeeze 和unsqueeze函数相关推荐
- python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
- 【学习笔记】pytorch中squeeze()和unsqueeze()函数介绍
一.unsqueeze()函数 1. 首先初始化一个a 可以看出a的维度为(2,3) 2. 在第二维增加一个维度,使其维度变为(2,1,3) 可以看出a的维度已经变为(2,1,3)了,同样如果需要在倒 ...
- PyTorch中squeeze()和unsqueeze()详解
pytorch中squeeze()和unsqueeze()作用 squeeze() squeeze() 用于在张量的指定维度插入新的维度 (为1) 得到维度提升的张量. unsqueeze() uns ...
- pytorch中squeeze()与unsqueeze()的用法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.pytorch中的数据维度 二.squeeze()与unsqueeze()用法 1.squeeze() 2.unsque ...
- pytorch中tensor的unsqueeze()函数和squeeze()函数的用处
unsqueeze()用于增加一个维度. 先假设有如下一维的Tensor. a=torch.Tensor([1,2]) print(a.shape) 假设我们现在有一个2*2的矩阵b,要与a相乘,最规 ...
- Pytorch:squeeze()和unsqueeze()函数
squeeze(): 维度压缩,去掉维数为1的的维度 torch.squeeze(input, dim=None, out=None) 将输入张量形状中的1 去除并返回. 如果输入是形如(2×1×2× ...
- gather torch_浅谈Pytorch中的torch.gather函数的含义
pytorch中的gather函数 pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验. 立个flag开始学习pytorch,新开一个分类整理学习pyt ...
- pytorch 中 expand ()函数
pytorch 中 expand ()函数 expand函数的功能就是 用来扩展张量中某维数据的尺寸,它返回输入张量在某维扩展为更大尺寸后的张量. 例如: x = torch.tensor([1, 2 ...
- pytorch中的squeeze和unsqueeze函数的使用
应用场景:当我们进行深度学习使用Image函数导入图片时,默认它的维度为[C, H, W],此时根据模型的需要导入batch这一维度. 部分程序 # 导入要测试的图像(自己找的,不在数据集中),放在源 ...
最新文章
- smack连接远程openfire连接超时-No response received within reply timeout. Timeout was 5000ms (~5s).
- 深入浅出详细介绍Java异常,让你茅塞顿开般的感觉
- Android深入四大组件(八)广播的注册、发送和接收过程
- libevent(1)
- MyBatisPlus_更新篇_入门试炼_03
- Tomcat配置HTTPS
- 恢复云数据库MySQL的备份文件到自建数据库
- VUE图片预览放大缩小插件viewer
- linux 创建文件_Linux怎么创建文件或更新文件日期
- Samba使用大全(转
- 如何在chrome加载.ctx文件(亲测可用,只需3步)
- php openssl iv,PHP-openssl_encrypt,openssl_decrypt密钥,iv
- EasyPoi如何使用注解导出,并且添加自增序号?
- 这可能是世界第一座海上漂浮城市,浑身都是黑科技!
- 关于fiddle开启https证书协议源码
- Binding的三种方式
- 22-07-14 西安 Git 分布式版本控制系统 、代码管理
- 新型海上风电机组及压缩空气储能系统的建模与控制(Matlab代码实现)
- 云计算之OpenStack架构详解
- 开发工具界面没了,但是后台进程还在跑,怎么找回来
热门文章
- php 网站 seo,SEO技术:PHP页面的SEO优化
- (四)本地镜像发布到阿里云将阿里云上的镜像下载到本地
- java.lang.OutOfMemoryError: PermGen space总结
- python生成随机数
- 5G NR物理层各个步骤各项参数梳理记录
- Linux内核贡献全球第二,开源四大基础软件,为什么华为要啃下这块硬骨头
- 2021年中国网约车行业发展回顾及行业发展趋势分析:行业赛道热度不减,市场规模不断扩大[图]
- 领导最喜欢提拔的10种人
- QSignalMapper的使用和使用场景
- HTML 链接 - href