Google今年为seq2seq生产了5种不同的软件包:
seq2seq(声称是通用的,但
无效) nmt(处于事件状态,但应该只是
关于NMT) legacy_seq2seq
(显然是遗留的) contrib/seq2seq
(可能不完整) tensor2tensor(类似的目的,
主动开发)
实际上哪个包值得用于实现?看来它们都是不同的方法,但是没有一个方法足够稳定。 对于某些问题,我太头疼了,该选择哪种框架?我要注意使用Encoder-Decoder实现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
库
从我的角度来看,您有两种选择:
如果您想快速检查想法并确保您使用的是非常有效的代码,请使用tensor2tensor
库。它应该可以帮助您获得早期结果甚至是非常好的最终模型。 如果您想进行研究,不确定管道的外观如何,或者不确定seq2seq的概念,请使用tf.contrib.seq2seq
中的库。