tensorflow - 为什么我们在张量流中输入 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)
解决方案
据我所知,反转输入源于论文Sequence to sequence learning with neural networks
这个想法起源于机器翻译(我不确定它在其他领域如何发挥作用,例如聊天机器人)。考虑以下场景(从原始论文中借用)。你要翻译,
A B C -> alpha beta gamma delta
在这种情况下,我们必须ABC
在开始预测之前遍历完整的源序列()alpha
,那时翻译者可能已经忘记了A
。但是当你这样做时,
C B A -> alpha beta gamma delta
您从到有一个强大的通信链接,其中“可能”与翻译相关。A
alpha
A
alpha
注意:这完全取决于您的翻译任务。如果目标语言以与源语言相反的顺序(例如考虑从主-动词-宾语翻译成宾-动词-主语语言)为 ,我认为最好保持原来的顺序。
推荐阅读
- excel - 基于值的 Excel 气泡图透明度
- javascript - 未处理的承诺拒绝和 ERR_HTTP_HEADERS_SENT
- python - 如何在循环python之外的for循环中使用变量
- python - 如何获取正在执行的脚本的文件路径?
- express - 在异步函数中发送响应
- laravel-sanctum - Laravel sanctum SPA - 此 set-cookie 域属性对于当前主机 url 无效
- r - 在将时间序列数据集输入 R 中的神经网络之前要遵循的步骤
- javascript - 如何防止人们从检查器中过载套接字 node.js 服务器?
- javascript - 悬停时将类添加到共享类的另一个元素
- sql - Oracle SQL 中的 UNION ALL 困难