PyTorch中为什么需要使用squeeze()和unsqueeze()操作?
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()操作?相关推荐
- 【Pytorch】tensor类型数据.squeeze()和.unsqueeze()函数的简明教程(一看就会)
文章目录 1 squeeze 1.1 1.2 1.3 执行操作后需要写回 2 unsqueeze pytorch系列代码中常见的两个函数squeeze()和unsqueeze() 1 squeeze ...
- pytorch中Mini-batch批处理实现函数xx.unsqueeze(0)
在进行特征图可视化时,发现了一个函数运行之后输入图像的tensor的维度发生了变化,不能直接转化为numpy数据进行图像显示,这个函数是**.unsqueeze(0)** 下面贴出该函数运行过后ten ...
- 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: 给tensor删除或者添加维度为1的维度(squeeze和unsqueeze)
删除tensor中维度为1的维度 在pytorch中,用torch.squeeze()函数或者tensor的自身成员函数squeeze()去除维度为1的维度. import torch x = tor ...
- pytorch flatten函数_1. PyTorch中的基本数据类型——张量
在PyTorch中,张量属于一种基本的数据类型,和Numpy库中的ndarry类似,无论是标量.向量.矩阵还是高维数组都是以张量(Tensor)这种数据类型来表示.因此,有必要对该基本数据类型有所了解 ...
- pyTorch中tensor运算
文章目录 PyTorch的简介 PyTorch中主要的包 PyTorch的安装 使用GPU的原因 使数据在GPU上运行 什么使Tensor(张量) 一些术语介绍 Tensor的属性介绍(Rank,ax ...
- pytorch中的乘法操作
pytorch中提供了多种函数用于乘法操作,不同函数,功能有什么不一样呢? torch.mul multiply是mul的别名,与mul用法一致 torch.mul(input, other, *, ...
- pytorch 中 contiguous() 函数理解
pytorch 中 contiguous() 函数理解 文章目录 pytorch 中 contiguous() 函数理解 引言 使用 contiguous() 后记 文章抄自 Pytorch中cont ...
- Pytorch中的contiguous()函数
这个函数主要是为了辅助pytorch中的一些其他函数,主要包含 在PyTorch中,有一些对Tensor的操作不会真正改变Tensor的内容,改变的仅仅是Tensor中字节位置的索引.这些操作有: n ...
最新文章
- 【Qt】Qt中调用python接口
- 上线前一个小时,dubbo这个问题可把我折腾惨了
- watch TV online for free
- Windows Phone 7 隔离存储空间“.NET研究”资源管理器
- 定时器注入spring
- Objective-C Runtime的数据类型
- ASPNET Core 2.x中的Kestrel服务器
- Python机器学习:SVM008SVM思想解决回归问题
- sql出现无法启动(model数据库)
- java中JSON转含泛型对象
- 公众号 多服务器配置_多账号公众号分享的素材如何采集以及一键分发?
- 4 个拥有绝佳命令行界面的终端程序
- [20150204]关于位图索引4.txt
- 计算机识别人脸原理,人脸识别:原理、方法与技术
- 搭建自动化测试平台(selenium+testng+maven+svn+Jenkins)【转自galen2016】
- CAD梦想画图中的“阵列命令”
- android的权限一览表和RGB颜色对照表
- 【Scala】Scala的偏函数和偏应用函数
- 游戏资讯:预计在10月底至11月内, 版号审批将会恢复
- php网页怎么设置背景图片大全唯美,html文档中怎么把图片作为背景?