gpt4 book ai didi

python - 如何显示一个句子中下一个单词的多个预测?

转载 作者:行者123 更新时间:2023-12-04 04:13:27 25 4
gpt4 key购买 nike

我正在使用 GPT-2 预训练模型。我正在处理的代码将获得一个句子并为该句子生成下一个单词。我想打印多个预测,比如概率最高的三个预测!
例如,如果我放入句子“我是一个有趣的......”
预测:“书籍”“故事”“新闻”

有没有办法可以修改此代码以显示这些预测而不是一个?!

代码中也有两部分,我不明白,(predictions[0, -1, :])中的数字是什么意思?为什么我们放[0]predictions = output[0] ?


import torch
from pytorch_transformers import GPT2Tokenizer, GPT2LMHeadModel

# Load pre-trained model tokenizer (vocabulary)
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')

# Encode a text inputs
text = "The fastest car in the "
indexed_tokens = tokenizer.encode(text)


# Convert indexed tokens in a PyTorch tensor
tokens_tensor = torch.tensor([indexed_tokens])


# Load pre-trained model (weights)
model = GPT2LMHeadModel.from_pretrained('gpt2')

# Set the model in evaluation mode to deactivate the DropOut modules
model.eval()

# If you have a GPU, put everything on cuda
#tokens_tensor = tokens_tensor.to('cuda')
#model.to('cuda')

# Predict all tokens
with torch.no_grad():
outputs = model(tokens_tensor)
predictions = outputs[0]
#print(predictions)


# Get the predicted next sub-word
predicted_index = torch.argmax(predictions[0, -1, :]).item()
predicted_text = tokenizer.decode(indexed_tokens + [predicted_index])

# Print the predicted word
#print(predicted_index)
print(predicted_text)

上述代码的结果将是:
The fastest car in the world.

最佳答案

您可以使用 torch.topk如下:
predicted_indices = [x.item() for x in torch.topk(predictions[0, -1, :],k=3)]

关于python - 如何显示一个句子中下一个单词的多个预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61239331/

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