news 2026/7/13 23:13:36

【专辑】AI大模型应用开发入门-拥抱Hugging Face与Transformers生态 - 使用Transformers加载预训练模型 - 使用AutoModel自动模型方式调用Bert预训练模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【专辑】AI大模型应用开发入门-拥抱Hugging Face与Transformers生态 - 使用Transformers加载预训练模型 - 使用AutoModel自动模型方式调用Bert预训练模型

大家好,我是java1234_小锋老师,最近更新《AI大模型应用开发入门-拥抱Hugging Face与Transformers生态》专辑,感谢大家支持。

本课程主要介绍和讲解Hugging Face和Transformers,包括加载预训练模型,自定义数据集,模型推理,模型微调,模型性能评估等。是AI大模型应用开发的入门必备知识。

使用AutoModel自动模型方式调用Bert预训练模

AutoModel是一个用来自动加载各种预训练 Transformer 模型的类。你可以使用它直接从 Hugging Face 模型库中加载模型,而无须关心具体的模型实现。主要用于构建和微调模型,以便在特定的任务上进行更深入的开发。使用 AutoModel 通常需要更细粒度的操作,比如输入数据的处理、模型的前向传播、输出的处理等。更适合需要模型架构和输入输出控制的用户,如研究人员或需要定制模型的开发者。

AutoModel还是pipeline对比

特性AutoModelpipeline
使用复杂性较复杂,需要手动处理各个步骤简单,自动处理所有步骤
适用场景适合需要灵活性和微调能力的开发适合快速应用于特定任务
示例代码model = AutoModel.from_pretrained("xxx")classifier = pipeline("task")
输出处理需要手动处理模型输出自动处理输出
适用人群研究人员、开发者等快速原型或希望简化流程的用户

具体示例:

import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification def test_classfication(): # 加载分词器 tokenizer = AutoTokenizer.from_pretrained('./Bert-base-chinese') # 加载模型 model = AutoModelForSequenceClassification.from_pretrained('./Bert-base-chinese') print(model) # 准备输入数据 input_ids = tokenizer.encode( text='今天天气不错', # 输入文本 return_tensors='pt', # 返回PyTorch张量 padding="max_length", # 填充到最大长度 truncation=True, # 截断超出长度的输入 max_length=10 # 输入最大长度 ) print(input_ids, input_ids.shape) # 评估模式 model.eval() # 模型预测 output = model(input_ids) # 5. 获取预测结果 logits = output.logits prediction = torch.argmax(logits, dim=-1) print(logits, prediction) sentiment = prediction.item() # 转换为 Python 整数 sentiment_label = "积极" if sentiment == 1 else "消极" if sentiment == 0 else "中性" print(sentiment_label) if __name__ == '__main__': test_classfication()

运行结果:

BertForSequenceClassification( (bert): BertModel( (embeddings): BertEmbeddings( (word_embeddings): Embedding(21128, 768, padding_idx=0) (position_embeddings): Embedding(512, 768) (token_type_embeddings): Embedding(2, 768) (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True) (dropout): Dropout(p=0.1, inplace=False) ) (encoder): BertEncoder( (layer): ModuleList( (0-11): 12 x BertLayer( (attention): BertAttention( (self): BertSdpaSelfAttention( (query): Linear(in_features=768, out_features=768, bias=True) (key): Linear(in_features=768, out_features=768, bias=True) (value): Linear(in_features=768, out_features=768, bias=True) (dropout): Dropout(p=0.1, inplace=False) ) (output): BertSelfOutput( (dense): Linear(in_features=768, out_features=768, bias=True) (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True) (dropout): Dropout(p=0.1, inplace=False) ) ) (intermediate): BertIntermediate( (dense): Linear(in_features=768, out_features=3072, bias=True) (intermediate_act_fn): GELUActivation() ) (output): BertOutput( (dense): Linear(in_features=3072, out_features=768, bias=True) (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True) (dropout): Dropout(p=0.1, inplace=False) ) ) ) ) (pooler): BertPooler( (dense): Linear(in_features=768, out_features=768, bias=True) (activation): Tanh() ) ) (dropout): Dropout(p=0.1, inplace=False) (classifier): Linear(in_features=768, out_features=2, bias=True) ) tensor([[ 101, 791, 1921, 1921, 3698, 679, 7231, 102, 0, 0]]) torch.Size([1, 10]) tensor([[-0.2556, 0.3660]], grad_fn=<AddmmBackward0>) tensor([1]) 积极

AutoTokenizer负责将生文本转换为模型可以理解的输入格式。这一过程通常涉及分词、编码等步骤。

