我在tensorflow中编写了我的第一个神经机器翻译器。我正在使用编码器/解码器机制。我的编码器和解码器是具有剩余连接的lstm堆栈,但编码器具有初始双向层。解码器没有。
在代码中我常见的做法是用编码器单元的最后状态初始化解码器单元的状态。但是,如果您的编码器和解码器架构相同,这只是一个干净的解决方案,就像许多seq2seq教程中的情况一样。在许多其他系统中,例如this model 谷歌的架构在编码器和解码器上有所不同。
在这些情况下,用于初始化解码器状态的一些替代策略是什么?
我已经看到了编码器的最后隐藏状态通过训练的权重向量以为所有解码器层创建初始解码器状态的情况。我也看到了更多有创造性的想法,例如here提出的想法,但我想对人们选择某些策略的原因有所了解。