代码之家  ›  专栏  ›  技术社区  ›  Gaurang Tandon

如何在拥抱脸GPT2模型中得到下一个词的即时概率?

  •  0
  • Gaurang Tandon  · 技术社区  · 5 年前

    我在试gpt2模型。我见过 run_generation.py script ,它生成一个给定提示的令牌序列。我知道我们可以使用GPT2进行NLG。

    例如,给出提示:“How are”,它应该给出一个概率分布,其中“you”或“they”具有一些高浮点值,而其他vocab单词具有非常低的浮点值。

    如何使用拥抱变形金刚做到这一点?如果这是不可能的拥抱面对,有没有其他变压器模型,这样做?

    0 回复  |  直到 5 年前
        1
  •  7
  •   Jindřich    5 年前

    你可以看看 generation script works 以概率论。

    GPT2LMHeadModel input_ids 是一个张量,具有来自标记化器的标记索引):

    outputs = model(input_ids)
    next_token_logits = outputs[0][:, -1, :]
    

    next_token_logits 对应于从标记器对象获得的词汇表中的索引。

    当使用大于1的批大小和不同长度的序列时,选择最后一个logit会变得很棘手。在这种情况下,您需要指定 attention_mask torch.index_select . 使用批量大小为1或批量长度相等的序列要容易得多。

    openai-gpt ),XLNet(设计用于上下文嵌入,但可用于以任意顺序生成)。可能还有更多,你可以 Hugging Face Model Hub

    推荐文章