以下介绍AutoTokenizer.encode方法的重要参数:

AutoTokenizer.encode 方法参数

  1. text(strorList[str])

    • 要编码的输入文本,可以是单个字符串或字符串列表。如果是列表,AutoTokenizer将对每个字符串进行编码。

  2. text_pair(strorList[str], optional)

    • 如果您想要处理文本对(例如,问答任务),可以使用此参数。它的值也可以是单个字符串或字符串列表,表示要与text一同编码的第二个文本。

  3. max_length(int, optional)

    • 限制返回的序列最大长度。如果输入文本的编码长度超过此参数,将会被截断。如果没有设置,默认长度由模型的最大输入长度决定。

  4. padding(boolorstr, optional)

    • 控制返回的序列是否进行填充。可以设置为True,让所有返回的序列填充到同一最大长度,或者为'max_length',使所有序列填充到max_length指定的长度。默认值通常是False

  5. truncation(boolorstr, optional)

    • 控制是否截断输入序列。通常可以设置为True,以截断到最大长度,也可以设置为'longest_first''do_not_truncate'等选项。默认值通常是False

  6. return_tensors(str, optional)

    • 如果设置,返回的张量将被转换为指定框架的张量格式,例如'pt'(PyTorch)或者'tf'(TensorFlow)。如果不设置,返回的是普通的 Python 列表。

  7. return_attention_mask(bool, optional)

    • 是否返回注意力掩码。注意力掩码通常用于指示模型在处理输入序列时,应该关注哪些位置。

  8. return_token_type_ids(bool, optional)

    • 是否返回 token 类型 ID 值,在一些任务(如问答)中可能会用到,它帮助模型区分不同的文本对。

  9. add_special_tokens(bool, optional)

    • 控制是否在输入文本前后添加特殊的标记(如[CLS][SEP]),这些标记在 BERT 和其他一些模型中是必需的,帮助模型理解输入的结构。

  10. encoding(str, optional)

    • 指定字符编码类型,例如 "utf-8"。这通常在处理文本输入时很有用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 10:15:11

跨境 / 爬虫必备:高性价比动态代理 IP 实测分享

做跨境电商、海外社媒运营或者数据爬虫的朋友&#xff0c;应该都懂一个干净、稳定的动态代理 IP 有多重要 ——IP 不稳易被风控&#xff0c;纯净度不够易关联&#xff0c;性价比低又会拉高运营成本。最近实测了一款 kookeey 动态代理 IP&#xff0c;体验还不错&#xff0c;分享…

作者头像 李华
网站建设 2026/7/2 12:08:44

基于串行并行ADMM算法的主从配电网分布式优化控制研究Matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知。&#x1f525; 内容介绍在综合能源网框架下电力系统与天然气…

作者头像 李华
网站建设 2026/7/4 22:39:43

Hi5001H/Hi5001Q宽压多拓扑LED恒流驱动器重塑高精度调光新标杆智芯一级代理聚能芯半导体原厂技术支持

在LED照明系统设计中&#xff0c;宽电压适配、高精度恒流与深调光比往往难以兼顾&#xff0c;给工程师带来诸多研发痛点。Hi5001作为一款集成度极高的LED恒流驱动器&#xff0c;凭借多拓扑兼容、精准控流及极简外围设计&#xff0c;为6.5-75V输入电压范围的照明方案提供最优解&…

作者头像 李华
网站建设 2026/7/4 4:35:24

从功能测试进阶自动化测试,“我“需要怎么做?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 为什么要学习自动…

作者头像 李华
网站建设 2026/7/1 10:15:12

写论文软件哪个好?实测破局!宏智树 AI 成学术写作效率天花板

毕业季的论文战场上&#xff0c;“写论文软件哪个好” 的灵魂拷问&#xff0c;成了无数学子的热议焦点。市面上的论文工具五花八门&#xff0c;却大多难逃 “文献造假”“数据空洞”“逻辑断层” 的三大魔咒。作为深耕论文写作科普的教育测评博主&#xff0c;我以计算机、汉语言…

作者头像 李华
网站建设 2026/6/26 17:16:36

提示工程架构师总结:优化提示生成算法的7个底层逻辑

提示工程架构师总结&#xff1a;优化提示生成算法的7个底层逻辑 一、引言&#xff1a;为什么你的提示总“差一口气”&#xff1f; 你有没有过这样的经历&#xff1f; 用GPT-4写营销文案&#xff0c;别人的输出是“让用户看完就想下单”的共情力文本&#xff0c;而你的结果却像“…

作者头像 李华