在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利用Beautiful Soup模块搜索内容详解
Mar 29 Python
python并发2之使用asyncio处理并发
Dec 21 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
python 杀死自身进程的实现方法
Jul 01 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
Python 转换文本编码实现解析
Aug 27 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
keras 权重保存和权重载入方式
May 21 Python
Python turtle编写简单的球类小游戏
Mar 31 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
jQuery实现评论模块
2020/08/19 jQuery
javascript操作向表格中动态加载数据
2020/08/27 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
Python发展史及网络爬虫
2019/06/19 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
python实现处理mysql结果输出方式
2020/04/09 Python
个人实用简单的自我评价
2013/10/19 职场文书
物业管理专业求职信
2014/06/11 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
2015年老干部工作总结
2015/04/23 职场文书
节约用电通知
2015/04/25 职场文书
雷锋之歌观后感
2015/06/10 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
女性励志书籍推荐
2019/08/19 职场文书