用于Seq2Seq的Tensorflow API

时间:2017-11-03 16:49:20

标签: tensorflow

今年Google为seq2seq制作了5个不同的软件包:

哪个包实际上值得用于实现?似乎它们都是不同的方法,但它们都不够稳定。

1 个答案:

答案 0 :(得分:4)

我对某个问题感到头疼,选择哪种框架?我想使用编码器解码器实现OCR。我一直在尝试使用legacy_seq2seq来实现它(当时它是主库),但很难理解所有这些过程,因为它不应该再被使用了。

  • https://github.com/google/seq2seq:对我而言,尝试使用不编写自己的代码来创建命令行训练脚本。如果你想学习翻译模型,这应该有用,但在其他情况下它可能不适用(比如我的OCR),因为没有足够的文档和太少的用户

  • https://github.com/tensorflow/tensor2tensor:这与上面的实现非常相似,但它是维护的,您可以为ex添加更多自己的代码。阅读自己的数据集。基本用法是翻译。但它也可以实现像Image Caption这样的任务,这很不错。因此,如果你想尝试使用库,你的问题是txt-> txt或image-> txt,那么你可以试试这个。它也适用于OCR。我只是不确定每个案例都有足够的文档(比如在特征提取器中使用CNN)

  • https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/seq2seq:除此之外,这只是纯库,当您想要使用TF自己创建seq2seq时,这可能很有用。它有一个添加注意,序列丢失等功能。在我的情况下,我选择了该选项,因为我有更多的自由选择框架的每一步。我可以选择CNN架构,RNN小区类型,Bi或Uni RNN,解码器类型等。但是你需要花一些时间来熟悉它背后的所有想法。

  • https://github.com/tensorflow/nmt:另一个基于tf.contrib.seq2seq
  • 的翻译框架

从我的角度来看,你有两个选择:

  1. 如果您想非常快速地检查这个想法并确保使用非常高效的代码,请使用tensor2tensor库。它应该可以帮助您获得早期结果,甚至是非常好的最终模型。
  2. 如果您想进行研究,不确定管道应该是什么样子或者想要了解seq2seq的想法,请使用tf.contrib.seq2seq中的库。