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抓取网页图片示例(python爬虫)
Apr 27 Python
Python读取ini文件、操作mysql、发送邮件实例
Jan 01 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Django上线部署之IIS的配置方法
Aug 22 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
python中pyplot基础图标函数整理
Nov 10 Python
python regex库实例用法总结
Jan 03 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
JS location几个方法小姐
2008/07/09 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
python列表去重的二种方法
2014/02/14 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
深入浅析Python中的迭代器
2019/06/04 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
美国汽车交易网站:Edmunds
2016/08/17 全球购物
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
师范生个人推荐信
2013/11/29 职场文书
创业计划书中包含的9个方面
2013/12/26 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
人力资源总监工作说明
2014/03/03 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
小学语文教学随笔
2015/08/14 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书