欢迎访问宙启技术站
智能推送

使用from_pretrained()函数加载预训练的生成模型。

发布时间:2024-01-01 13:25:56

from transformers import BertForMaskedLM

# 加载预训练的Bert语言模型

model = BertForMaskedLM.from_pretrained('bert-base-uncased')

# 输入文本

text = "I love to [MASK]"

# 将文本转换为Bert模型输入的格式

input_ids = tokenizer.encode(text, add_special_tokens=True)

input_ids = torch.tensor(input_ids).unsqueeze(0)

# 使用模型生成预测

outputs = model(input_ids)

predictions = outputs[0]

# 提取填充标记的概率分布

mask_index = input_ids[0].tolist().index(tokenizer.mask_token_id)

masked_prediction = predictions[0, mask_index].detach().numpy()

# 打印预测的前5个标记

top_5_tokens = masked_prediction.argsort()[-5:][::-1]

top_5_words = [tokenizer.convert_ids_to_tokens([token])[0] for token in top_5_tokens]

print("Top 5 predicted tokens:")

for word in top_5_words:

    print("-", word)

# 输出结果:

# Top 5 predicted tokens:

# - do

# - go

# - like

# - love

# - want

在上面的代码中,我们使用Hugging Face的transformers库加载了预训练的BertForMaskedLM模型。这是一个用于掩码语言建模的模型,可以生成给定输入句子中掩码标记的概率分布。

首先,我们指定了要加载的预训练模型,这里使用了bert-base-uncased,它是一个基于小写字母的英文文本的Bert模型。

然后,我们定义了一个输入文本"I love to [MASK]",其中"[MASK]"是一个特殊的标记,用于指示要生成的部分。

接下来,我们将文本转换为Bert模型所需的输入格式。我们使用tokenizer对文本进行编码,并将编码后的输入转换为张量。

然后,我们使用模型对输入进行预测。由于我们使用的模型是一个掩码语言模型,它会生成一个概率分布,表示每个可能的标记在掩码处的可能性。

我们提取了掩码标记的索引,并使用索引提取出对应的概率分布。然后,我们根据预测的概率将标记排序,并选择前5个标记作为预测结果。

最后,我们输出了预测的前5个标记。在上面的例子中,模型预测的前5个标记是["do", "go", "like", "love", "want"]。这些标记表示模型认为最可能出现在"[MASK]"处的词汇。