在TensorFlow中实现矩阵维度扩展


Posted in Python onMay 22, 2020

一般TensorFlow中扩展维度可以使用tf.expand_dims()。近来发现另一种可以直接运用取数据操作符[]就能扩展维度的方法。

用法很简单,在要扩展的维度上加上tf.newaxis就行了。

foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
print(foo[tf.newaxis, :, :].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]]
print(foo[:, tf.newaxis, :].eval()) # => [[[1,2,3]], [[4,5,6]], [[7,8,9]]]
print(foo[:, :, tf.newaxis].eval()) # => [[[1],[2],[3]], [[4],[5],[6]],[[7],[8],[9]]]

参考:

https://tensorflow.google.cn/api_docs/python/tf/Tensor?hl=en#__getitem__

补充知识: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]

以上这篇在TensorFlow中实现矩阵维度扩展就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python条件和循环的使用方法
Nov 01 Python
python发送伪造的arp请求
Jan 09 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
简单了解Django应用app及分布式路由
Jul 24 Python
pytorch 自定义数据集加载方法
Aug 18 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
Restful_framework视图组件代码实例解析
Nov 17 Python
Python多个装饰器的调用顺序实例解析
May 22 #Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 #Python
Tensorflow tf.tile()的用法实例分析
May 22 #Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 #Python
Tensorflow实现将标签变为one-hot形式
May 22 #Python
Python selenium爬取微博数据代码实例
May 22 #Python
python实现文法左递归的消除方法
May 22 #Python
You might like
PHP If Else(elsefi) 语句
2013/04/07 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
使用js画图之饼图
2015/01/12 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python栈算法的实现与简单应用示例
2017/11/01 Python
Django中的forms组件实例详解
2018/11/08 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
工作失误检讨书范文大全
2014/01/13 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
企业安全标语
2014/06/07 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
Python词云的正确实现方法实例
2021/05/08 Python