Dynamic seq2seq in tensorflow
v1.0中 tensorflow渐渐废弃了老的非dynamic的seq2seq接口,已经放到 tf.contrib.legacy_seq2seq目录下面。
tf.contrib.seq2seq下面的实现都是dynamic seq2seq接口。
按照google的rd说法下个月将会给出更加完善的接口和实现。
当前版本也可以使用这里尝试分析一下现有dynamic seq2seq的代码。
首先核心函数是seq2seq.py下面的 dynamic_rnn_decoder
这里首先看下dynamic的概念,即不需要确定的输入长度,以及batch 大小,
都可以动态。
但是注意首先每个batch对应所有样本的输入长度还是需要一样的
作为dense数据
否则
不可处理
这也就是说如果你需要特别在意速度的话,即使使用dyanmic 也可能还需要使用bucket来聚集相似长度的
输入样本作为一个batch 加速训练。
不过一般意义上不用的话,代码比较简单,加上dyanmic的seq2seq 性能也可以接受,同时好处是每个batch
的样本可以完全随机。
dynamic_rnn_decoder核心是内部调用raw_rnn来实现迭代过程,这里的dynamic最主要体现在输入的
decoder_fn函数上面。
这个函数允许计算提前终止(early stop) 也就是说
假如你做inference,不用dynamic seq2seq
你一般的做法是指定一个
最大decode长度
比如20, 那么对应所有样本其实都需要decode走完20个
Step 哪怕所有的样本对应输出序列长度都不大于10。
而有了dynamic decode 当一个batch 所有的样本decode到达
类似<END>结束符之后,整个decode过程就
结束了。
但是注意这里仍然是以batch为基础的,也就是说有一个样本比如decode 2次就到达结束符,但是由于
组内其它样本没有结束,仍然需要所有样本继续向后解析,也就是说batch size越大,结束的可能越晚。
dynamic_rnn_decoder有train和inference两种模式,不过如果不使用attention,个人感觉train的时候直接
用dynamic_rnn接口就可以了。
最后按照刚刚master的代码,seq2seq提供了decoder.py以及sampling_decoder.py等相关的示例,
这个接口更加简洁清晰,也就是说不再用context_state来记录用户其余的状态,而是用户自定义
output的结构
将其它信息也直接写入output。
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmimmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
Dynamic seq2seq in tensorflow的更多相关文章
- Dynamic attention in tensorflow
新代码在contrib\seq2seq\python\ops\attention_decoder_fn.py 和之前代码相比 不再采用conv的方式来计算乘,直接使用乘法和linear 给出了两种at ...
- Effective Tensorflow[转]
Effective TensorFlow Table of Contents TensorFlow Basics Understanding static and dynamic shapes Sco ...
- Tensorflow.nn 核心模块详解
看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块.我们通过源码来一探究竟. # Copyright 2015 Google Inc. All Rights Re ...
- tensorflow 控制流操作,条件判断和循环操作
Control flow operations: conditionals and loops When building complex models such as recurrent neura ...
- 【转载 | 翻译】Visualizing A Neural Machine Translation Model(神经机器翻译模型NMT的可视化)
转载并翻译Jay Alammar的一篇博文:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models Wi ...
- 深度学习与CV教程(8) | 常见深度学习框架介绍
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- Hinton's paper Dynamic Routing Between Capsules 的 Tensorflow , Keras ,Pytorch实现
Tensorflow 实现 A Tensorflow implementation of CapsNet(Capsules Net) in Hinton's paper Dynamic Routing ...
- ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档]
ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档] 简介 简单地说就是该有的都有了,但是总体跑起来效果还不好. 还在开发中,它工作的效果还不好.但是你可以直 ...
- ChatGirl is an AI ChatBot based on TensorFlow Seq2Seq Model
Introduction [Under developing,it is not working well yet.But you can just train,and run it.] ChatGi ...
随机推荐
- 初学JDBC的一些总结(一)
1.关于JDBC的的个人理解: JDBC(Java Data Base Connectivity,java 数据库连接)是用于执行 SQL 语句的 JavaAPI,可以为多种关系型数据库提供统一的访问 ...
- jsp下载文件的实现方法及注意事项 (转)
jsp中实现文件下载,最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>. 但是,这样服务器上的目录资源 ...
- python之函数联系
----------------------作业一 # 有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字# linux=['钢弹','小壁虎','小虎比','alex','w ...
- JS_高程4.变量,作用域和内存问题(1)
1.基本类型和应用类型的值 ECMAScript变量可能包含两种不同数据类型的值: 基本类型值——简单的数据段.(5种基本的数据类型,按值访问,因为可以操作保存在变量中的实际的值.) 引用类型值——多 ...
- JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解
一.绝对路径和相对路径 ①开发时建议使用据对路径,使用绝对路径肯定没有问题,但是用相对路径可能会有问题. 在由Servlet转发到JSP页面时,此时在浏览器地址栏显示Sevvlet路径,若JSP页面的 ...
- fzu1062 洗牌问题(思路模拟)
http://acm.fzu.edu.cn/problem.php?pid=1062 一开始想暴力找规律,没看出来..然后开始推,推测根据1再次返回第一个的时候顺序也复原,然后想以此推导出一个规律公式 ...
- Sqoop: ERROR manager.SqlManager: Error reading from database: java.sql.SQLException:
sqoop import --connect jdbc:mysql://122.206.79.212:3306/dating --username root --password 123456 --t ...
- Creating a NuGet Package in 7 easy steps - Plus using NuGet to integrate ASP.NET MVC 3 into existing Web Forms applications
UPDATE: Check out my follow up post where I remove the need for editing the Global.asax.cs and show ...
- Wordpress显示文章摘要
放在文章的循环里: <?php if (!empty($post->post_excerpt) ) { //如果文章有摘要则输出摘要 the_excerpt(); } ?>
- PHP类中self和$this的区别
1.self代表类,$this代表对象2.能用$this的地方一定使用self,能用self的地方不一定能用$this静态的方法中不能使用$this,静态方法给类访问的. 今天在使用静态方法的时候,使 ...