浅谈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 相关文章推荐
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
tensorflow识别自己手写数字
Mar 14 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
python调用外部程序的实操步骤
Mar 04 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
Django ORM filter() 的运用详解
May 14 Python
python中翻译功能translate模块实现方法
Dec 17 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学习笔记之一
2011/01/17 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
Python的另外几种语言实现
2015/01/29 Python
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
建筑工程管理专业自荐信范文
2013/12/28 职场文书
网络宣传方案
2014/03/15 职场文书
英语系本科生求职信
2014/07/15 职场文书
2014年国庆节寄语
2014/09/19 职场文书
推荐信范文大全
2015/03/27 职场文书
毕业论文致谢范文
2015/05/14 职场文书
2016猴年春节问候语
2015/11/11 职场文书