gpt4 book ai didi

transformer - 如何使用 GPT2 模型获得直接下一个词的概率?

转载 作者:行者123 更新时间:2023-12-03 17:08:20 29 4
gpt4 key购买 nike

我正在尝试拥抱脸 gpt2 模型。我见过 run_generation.py script ,它会在给定提示的情况下生成一系列标记。我知道我们可以将 GPT2 用于 NLG。
在我的用例中,我希望(仅)确定给定提示后紧接的下一个单词的概率分布。理想情况下,这种分布将覆盖整个词汇。
例如,给定提示:“How are”,它应该给出一个概率分布,其中“you”或“they”具有一些高浮点值而其他词汇具有非常低的浮点值。
如何使用拥抱面部变压器做到这一点?如果不能拥抱脸,是否还有其他变压器模型可以做到这一点?

最佳答案

你可以看看 generation script works 的概率如何。GPT2LMHeadModel(以及其他“MLHead”模型)返回一个张量,其中包含每个输入的下一个标记可能是什么的非标准化概率。即,模型的最后一个输出是下一个标记的归一化概率(假设 input_ids 是一个带有标记生成器的标记索引的张量):

outputs = model(input_ids)
next_token_logits = outputs[0][:, -1, :]
您可以通过使用 softmax 对 logits 进行归一化来获得分布。 next_token_logits 的第一维中的索引对应于您从标记器对象获得的词汇表中的索引。
当您使用大于 1 的批量大小和不同长度的序列时,选择最后一个 logits 变得棘手。在这种情况下,您需要在模型调用中指定 attention_mask 以屏蔽填充标记,然后使用 torch.index_select 选择最后一个 logits。使用批量大小为 1 或批量相同长度的序列要容易得多。
您可以在 Transformers 中使用任何自回归模型:有 distilGPT-2(GPT-2 的蒸馏版本)、CTRL(基本上是用一些额外的“命令”训练的 GPT-2)、原始 GPT(名称为 openai-gpt) , XLNet(专为上下文嵌入而设计,但可用于以任意顺序生成)。可能还有更多,您可以 Hugging Face Model Hub

关于transformer - 如何使用 GPT2 模型获得直接下一个词的概率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62852940/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com