当前位置: 首页 > news >正文

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

本节代码将使用 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

    相关文章:

  • C++动态分配内存知识点!
  • vue2使用ezuikit-js播放萤石视频
  • 手撕红黑树
  • Python Lambda表达式详解
  • Vue 3 响应式更新问题解析
  • chrome extension开发框架WXT之WXT Storage api解析
  • 数列分块入门4
  • 信奥赛之c++课后练习题及解析(关系运算符+选择结构)
  • JAVA中正则表达式的入门与使用
  • Matlab 分数阶PID控制永磁同步电机
  • Codeforces Round 1016 (Div. 3) C ~ G 题解
  • Golang|协程
  • python-1. 找单独的数
  • 关于nacos注册的服务的ip异常导致网关路由失败的问题
  • 科技项目验收测试怎么做?验收测试报告如何获取?
  • 网安小白筑基篇六:数据库(增删改语法、表约束、查询语句、多表查询、附phppython小练习)
  • Kubernetes集群环境搭建与初始化
  • 【实战手册】8000w数据迁移实践:MySQL到MongoDB的完整解决方案
  • 蓝桥杯备赛知识点总结
  • 小白学习java第12天(下):IO流之字符输入输出
  • 做qq图片的网站吗/长沙seo招聘
  • 网站关键词优化方案/药品网络营销公司
  • 邯郸市人力资源和社会保障局/宁波seo推广优化公司
  • 辽宁省营商建设监督局网站/长沙网站定制公司
  • 建设网站建设多少钱/福州网站seo优化公司
  • 城建培训中心官网/长沙关键词优化新报价