What Tensorflow API to use for Seq2Seq



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

  • seq2seq(声称是通用的,但不活动)
  • nmt(活动,但应该只是大约NMT)
  • legacy_seq2seq(显然是遗留问题)
  • contrib/seq2seq(可能不完整)
  • tensor2传感器(也有类似用途积极发展)

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

我一直很头疼一些问题,该选择哪个框架?我想用编码器解码器来实现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中的库

最新更新