首页 > 解决方案 > 不同的用法,代币

问题描述

<PAD>我发现,<EOS><GO>标记有很多不同的用法。

就个人而言,我将这三个标记分开并为其分配不同的嵌入,专门为标记分配一个全零嵌入向量<PAD>(使用基于 RNN 的 seq2seq 模型)。

大多数代码表明<PAD>,<EOS>并且<GO>都表示为<PAD>令牌。

我想知道这些令牌是否有最佳使用(就基于 RNN 的模型或基于转换器的模型而言)。

标签: tensorflowdeep-learningpytorch

解决方案


这些是 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


推荐阅读