bert模型加载、预训练、推理的教程

bert模型加载、预训练、推理的教程

在这篇文章中,我将带你一步一步地了解如何使用 Hugging Face 的 transformers 库,下载并加载预训练模型,然后进行简单的推理任务。本文适合刚接触深度学习和自然语言处理(NLP)的初学者。我们将使用 BERT 作为示例,并通过详细的代码注释帮助你理解每一步。



一、完整代码

与下面代码对应的视频教程:bert代码解释

# 1. 导入所需库
from modelscope import snapshot_download
from transformers import AutoTokenizer, AutoModelForMaskedLM
import torch

# 2. 下载并加载预训练模型
model_dir = snapshot_download('tianshi/bert-base-chinese', cache_dir='./model')

# 3. 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("./model/tianshi/bert-base-chinese")
model = AutoModelForMaskedLM.from_pretrained("./model/tianshi/bert-base-chinese")

# 4. 定义输入句子
sentence1 = '天气真好'
sentence2 = '我们去爬山'

# 5. 编码输入句子
inputs = tokenizer.encode_plus(sentence1, sentence2, max_length=16, truncation=True, pad_to_max_length=True)

# 6. 创建 PyTorch 张量
input_ids = torch.tensor(inputs['input_ids']).unsqueeze(0)
attention_mask = torch.tensor(inputs['attention_mask']).unsqueeze(0)

# 7. 模型推理
outputs = model(input_ids=input_ids, attention_mask=attention_mask)

# 8. 获取模型的最后隐藏状态
last_hidden_state = outputs.last_hidden_state

# 9. 打印最后隐藏状态
print(last_hidden_state)

# 10. 查看输出张量的形状
print(last_hidden_state.shape)


代码说明
  1. 模型加载与推理:从 ModelScope 下载预训练的 BERT 中文模型,并使用 AutoTokenizerAutoModelForMaskedLM 来进行分词和推理。
  2. 张量转换:将输入句子编码为 BERT 模型可接受的格式,并将其转换为 PyTorch 张量。
  3. 模型输出:执行推理,得到最后隐藏状态并输出它的形状。

这份完整的代码涵盖了如何加载、预训练、推理 BERT 模型的每一步。



二、代码详细解释

准备工作

首先,你需要确保已安装 transformers 库。你可以通过以下命令安装:

pip install transformers

接下来是代码的逐步解释。

1. 导入所需库

from modelscope import snapshot_download
from transformers import AutoTokenizer, AutoModelForMaskedLM
import torch
  • modelscope 是一个模型管理和部署平台,我们通过 snapshot_download 函数从中下载预训练的 BERT 模型。
  • transformers 是 Hugging Face 提供的库,里面有很多预训练模型。我们将使用 AutoTokenizerAutoModelForMaskedLM 自动加载合适的分词器和模型。
  • torch 是 PyTorch 框架,我们会用它来创建张量并进行数学运算。

2. 下载并加载预训练模型

model_dir = snapshot_download('tianshi/bert-base-chinese', cache_dir='./model')
  • 这里使用 snapshot_download 函数从 ModelScope 平台下载名为 tianshi/bert-base-chinese 的模型,并将其存储在本地目录 ./model 中。

3. 加载分词器和模型

tokenizer = AutoTokenizer.from_pretrained
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值