浅谈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实现统计文本文件字数的方法
May 05 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
python使用response.read()接收json数据的实例
Dec 19 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
Python with标签使用方法解析
Jan 17 Python
如何用Python绘制3D柱形图
Sep 16 Python
python 模拟登录B站的示例代码
Dec 15 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
《从现在开始》教学反思
2014/04/15 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
六年级作文之自救
2019/12/19 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python