浅谈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中用datetime包进行对时间的一些操作
Jun 23 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
python导入pandas具体步骤方法
Jun 23 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
使用python绘制分组对比柱状图
Apr 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开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
Python多进程机制实例详解
2015/07/02 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Django中URL的参数传递的实现
2019/08/04 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
后勤自我鉴定
2013/10/13 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电