浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack


Posted in Python onJune 23, 2020

有一段时间没用tensorflow了,现在跑实验还是存在一些坑了,主要是关于张量计算的问题。tensorflow升级1.0版本后与以前的版本并不兼容,可能出现各种奇奇怪怪的问题。

1 tf.concat函数

tensorflow1.0以前函数用法:tf.concat(concat_dim, values, name='concat'),第一个参数为连接的维度,可以将几个向量按指定维度连接起来。

如:

t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
#按照第0维连接
tf.concat(0, [t1, t2]) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
#按照第1维连接
tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]

tf.concat的作用主要是将向量按指定维连起来,其余维度不变;而1.0版本以后,函数的用法变成:

t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
#按照第0维连接
tf.concat( [t1, t2],0) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
#按照第1维连接
tf.concat([t1, t2],1) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]

位置变了,需要注意。

2 tf.stack函数

用法:stack(values, axis=0, name=”stack”):

“”“Stacks a list of rank-R tensors into one rank-(R+1) tensor.

x = tf.constant([1, 4])
y = tf.constant([2, 5])
z = tf.constant([3, 6])
tf.stack([x,y,z]) ==> [[1,4],[2,5],[3,6]]
tf.stack([x,y,z],axis=0) ==> [[1,4],[2,5],[3,6]]
tf.stack([x,y,z],axis=1) ==> [[1, 2, 3], [4, 5, 6]]

tf.stack将一组R维张量变为R+1维张量。注意:tf.pack已经变成了tf.stack

3.tf.reshape

用法:reshape(tensor, shape, name=None):主要通过改变张量形状,可以从高维变低维,也可以从低维变高维;

a = tf.Variable(initial_value=[[1,2,3],[4,5,6]]) ==> shape:[2,3]
b = tf.Variable(initial_value=[[[1,2,3],[4,5,6]],[[7,8,9],[1,0,2]]]) ==> shape:[2,2,3]

a_1 = tf.reshape(a,[2,1,1,3]) ==> [[[[1,2,3]]],[[[4,5,6]]]]
a_2 = tf.reshape(a,[2,1,3]) ==> [[[1,2,3]],[[4,5,6]]]
b_1 = tf.reshape(b,[2,2,1,3]) ==> [[[[1,2,3]],[[4,5,6]]],[[[7,8,9]],[[1,0,2]]]]

new_1 = tf.concat([b_1,a_1],1)
new_2 = tf.reshape(tf.concat([b,a_2],1),[2,3,1,3])
"""
new_1:
[[[[1 2 3]]

 [[4 5 6]]

 [[1 2 3]]]


 [[[7 8 9]]

 [[1 0 2]]

 [[4 5 6]]]]
new_2;
[[[[1 2 3]]

 [[4 5 6]]

 [[1 2 3]]]


 [[[7 8 9]]

 [[1 0 2]]

 [[4 5 6]]]]

补充知识:tensorflow中的reshape(tensor,[1,-1])和reshape(tensor,[-1,1])

和python 中的reshape用法应该一样

import tensorflow as tf
a = [[1,2],[3,4],[5,6]]
tf.reshape(a,[-1,1])
Out[13]: <tf.Tensor 'Reshape_4:0' shape=(6, 1) dtype=int32>
tf.reshape(tf.reshape(a,[-1,1]),[1,-1])
Out[14]: <tf.Tensor 'Reshape_6:0' shape=(1, 6) dtype=int32>

tf.reshape(tensor,[-1,1])将张量变为一维列向量

tf.reshape(tensor,[1,-1])将张量变为一维行向量

以上这篇浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
Python引用模块和查找模块路径
Mar 17 Python
tensorflow中next_batch的具体使用
Feb 02 Python
Django添加sitemap的方法示例
Aug 06 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Python动态语言与鸭子类型详解
Jul 01 Python
Python+Redis实现布隆过滤器
Dec 08 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 Python
Python+DeOldify实现老照片上色功能
Jun 21 Python
解决tensorflow 释放图,删除变量问题
Jun 23 #Python
TensorFlow中如何确定张量的形状实例
Jun 23 #Python
Python docutils文档编译过程方法解析
Jun 23 #Python
python3的pip路径在哪
Jun 23 #Python
Python错误的处理方法
Jun 23 #Python
python文件读取失败怎么处理
Jun 23 #Python
使用tensorflow根据输入更改tensor shape
Jun 23 #Python
You might like
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php模板函数 正则实现代码
2012/10/15 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
php建立Ftp连接的方法
2015/03/07 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python删除文本中行数标签的方法
2018/05/31 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
python自动下载图片的方法示例
2020/03/25 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
JPA的优势都有哪些
2013/07/04 面试题
精彩的推荐信范文
2013/11/26 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
机电系毕业生求职信
2014/07/11 职场文书
爱护公物演讲稿
2014/09/09 职场文书
优秀教师个人总结
2015/02/11 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis