从谷歌中选择
机器的心编译
参加:冷酷的蚂蚁
谷歌又开源了! tf-seq2seq是TensorFlow的通用编码器-解码器框架,可以用于机器翻译、文本摘要、会话建模、图像说明等任务。
项目介绍: https://谷歌. github.io/SEQ2SEQ /
代码地址: https://Github.com /谷歌/SEQ2seq
设计目标
谷歌表示,设计该框架的目标是满足以下目标:
通用性:最初为机器翻译开发了这个框架,后来也适用于摘要、会话建模、图像说明等各种类型的任务。 如果你的问题可以通过“用一种格式编码输入数据,再用另一种格式解码”来解决的话,你应该可以使用和扩展这个框架。
性爱:只有一行命令才能训练模型。 支持包含标准原始文本的多个输入数据类型。
重复性:可以使用YAML文件设置培训流程和模型。 这样,其他人也可以运行和你的模型一模一样的模型。
可扩展性:代码是模块化构建的,因此易于扩展。 例如,添加新类型的注意机制和编码器体系结构只需要最少的代码修改。
文档:所有代码都是使用标准Python docstrings记录的。 此外,还编写了指南,以方便访问常见任务。
卓越性能:为了代码的简单性,我们没有试图榨干所有的性能,但是这个实现对大多数生产和研究APP来说足够快。 tf-seq2seq也支持分布式训练,因此可以在计算能力和训练时间之间进行权衡。
编码器
编码器用于读取源数据(如单词序列和图像),并在连续的空间中生成特征表示。 例如,循环神经网络编码器可以输入单词序列,并生成与该文本的含义大致相对应的固定长度的向量。 基于卷积神经网络的编码器可以输入一个图像,生成包括该图像的更高级特征的新的内容。 其中的思想可以由编码器产生的表示或解码器用于产生新的数据,例如另一种语言的句子和图像的描述。 可用编码器的列表请参阅https://谷歌. github.io/seq2seq /编码器/
解码器
解码器是基于编码器生成的特征的生成模型。 例如,一种循环神经网络解码器可以学习另一种语言的表示,该语言产生一种代码语句。 解码器列表为https://谷歌. github.io/seq2seq /解码器/
模特
模型定义了编码器和解码器的组合,以及计算和最小化损耗函数的方法。 模型还需要对从输入过程读取的数据进行必要的预处理。 这里安装的各个模型是可以传递给tf.contrib.learn Estimator的model_fn。 可用型号的列表是https://谷歌. github.io/seq2seq/models /
问答
问:这个框架与谷歌货币转换(gnmt )相比怎么样? 这里开源是官方实现吗?
答:不,这不是GNMT系统的正式开源实现。 该框架是自下而上构建的,可以用于各种任务。 神经机器翻译只是其中之一。 虽然我们还没有在这个框架中复制GNMT架构,但是我们欢迎你在这个方向上的贡献。 3359谷歌. github.io/SEQ 2问答/贡献/
相关框架
以下框架在功能上与tf-seq2seq相似:
open NMT (轨道):http://opennmt.net/
通用货币流: https://github.com/ufal /通用货币
Nematus(theAno ):https://Github.com/RSennrich/NEMA TUS