首页 > 解决方案 > 为什么我们在张量流中输入 seq2seq 模型时要反转输入(tf.reverse(inputs,[-1]))

问题描述

为什么我们在tensorflow(tf.reverse(inputs,[-1])) 中输入seq2seq模型时要反转输入

training_predictions,test_predictions=seq2seq_model(tf.reverse(inputs,[-1]),
                                                    targets,
                                                    keep_prob,
                                                    batch_size,
                                                    seq_length,
                                                    len(answerswords2int),
                                                    len(questionswords2int),
                                                    encoding_embedding_size,
                                                    decoding_embedding_size,
                                                    rnn_size,
                                                    num_layers,
                                                    questionswords2int)

标签: tensorflownlpseq2seq

解决方案


据我所知,反转输入源于论文Sequence to sequence learning with neural networks

这个想法起源于机器翻译(我不确定它在其他领域如何发挥作用,例如聊天机器人)。考虑以下场景(从原始论文中借用)。你要翻译,

A B C -> alpha beta gamma delta

在这种情况下,我们必须ABC在开始预测之前遍历完整的源序列()alpha,那时翻译者可能已经忘记了A。但是当你这样做时,

C B A -> alpha beta gamma delta

您从到有一个强大的通信链接,其中“可能”与翻译相关。AalphaAalpha

注意:这完全取决于您的翻译任务。如果目标语言以与源语言相反的顺序(例如考虑从主-动词-宾语翻译成宾-动词-主语语言)为 ,我认为最好保持原来的顺序。


推荐阅读