1 问题描述

今天在学习FaceBoxes~

在看到模型推理部分的代码时,总会出现squeeze()和unsqueeze()操作,从网上的资料上来看,就是升维和降维的操作,但是为什么需要进行这样的操作呢?

2 PyTorch中的squeeze()和unsqueeze()操作

看到“西北小生_”的博文,给予了我一定的启发《torch.squeeze()和torch.unsqueeze()》,他在博文中是这样说的:

unsqueeze()函数的功能是在tensor的某个维度上添加一个维数为1的维度,这个功能用view()函数也可以实现。这一功能尤其在神经网络输入单个样本时很有用,由于pytorch神经网络要求的输入都是mini-batch型的,维度为[batch_size, channels, w, h],而一个样本的维度为[c, w, h],此时用unsqueeze()增加一个维度变为[1, c, w, h]就很方便了。

莫烦在教程中也讲到过,Torch只能处理二维的数据,

果然,“西北小生_”的表述是很有道理,今天在学习了《Deep Learning with PyTorch: A 60 Minute Blitz》,终于有些明白了,

Soumith Chintala在他的教程中是这样讲述的,

我觉得讲的挺好的,.unsqueeze(0)操作主要是针对于此时的输入数据只包含一个样本的情况;

感谢网友“中国拖拉机手”的解答,他是这样说的:

pytorch中,处理图片必须一个batch一个batch的操作,所以我们要准备的数据的格式是 [batch_size, n_channels, hight, width]

这样的话,我就明白了,将图像数据的张量送入到torch中进行处理之前,首先需要转换成[batch_size, n_channels, hight, width]的格式,所以需要使用unsqueeze()的升维操作;

而相应的,在降维的时候,需要用到squeeze()操作;

所以,我们会在PyTorch中使用使用squeeze()和unsqueeze()进行降维和升维的步骤。

PyTorch中为什么需要使用squeeze()和unsqueeze()操作?相关推荐

  1. 【Pytorch】tensor类型数据.squeeze()和.unsqueeze()函数的简明教程(一看就会)

    文章目录 1 squeeze 1.1 1.2 1.3 执行操作后需要写回 2 unsqueeze pytorch系列代码中常见的两个函数squeeze()和unsqueeze() 1 squeeze ...

  2. pytorch中Mini-batch批处理实现函数xx.unsqueeze(0)

    在进行特征图可视化时,发现了一个函数运行之后输入图像的tensor的维度发生了变化,不能直接转化为numpy数据进行图像显示,这个函数是**.unsqueeze(0)** 下面贴出该函数运行过后ten ...

  3. pytorch中的squeeze和unsqueeze的用法小结

    文章目录 1. 理论简介 2. 举例 2.1 squeeze (1)x.squeeze() (2)x.squeeze(n) (3)torch.squeeze(x) 2.2 unsqueeze (1)x ...

  4. pytorch: 给tensor删除或者添加维度为1的维度(squeeze和unsqueeze)

    删除tensor中维度为1的维度 在pytorch中,用torch.squeeze()函数或者tensor的自身成员函数squeeze()去除维度为1的维度. import torch x = tor ...

  5. pytorch flatten函数_1. PyTorch中的基本数据类型——张量

    在PyTorch中,张量属于一种基本的数据类型,和Numpy库中的ndarry类似,无论是标量.向量.矩阵还是高维数组都是以张量(Tensor)这种数据类型来表示.因此,有必要对该基本数据类型有所了解 ...

  6. pyTorch中tensor运算

    文章目录 PyTorch的简介 PyTorch中主要的包 PyTorch的安装 使用GPU的原因 使数据在GPU上运行 什么使Tensor(张量) 一些术语介绍 Tensor的属性介绍(Rank,ax ...

  7. pytorch中的乘法操作

    pytorch中提供了多种函数用于乘法操作,不同函数,功能有什么不一样呢? torch.mul multiply是mul的别名,与mul用法一致 torch.mul(input, other, *, ...

  8. pytorch 中 contiguous() 函数理解

    pytorch 中 contiguous() 函数理解 文章目录 pytorch 中 contiguous() 函数理解 引言 使用 contiguous() 后记 文章抄自 Pytorch中cont ...

  9. Pytorch中的contiguous()函数

    这个函数主要是为了辅助pytorch中的一些其他函数,主要包含 在PyTorch中,有一些对Tensor的操作不会真正改变Tensor的内容,改变的仅仅是Tensor中字节位置的索引.这些操作有: n ...

最新文章

  1. 【Qt】Qt中调用python接口
  2. 上线前一个小时,dubbo这个问题可把我折腾惨了
  3. watch TV online for free
  4. Windows Phone 7 隔离存储空间“.NET研究”资源管理器
  5. 定时器注入spring
  6. Objective-C Runtime的数据类型
  7. ASPNET Core 2.x中的Kestrel服务器
  8. Python机器学习:SVM008SVM思想解决回归问题
  9. sql出现无法启动(model数据库)
  10. java中JSON转含泛型对象
  11. 公众号 多服务器配置_多账号公众号分享的素材如何采集以及一键分发?
  12. 4 个拥有绝佳命令行界面的终端程序
  13. [20150204]关于位图索引4.txt
  14. 计算机识别人脸原理,人脸识别:原理、方法与技术
  15. 搭建自动化测试平台(selenium+testng+maven+svn+Jenkins)【转自galen2016】
  16. CAD梦想画图中的“阵列命令”
  17. android的权限一览表和RGB颜色对照表
  18. 【Scala】Scala的偏函数和偏应用函数
  19. 游戏资讯:预计在10月底至11月内, 版号审批将会恢复
  20. php网页怎么设置背景图片大全唯美,html文档中怎么把图片作为背景?

热门文章

  1. 实战OO设计——类的关系:依赖、关联、聚合和组合
  2. koa2 mysql 中间件_koa2中间件
  3. D. Closest Equals(线段树)
  4. ul下的img水平居中 图片等比例缩放
  5. JavaScriptCore.framework基本用法(一)
  6. Windows上编译OpenEXR
  7. 《设计模式详解》创建型模式 - 建造者模式
  8. 【Java从0到架构师】Redis 进阶 - pipline、发布订阅、Bitmap、HyperLogLog、GEO
  9. 【SpringMVC笔记】拦截器 + 文件上传下载
  10. GA遗传算法入门到掌握