浅谈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实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
对python sklearn one-hot编码详解
Jul 10 Python
python实现zabbix发送短信脚本
Sep 17 Python
Python通用循环的构造方法实例分析
Dec 19 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
python中sympy库求常微分方程的用法
Apr 28 Python
Python高并发和多线程有什么关系
Nov 14 Python
Python re.sub 反向引用的实现
Jul 07 Python
Python中time标准库的使用教程
Apr 13 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 中执行排序与 MySQL 中排序
2009/04/21 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
python微元法计算函数曲线长度的方法
2018/11/08 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
python脚本和网页有何区别
2020/07/02 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
如何在存储过程中使用Loop
2016/01/05 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
档案接收函
2014/01/13 职场文书
感恩的演讲稿
2014/05/06 职场文书
Python绘画好看的星空图
2022/03/17 Python