tensorflow - 不同的用法,和代币
问题描述
<PAD>
我发现,<EOS>
和<GO>
标记有很多不同的用法。
就个人而言,我将这三个标记分开并为其分配不同的嵌入,专门为标记分配一个全零嵌入向量<PAD>
(使用基于 RNN 的 seq2seq 模型)。
大多数代码表明<PAD>
,<EOS>
并且<GO>
都表示为<PAD>
令牌。
我想知道这些令牌是否有最佳使用(就基于 RNN 的模型或基于转换器的模型而言)。
解决方案
这些是 seq2seq 中使用的特殊标记:
GO - 与下图相同 - 第一个令牌与虽然向量一起被馈送到解码器,以开始生成答案 EOS 的令牌 - “句子结尾” - 与下图相同 - 如一旦解码器生成这个标记,我们就认为答案是完整的(你不能为此使用通常的标点符号,因为它们的含义可能不同) UNK - “未知标记” - 用于替换不适合的稀有词在你的词汇中。所以你的句子我的名字是 guotong1988 将被翻译成我的名字是unk. PAD - 您的 GPU(或最坏的 CPU)分批处理您的训练数据,并且您的批次中的所有序列都应该具有相同的长度。如果您的序列的最大长度为 8,则您的句子 My name is guotong1988 将从两侧填充以适应此长度: My name is guotong1988 pad pad pad pad
参考:https ://github.com/nicolas-ivanov/tf_seq2seq_chatbot/issues/15
推荐阅读
- python - 检测相似位置 Pygame
- angular - core.js:4197 ERROR 错误:未捕获(承诺)没有存储提供者
- javascript - 按日期时间降序和升序排列的firebase顺序
- javascript - 我如何使 QuerySelectorAll() 选择所有 html 标签并通过访问 html 标签的索引进行更改
- javascript - 如何从选定的复选框传递值
- apache-camel - 如何在Apache Camel中以间隔时间开始一条到另一条的路线
- python - 无法在 docker 中运行的浏览器中打开页面
- json - JSON对象的MQTT数据格式
- tableau-api - 在 Tableau 中过滤 Tableau 度量名称
- java - 我们如何编写模拟时钟的角度表达式?