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函数相关推荐

  1. python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  2. 【学习笔记】pytorch中squeeze()和unsqueeze()函数介绍

    一.unsqueeze()函数 1. 首先初始化一个a 可以看出a的维度为(2,3) 2. 在第二维增加一个维度,使其维度变为(2,1,3) 可以看出a的维度已经变为(2,1,3)了,同样如果需要在倒 ...

  3. PyTorch中squeeze()和unsqueeze()详解

    pytorch中squeeze()和unsqueeze()作用 squeeze() squeeze() 用于在张量的指定维度插入新的维度 (为1) 得到维度提升的张量. unsqueeze() uns ...

  4. pytorch中squeeze()与unsqueeze()的用法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.pytorch中的数据维度 二.squeeze()与unsqueeze()用法 1.squeeze() 2.unsque ...

  5. pytorch中tensor的unsqueeze()函数和squeeze()函数的用处

    unsqueeze()用于增加一个维度. 先假设有如下一维的Tensor. a=torch.Tensor([1,2]) print(a.shape) 假设我们现在有一个2*2的矩阵b,要与a相乘,最规 ...

  6. Pytorch:squeeze()和unsqueeze()函数

    squeeze(): 维度压缩,去掉维数为1的的维度 torch.squeeze(input, dim=None, out=None) 将输入张量形状中的1 去除并返回. 如果输入是形如(2×1×2× ...

  7. gather torch_浅谈Pytorch中的torch.gather函数的含义

    pytorch中的gather函数 pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验. 立个flag开始学习pytorch,新开一个分类整理学习pyt ...

  8. pytorch 中 expand ()函数

    pytorch 中 expand ()函数 expand函数的功能就是 用来扩展张量中某维数据的尺寸,它返回输入张量在某维扩展为更大尺寸后的张量. 例如: x = torch.tensor([1, 2 ...

  9. pytorch中的squeeze和unsqueeze函数的使用

    应用场景:当我们进行深度学习使用Image函数导入图片时,默认它的维度为[C, H, W],此时根据模型的需要导入batch这一维度. 部分程序 # 导入要测试的图像(自己找的,不在数据集中),放在源 ...

最新文章

  1. smack连接远程openfire连接超时-No response received within reply timeout. Timeout was 5000ms (~5s).
  2. 深入浅出详细介绍Java异常,让你茅塞顿开般的感觉
  3. Android深入四大组件(八)广播的注册、发送和接收过程
  4. libevent(1)
  5. MyBatisPlus_更新篇_入门试炼_03
  6. Tomcat配置HTTPS
  7. 恢复云数据库MySQL的备份文件到自建数据库
  8. VUE图片预览放大缩小插件viewer
  9. linux 创建文件_Linux怎么创建文件或更新文件日期
  10. Samba使用大全(转
  11. 如何在chrome加载.ctx文件(亲测可用,只需3步)
  12. php openssl iv,PHP-openssl_encrypt,openssl_decrypt密钥,iv
  13. EasyPoi如何使用注解导出,并且添加自增序号?
  14. 这可能是世界第一座海上漂浮城市,浑身都是黑科技!
  15. 关于fiddle开启https证书协议源码
  16. Binding的三种方式
  17. 22-07-14 西安 Git 分布式版本控制系统 、代码管理
  18. 新型海上风电机组及压缩空气储能系统的建模与控制(Matlab代码实现)
  19. 云计算之OpenStack架构详解
  20. 开发工具界面没了,但是后台进程还在跑,怎么找回来

热门文章

  1. php 网站 seo,SEO技术:PHP页面的SEO优化
  2. (四)本地镜像发布到阿里云将阿里云上的镜像下载到本地
  3. java.lang.OutOfMemoryError: PermGen space总结
  4. python生成随机数
  5. 5G NR物理层各个步骤各项参数梳理记录
  6. Linux内核贡献全球第二,开源四大基础软件,为什么华为要啃下这块硬骨头
  7. 2021年中国网约车行业发展回顾及行业发展趋势分析:行业赛道热度不减,市场规模不断扩大[图]
  8. 领导最喜欢提拔的10种人
  9. QSignalMapper的使用和使用场景
  10. HTML 链接 - href