Pytorch之扩充tensor的操作


Posted in Python onMarch 04, 2021

我就废话不多说了,大家还是直接看代码吧~

b = torch.zeros((3, 2, 6, 6))
a = torch.zeros((3, 2, 1, 1))
a.expand_as(b).size()
Out[32]: torch.Size([3, 2, 6, 6])
a = torch.zeros((3, 2, 2, 1))
a.expand_as(b).size()
Traceback (most recent call last):
 File "/home/lart/.conda/envs/pt/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
  exec(code_obj, self.user_global_ns, self.user_ns)
 File "<ipython-input-34-972575f79e92>", line 1, in <module>
  a.expand_as(b).size()
RuntimeError: The expanded size of the tensor (6) must match the existing size (2) at non-singleton dimension 2. Target sizes: [3, 2, 6, 6]. Tensor sizes: [3, 2, 2, 1]
a = torch.zeros((3, 2, 1, 2))
a.expand_as(b).size()
Traceback (most recent call last):
 File "/home/lart/.conda/envs/pt/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
  exec(code_obj, self.user_global_ns, self.user_ns)
 File "<ipython-input-36-972575f79e92>", line 1, in <module>
  a.expand_as(b).size()
RuntimeError: The expanded size of the tensor (6) must match the existing size (2) at non-singleton dimension 3. Target sizes: [3, 2, 6, 6]. Tensor sizes: [3, 2, 1, 2]
a = torch.zeros((3, 2, 2, 2))
a.expand_as(b).size()
Traceback (most recent call last):
 File "/home/lart/.conda/envs/pt/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
  exec(code_obj, self.user_global_ns, self.user_ns)
 File "<ipython-input-38-972575f79e92>", line 1, in <module>
  a.expand_as(b).size()
RuntimeError: The expanded size of the tensor (6) must match the existing size (2) at non-singleton dimension 3. Target sizes: [3, 2, 6, 6]. Tensor sizes: [3, 2, 2, 2]
a = torch.zeros((3, 2, 6, 2))
a.expand_as(b).size()
Traceback (most recent call last):
 File "/home/lart/.conda/envs/pt/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
  exec(code_obj, self.user_global_ns, self.user_ns)
 File "<ipython-input-40-972575f79e92>", line 1, in <module>
  a.expand_as(b).size()
RuntimeError: The expanded size of the tensor (6) must match the existing size (2) at non-singleton dimension 3. Target sizes: [3, 2, 6, 6]. Tensor sizes: [3, 2, 6, 2]
a = torch.zeros((3, 2, 6, 1))
a.expand_as(b).size()
Out[44]: torch.Size([3, 2, 6, 6])
a = torch.zeros((3, 2, 1, 6))
a.expand_as(b).size()
Out[46]: torch.Size([3, 2, 6, 6])

tensor.expand_as在这里用于扩展tensor到目标形状,常用的多是在H和W方向上的扩展。

假设目标形状为N, C, H, W,则要求tensor.size()=n, c, h, w(这里假设N,C不变):

1、h=w=1

2、h=1, w!=1

3、h!=1, w=1

补充:tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度

在利用tensorflow进行文本挖掘工作的时候,经常涉及到维度扩展和压缩工作。

比如对文本进行embedding操作完成之后,若要进行卷积操作,就需要对embedded的向量扩展维度,将[batch_size, embedding_dims]扩展成为[batch_size, embedding_dims, 1],利用tf.expand_dims(input, -1)就可实现,反过来用squeeze(input, -1)或者tf.squeeze(input)也可以把最第三维去掉。

tf.expand_dims()

tf.squeeze()

tf.expand_dims()

tf.expand_dims(input, axis=None, name=None, dim=None)

在第axis位置增加一个维度.

给定张量输入,此操作在输入形状的维度索引轴处插入1的尺寸。 尺寸索引轴从零开始; 如果您指定轴的负数,则从最后向后计数。

如果要将批量维度添加到单个元素,则此操作非常有用。 例如,如果您有一个单一的形状[height,width,channels],您可以使用expand_dims(image,0)使其成为1个图像,这将使形状[1,高度,宽度,通道]。

例子

# 't' is a tensor of shape [2]
shape(expand_dims(t, 0)) ==> [1, 2]
shape(expand_dims(t, 1)) ==> [2, 1]
shape(expand_dims(t, -1)) ==> [2, 1]
# 't2' is a tensor of shape [2, 3, 5]
shape(expand_dims(t2, 0)) ==> [1, 2, 3, 5]
shape(expand_dims(t2, 2)) ==> [2, 3, 1, 5]
shape(expand_dims(t2, 3)) ==> [2, 3, 5, 1]

tf.squeeze()

tf.squeeze(input, axis=None, name=None, squeeze_dims=None)

直接上例子

# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]
 shape(squeeze(t)) ==> [2, 3]
# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]
 shape(squeeze(t, [2, 4])) ==> [1, 2, 3, 1]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python中__call__用法实例
Aug 29 Python
python解析xml文件操作实例
Oct 05 Python
python获取当前日期和时间的方法
Apr 30 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python多线程与多进程及其区别详解
Aug 08 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
Python itertools.product方法代码实例
Mar 27 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
利用python进行数据加载
Jun 20 Python
快速一键生成Python爬虫请求头
Mar 04 #Python
10个顶级Python实用库推荐
Mar 04 #Python
pytorch 把图片数据转化成tensor的操作
Mar 04 #Python
pytorch 计算Parameter和FLOP的操作
Mar 04 #Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 #Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 #Python
python 求两个向量的顺时针夹角操作
Mar 04 #Python
You might like
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
php数组去重实例及分析
2013/11/26 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
python去掉行尾的换行符方法
2017/01/04 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
python接入支付宝的实例操作
2020/07/20 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
广告学专业推荐信范文
2013/11/23 职场文书
初中政治教学反思
2014/01/17 职场文书
捐款活动总结
2014/08/27 职场文书
2014年班组工作总结
2014/11/20 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
教师节老师寄语
2015/05/28 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
JS中如何优雅的使用async await详解
2021/10/05 Javascript