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的更多相关文章

  1. Dynamic attention in tensorflow

    新代码在contrib\seq2seq\python\ops\attention_decoder_fn.py 和之前代码相比 不再采用conv的方式来计算乘,直接使用乘法和linear 给出了两种at ...

  2. Effective Tensorflow[转]

    Effective TensorFlow Table of Contents TensorFlow Basics Understanding static and dynamic shapes Sco ...

  3. Tensorflow.nn 核心模块详解

    看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块.我们通过源码来一探究竟. # Copyright 2015 Google Inc. All Rights Re ...

  4. tensorflow 控制流操作,条件判断和循环操作

    Control flow operations: conditionals and loops When building complex models such as recurrent neura ...

  5. 【转载 | 翻译】Visualizing A Neural Machine Translation Model(神经机器翻译模型NMT的可视化)

    转载并翻译Jay Alammar的一篇博文:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models Wi ...

  6. 深度学习与CV教程(8) | 常见深度学习框架介绍

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  7. Hinton's paper Dynamic Routing Between Capsules 的 Tensorflow , Keras ,Pytorch实现

    Tensorflow 实现 A Tensorflow implementation of CapsNet(Capsules Net) in Hinton's paper Dynamic Routing ...

  8. ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档]

    ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档] 简介 简单地说就是该有的都有了,但是总体跑起来效果还不好. 还在开发中,它工作的效果还不好.但是你可以直 ...

  9. 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 ...

随机推荐

  1. Mybatis JDBC->Mybatis

    1 什么是JDBC Java程序都是通过JDBC(Java Data Base Connectivity)连接数据库的,通过SQL对数据库编程.JDBC是由SUN公司(SUN公司已被Oracle公司收 ...

  2. Java中map集合系列原理剖析

    看了下JAVA里面有HashMap.Hashtable.HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正 HashMap和Hashtable的区别 HashSet和Hash ...

  3. PAT基础6-1

    6-1 简单输出整数 (10 分) 本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数. 函数接口定义: void PrintN ( int N ); 其中N是用户传入的参数.该函数必须 ...

  4. win10电脑录教学视频的时候有回声或者通话的时候有回声,严重干扰录制效果,解决方式。

    1.右键点击屏幕右下脚的小喇叭图标. 2.选择声音. 3.选择“录制”,出现如下 4.选择侦听 5.把侦听此设备 的打勾去掉.然后点击应用,点击确定,即可. 再也没有回声的烦恼了.

  5. 2018-8-16JWTtoken用户登录认证思路分析9502751

    2018-8-16JWTtoken用户登录认证思路分析9502751 JWT token在商城中的实现 class UserView(CreateAPIView): serializer_class ...

  6. 转 ef中使用mysql步骤--Entity Framework 6 with MySql

    原文:http://lvasquez.github.io/2014/11/18/EntityFramework-MySql/ For the Entity Framework 6 support we ...

  7. JAVA自学笔记14

    JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...

  8. C#保存文件为无BOM的utf8格式

    如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM ...

  9. linux下gflags的安装

    gflags是google开发的一套命令行参数解析工具,被很多软件系统所依赖,应该算是一个基础的库,安装其实很简单,但是如果在网上找的一些教程大部分都是安装后不能被其他软件调用的,因为默认使用cmak ...

  10. 每天一个linux命令(14):head命令

    1.命令简介 head (head) 用来显示档案的开头至标准输出中.如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头.如果不指定文件,或者文件为"-",则从标准输入读 ...