浅谈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的几条建议分享
Feb 10 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
pygame实现弹力球及其变速效果
Jul 03 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
python实现按日期归档文件
Jan 30 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
Pycharm修改python路径过程图解
2020/05/22 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
毕业生的自我评价
2013/12/30 职场文书
初一学生评语大全
2014/04/24 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
委托培训协议书
2014/11/17 职场文书
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js