浅谈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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
python 写入csv乱码问题解决方法
Oct 23 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
python修改字典键(key)的方法
Aug 05 Python
python同步两个文件夹下的内容
Aug 29 Python
python解析多层json操作示例
Dec 30 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 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代码把全角数字转为半角数字
2007/12/10 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
解析php中curl_multi的应用
2013/07/17 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PHP框架性能测试报告
2016/05/08 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
Javascript与vbscript数据共享
2007/01/09 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python关闭windows进程的方法
2015/04/18 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
python去除文件中重复的行实例
2018/06/29 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
python 等差数列末项计算方式
2020/05/03 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
事业单位请假制度
2014/01/13 职场文书
毕业生见习报告总结
2014/11/08 职场文书
2016公司年会通知范文
2015/04/25 职场文书
考试没考好检讨书
2015/05/06 职场文书
放假通知怎么写
2015/08/18 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
代码复现python目标检测yolo3详解预测
2022/05/06 Python