浅谈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之dict()的操作方法
Sep 24 Python
python中正则表达式的使用详解
Oct 17 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
python实现反转部分单向链表
Sep 27 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 Python
python redis连接 有序集合去重的代码
Aug 04 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
基于python+selenium的二次封装的实现
Jan 06 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
基于Python3读写INI配置文件过程解析
Jul 23 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
收音机的保养
2021/03/01 无线电
基于mysql的bbs设计(三)
2006/10/09 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript 写类方式之二
2009/07/05 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
酒店总经理工作职责
2013/12/13 职场文书
部队领导证婚词
2014/01/12 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
《影子》教学反思
2014/02/21 职场文书
创新型城市实施方案
2014/03/06 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书