关于tf.reverse_sequence()简述


Posted in Python onJanuary 20, 2020

tf.reverse_sequence()简述

在看bidirectional_dynamic_rnn()的源码的时候,看到了代码中有调用 reverse_sequence()这一方法,于是又回去看了下这个函数的用法,发现还是有点意思的。根据名字就可以能看得出,这个方法主要是用来翻转序列的,就像双线LSTM中在反向传播那里需要从下文往上文处理一样,需要对序列做一个镜像的翻转处理。

先来看一下这个方法的定义:

reverse_sequence(
  input,
  seq_lengths,
  seq_axis=None,
  batch_axis=None,
  name=None,
  seq_dim=None,
  batch_dim=None)

其中input是输入的需要翻转的目标张量,seq_lengths是一个张量;

其元素是input中每一处需要翻转时翻转的长度,在双向LSTM中这个值统一被设为输入语句的长度,代表着整句话都需要被翻转,而实际上张量中的元素值可以是不同的,下面的例子中就可以看出;

seq_axis和seq_dim的关系,在源码中做了如下操作:

seq_axis = deprecation.deprecated_argument_lookup("seq_axis", seq_axis,
                          "seq_dim", seq_dim)

返回中return gen_array_ops.reverse_sequence(..., seq_dim=seq_axis,...),同理,对于batch_axis和batch_dim也是相同的处理。意义上来说,按照官方给出的解释,“此操作首先沿着维度batch_axis对input进行分割,并且对于每个切片 i,将前 seq_lengths 元素沿维度 seq_axis 反转”。实际上通俗来理解,就是对于张量input中的第batch_axis维中的每一个子张量,在这个子张量的第seq_axis维上进行翻转,翻转的长度为 seq_lengths 张量中对应的数值。

举个例子,如果 batch_axis=0,seq_axis=1,则代表我希望每一行为单位分开处理,对于每一行中的每一列进行翻转。相反的,如果 batch_axis=1,seq_axis=0,则是以列为单位,对于每一列的张量,进行相应行的翻转。回头去看双向RNN的源码,就可以理解当time_major这一属性不同时,time_dim 和 batch_dim 这一对组合的取值为什么恰好是相反的了。

写一个简单的测试代码:

a = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
l = tf.constant([1,2,3],tf.int64) # 每一次翻转长度分别为1,2,3.由于a是(3,3)维的,所以l中数值最大只能是3
x = tf.reverse_sequence(a,seq_lengths=l,seq_axis = 0,batch_axis= 1) # 以列为单位进行翻转,翻转的是每一行的元素
y = tf.reverse_sequence(a,seq_lengths=l,seq_axis = 1,batch_axis= 0) # 以行为单位进行翻转,翻转的是每一列的元素
with tf.Session() as sess:
  print(sess.run(x))
  print(sess.run(y))

结果如下:

# 每一列上的元素种类没有发生变化,但是从每一行来看,行的顺序分别翻转了前1,前2,前3个元素
[[1 5 9]
 [4 2 6]
 [7 8 3]]
# 每一行上的元素种类没有发生变化,但是从每一列来看,列的顺序分别翻转了前1,前2,前3个元素
[[1 2 3]
 [5 4 6]
 [9 8 7]]

以上这篇关于tf.reverse_sequence()简述就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过正则查找微博@(at)用户的方法
Mar 13 Python
基于Python实现的百度贴吧网络爬虫实例
Apr 17 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
python for循环输入一个矩阵的实例
Nov 14 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
用python批量解压带密码的压缩包
May 31 Python
图神经网络GNN算法
May 11 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 #Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 #Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 #Python
python机器学习库xgboost的使用
Jan 20 #Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 #Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 #Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 #Python
You might like
PHP源码之explode使用说明
2011/08/05 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
js使用递归解析xml
2014/12/12 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
layui表格实现代码
2017/05/20 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
python 实现线程之间的通信示例
2020/02/14 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
文史专业毕业生自荐信
2013/11/17 职场文书
网站客服岗位职责
2014/04/05 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技