首页 文章

Seq2Seq聊天机器人模型

提问于
浏览
1

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

1 回答

  • 1

    确切的答案取决于您从Neural Machine Translation model(NMT)获取哪些构建块以及您将用自己的构建块替换哪些构建块 . 我假设图形结构与NMT完全相同 .

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


    Internal details :NMT使用名为 Helper 的实体来确定解码器中的下一个输入(请参阅tf.contrib.seq2seq.Helper文档) .

    特别是,tf.contrib.seq2seq.BasicDecoder在执行一个步骤时仅依赖于辅助程序: next_inputs 被输入到后续单元格正好是 Helper.next_inputs() 的返回值 .

    Helper 接口的不同实现,例如,

    代码在BaseModel._build_decoder方法中 . 请注意, GreedyEmbeddingHelperSampleEmbeddingHelper 都不关心解码器输入是什么 . 所以实际上你可以提供任何东西,但零张量是标准选择 .

相关问题