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内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python数据类型_字符串常用操作(详解)
May 30 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
python判断输入日期为第几天的实例
Nov 13 Python
在Python中居然可以定义两个同名通参数的函数
Jan 31 Python
pymongo中聚合查询的使用方法
Mar 22 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
python实现梯度下降法
Mar 24 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
Jun 05 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Pytest中conftest.py的用法
Jun 27 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
jquery实现excel导出的方法
2013/04/04 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
户外活动总结范文
2014/04/30 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
中学生思想品德评语
2014/12/31 职场文书
丧事答谢词
2015/01/05 职场文书
孔庙导游词
2015/02/04 职场文书
天河观后感
2015/06/11 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
Python字典的基础操作
2021/11/01 Python