tensorflow - 聊天机器人的 Seq2Seq 模型

标签 tensorflow machine-learning chatbot machine-translation sequence-to-sequence

我正在构建一个带有序列到序列编码器解码器模型的聊天机器人,如 NMT 所示。 。从给出的数据中我可以了解到,在训练时,它们将解码器输出与编码器单元状态一起馈送到解码器输入中。我无法弄清楚当我实际实时部署聊天机器人时,我应该如何将什么输入到解码器中,因为那时我必须预测输出。有人可以帮我解决这个问题吗?

最佳答案

确切的答案取决于您从 Neural Machine Translation model 中获取的构建 block (NMT)以及您将用自己的替换哪些。我假设图结构与 NMT 中的完全一样。

如果是这样,在推理时,您可以只向解码器提供一个零向量。

<小时/>

内部详细信息:NMT 使用名为 Helper 的实体来确定解码器中的下一个输入(请参阅 tf.contrib.seq2seq.Helper 文档)。

特别是,tf.contrib.seq2seq.BasicDecoder在执行步骤时仅依赖于 helper:输入到后续单元格的 next_inputs 正是 Helper.next_inputs() 的返回值。

Helper 接口(interface)有不同的实现,例如,

代码位于 BaseModel._build_decoder方法。 请注意,GreedyEmbeddingHelper 和 SampleEmbeddingHelper 都不关心解码器输入是什么。所以事实上你可以喂任何东西,但零张量是标准选择。

关于tensorflow - 聊天机器人的 Seq2Seq 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48017090/

相关文章:

tensorflow - tensorflow 中的简单 softmax 分类器

botframework - 添加 QnA Maker 资源时机器人问候停止工作

machine-learning - 在未知测试集上使用 Select-K-best

python - ZeroConf 与 Python 聊天

python - 我需要一些帮助来修复一个 python 脚本,该脚本为 chatgpt 提供人形语音,并允许我使用自己的声音与它交谈

python-3.x - tensorflow 中批处理中每个项目的 LSTM 初始状态

c++ - 最大化 tensorflow 多 GPU 性能

python - 如何在 TensorFlow while_loop 中赋值

machine-learning - 应用机器学习来分析混合语言

r - 对数据进行分组并生成新列