BERT - 直接调用transformers.BertModel, BertTokenizerAPI不进行任何微调

发布于:2025-04-12 ⋅ 阅读:(35) ⋅ 点赞:(0)

本节代码将使用 transformers 库加载预训练的BERT模型和分词器(Tokenizer),并处理文本输入。

1. 加载预训练模型和分词器

from transformers import BertTokenizer, BertModel

model_path = "/Users/azen/Desktop/llm/models/bert-base-chinese"

tokenizer = BertTokenizer.from_pretrained(model_path)
model = BertModel.from_pretrained(model_path)
  • BertTokenizer.from_pretrained(model_path)

    • 加载预训练的BERT分词器。model_path 是预训练模型的路径或名称。分词器会将文本分割成BERT模型可以理解的标记(tokens)。

  • BertModel.from_pretrained(model_path)

    • 加载预训练的BERT模型。model_path 是预训练模型的路径或名称。BERT模型可以用于多种自然语言处理任务,如文本分类、问答系统等。

2. 处理文本输入

text = "my dog is cute, he likes playing"
inputs = tokenizer(text)
  • tokenizer(text)

    • 将输入文本 text 转换为BERT模型可以处理的格式。具体来说,tokenizer 会执行以下操作:

      1. 分词:将文本分割成标记(tokens)。

      2. 添加特殊标记:在文本的开头添加 [CLS] 标记,在结尾添加 [SEP] 标记。

      3. 转换为ID:将每个标记转换为对应的ID(索引)。

      4. 生成注意力掩码:生成一个掩码,用于标记哪些位置是有效的输入(非填充部分)。

  • 如果不想添加 [CLS][SEP] 标记,可以在调用 tokenizer 时设置 add_special_tokens=False

text = "my dog is cute, he likes playing"
inputs = tokenizer(text, add_special_tokens=False, return_tensors="pt")
    输出inputs 是一个字典,包含以下内容:
    • input_ids:输入标记的ID列表。

    • token_type_ids:段嵌入索引列表。

    • attention_mask:注意力掩码。

    3. 完整示例

    以下是一个完整的示例,展示如何将文本输入传递给BERT模型,并获取模型的输出:

    from transformers import BertTokenizer, BertModel
    
    model_path = "/Users/azen/Desktop/llm/models/bert-base-chinese"
    
    tokenizer = BertTokenizer.from_pretrained(model_path)
    model = BertModel.from_pretrained(model_path)
    
    text = "my dog is cute, he likes playing"
    inputs = tokenizer(text, return_tensors="pt")  # 返回PyTorch张量
    
    # 获取输入张量
    input_ids = inputs["input_ids"]
    attention_mask = inputs["attention_mask"]
    
    # 将输入传递给BERT模型
    outputs = model(input_ids, attention_mask=attention_mask)
    
    # 获取模型的输出
    last_hidden_state = outputs.last_hidden_state  # 最后一层的隐藏状态
    pooler_output = outputs.pooler_output  # [CLS]标记的输出
    
    print(last_hidden_state.shape)  # 输出形状:(batch_size, seq_len, hidden_size)
    print(pooler_output.shape)  # 输出形状:(batch_size, hidden_size)

    需复现完整代码

    
    
    from transformers import AutoModel, AutoTokenizer
    from transformers import BertModel, BertTokenizer
    
    from transformers import Bert
    
    
    model_path = "/Users/azen/Desktop/llm/models/bert-base-chinese"
    
    tokenizer = BertTokenizer.from_pretrained(model_path)
    model = BertModel.from_pretrained(model_path)
    
    
    text = "my dog is cute, he likes playing"
    inputs = tokenizer(text)
    
    
    pass


    网站公告

    今日签到

    点亮在社区的每一天
    去签到