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 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
python中类的属性和方法介绍
Nov 27 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
python使用配置文件过程详解
Dec 28 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Keras自定义IOU方式
Jun 10 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实现删除空目录的方法
2015/03/16 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python中as用法实例分析
2015/04/30 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
用Python写一个自动木马程序
2019/09/17 Python
python 的topk算法实例
2020/04/02 Python
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
金鑫耀Java笔试题
2014/09/06 面试题
十岁生日同学答谢词
2014/01/19 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
实习评语大全
2014/04/26 职场文书
保护环境建议书300字
2014/05/13 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
2015年招生工作总结
2015/05/04 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python