今年Google为seq2seq制作了5个不同的软件包:
哪个包实际上值得用于实现?似乎它们都是不同的方法,但它们都不够稳定。
答案 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,解码器类型等。但是你需要花一些时间来熟悉它背后的所有想法。
tf.contrib.seq2seq
库从我的角度来看,你有两个选择:
tensor2tensor
库。它应该可以帮助您获得早期结果,甚至是非常好的最终模型。 tf.contrib.seq2seq
中的库。