用于Seq2Seq的Tensorflow API

Nik*_*rev 6 tensorflow

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

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

mel*_*r89 4

我一直很头疼一个问题,该选择哪个框架?我想使用编码器-解码器来实现 OCR 并注意。我一直在尝试使用它来实现它legacy_seq2seq(当时它是主库),但是很难理解所有的过程,当然它不应该再使用了。

  • https://github.com/google/seq2seq:对我来说,这看起来像是尝试制作一个命令行训练脚本而不编写自己的代码。如果你想学习翻译模型,这应该可以,但在其他情况下可能不行(比如我的 OCR),因为没有足够的文档和用户数量太少

  • https://github.com/tensorflow/tensor2tensor:这与上面的实现非常相似,但它得到了维护,您可以为 ex 添加更多自己的代码。读取自己的数据集。基本用法还是翻译。但它也可以实现像图像标题这样的任务,这很好。因此,如果您想尝试准备使用库并且您的问题是 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.