如何在遇到<EOS>时实施“做某事”

2024-06-12 05:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

标记<EOS>在NLP中广泛使用。由于我还没有使用它,对它的条件作用的实现我有点不清楚。有人能提供一段Python代码吗(可使用If语句。)

示例1:有一个单词序列,其中插入了一些<EOS>标记。这个序列经过RNN编码。每当遇到<EOS>,timestep就会输出它的状态

例2:机器翻译任务。当遇到<EOS>时,它停止生成令牌


Tags: 代码标记示例编码ifnlp状态序列
1条回答
网友
1楼 · 发布于 2024-06-12 05:28:40

EOS令牌对于解码器也很重要:显式的“end”令牌允许解码器发射任意长度的序列。解码器将告诉我们何时完成了令牌的发射:如果没有“结束”令牌,我们将不知道解码器何时完成了与我们的对话,继续发射令牌将产生乱码

例如,我有一段来自image captioning的关于机器翻译的片段:

        # Which sequences are incomplete (didn't reach <end>)?
        incomplete_inds = [ind for ind, next_word in enumerate(next_word_inds) if
                           next_word != word_map['<end>']]
        complete_inds = list(set(range(len(next_word_inds))) - set(incomplete_inds))

这里的标记<end>类似于<EOS>。此代码段在为图像生成标题时查找<end>标记。当然,我们需要知道何时停止,并且在训练步骤中预先知道图像的标题边界,因此标题的长度是预定义的

相关问题 更多 >