huggingface 中模型如何查找和使用?

在 Models - Hugging Face模型中找使用方法
https://hf-mirror.com/

一:如何找到统一使用方法

对于文字处理AutoTokenizer是一样的,模型名可能不一样。具体操作如下:

1. 先在模型下面找到你需要的模型点开

在这里插入图片描述

2. 点开最右边的Use in Transformers

在这里插入图片描述

二:如何找到本模型使用方法

滑到底端的如何使用,此为pytorch的使用方法,也有其他的说明。
在这里插入图片描述
其中字符串名字可以为路径。

同理,文本操作如下:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

专属命名的方法一般是:

分词器命名:“模型名+Tokenizer”

图片处理命名:模型名+ImageProcessor

模型名命名:“ 模型名+Modal”

这个命名和公司有关,还是直接选择自己需要的模型在官网查询使用最好。

三:两种使用方法结果一样

# -------------------- 使用 RobertaTokenizer ---------------
tokenizer = RobertaTokenizer.from_pretrained(pretrained_model_path)
inputs = tokenizer("对比原始的分词和最新的分词器", return_tensors="pt")
print(inputs['input_ids'])# -------------------- 使用 AutoTokenizer ---------------
auto_tokenizer = AutoTokenizer.from_pretrained(pretrained_model_path) # 使用一样的
auto_inputs = auto_tokenizer('对比原始的分词和最新的分词器', return_tensors='pt')
print(auto_inputs['input_ids'])

输出的结果一样。

参考:https://blog.csdn.net/qq_41458274/article/details/131175991

四:模型详解

在这里插入图片描述
以ner模型为例

# Load model directly
from transformers import AutoTokenizer, AutoModelForTokenClassification, pipelinetokenizer = AutoTokenizer.from_pretrained("uer/roberta-base-finetuned-cluener2020-chinese")
model = AutoModelForTokenClassification.from_pretrained("uer/roberta-base-finetuned-cluener2020-chinese")ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer)
ner_pipeline("马云是阿里巴巴的创始人,他住在中国杭州。")

tokenizer = AutoTokenizer.from_pretrained(“uer/roberta-base-finetuned-cluener2020-chinese”)
model = AutoModelForTokenClassification.from_pretrained(“uer/roberta-base-finetuned-cluener2020-chinese”)
这两行代码是用于加载一个预训练的模型和对应的分词器,它们属于 Hugging Face 的 transformers 库。这些代码的作用是:

1. tokenizer = AutoTokenizer.from_pretrained(“uer/roberta-base-finetuned-cluener2020-chinese”)

这行代码用于加载与模型匹配的分词器(tokenizer)。具体来说,它加载的是一个中文的 RoBERTa 模型,经过微调(fine-tuning)后用于 CLUENER 2020 数据集的命名实体识别任务。

  • AutoTokenizer: 这是 Hugging Face 提供的一个自动化类,它会根据指定的模型名称自动选择合适的分词器。AutoTokenizer 可以根据模型的不同类型(如 BERT、RoBERTa、GPT 等)自动加载相应的分词器。
  • from_pretrained(): 这个方法从 Hugging Face 的模型库中加载一个预训练的分词器(或者可以加载本地文件)。“uer/roberta-base-finetuned-cluener2020-chinese” 是模型的名称,它代表了一个已经微调过的 RoBERTa 模型,专门用于中文命名实体识别(NER)。

这个分词器会负责:

  • 将文本转换为模型输入:它将输入的中文文本拆分为子词(tokens),并将其转换为模型可以理解的张量形式(如 input_ids 和 attention_mask)。
  • 处理与模型相关的词汇表:例如,处理模型专用的 [CLS]、[SEP] 等特殊符号。

具体的文件来源:
AutoTokenizer 加载的是与模型匹配的分词器配置文件和词汇表文件。这些文件定义了如何将文本转换为模型所需的 token(子词单元)及其 ID,以及如何将 ID 转回为原始文本。对于该模型,它可能会加载类似于以下的文件:

  • vocab.json(包含词汇表)
  • tokenizer_config.json(分词器配置)
  • special_tokens_map.json(特殊标记,如 [CLS], [SEP] 等)
  • config.json

2. model = AutoModelForTokenClassification.from_pretrained(“uer/roberta-base-finetuned-cluener2020-chinese”)

这行代码用于加载一个预训练的模型,具体来说是一个基于 RoBERTa 的 Token Classification 模型,经过微调用于 命名实体识别(NER)。

  • AutoModelForTokenClassification: 这个类用于加载预训练的、可以用于标记分类(Token Classification)任务的模型。例如,命名实体识别就是一个典型的 token classification 任务,每个 token 会被分配一个标签,如人名、地名、组织名等。
  • from_pretrained(): 这个方法从 Hugging Face 的模型库中加载一个预训练的模型(同样也可以加载本地文件)。 “uer/roberta-base-finetuned-cluener2020-chinese” 是模型名称,它代表了一个经过微调的中文 RoBERTa 模型,专门用于 CLUENER 2020 数据集中的 NER 任务。

这个模型会负责:

  • 对文本中的每个 token 进行分类:对于每个输入的 token,模型会预测它的标签。例如,模型可能会预测 “北京” 这个 token 的标签为 B-LOC(Location的开始)。
  • 使用微调后的权重进行推理:这个模型已经在特定的中文命名实体识别任务上进行了微调,因此它能够识别中文文本中的不同命名实体,如人名、地名、组织名等。

具体的文件来源:
AutoModelForTokenClassification 加载的是模型本身,包括模型架构以及已微调的权重。这些文件包含了模型的所有参数(如 RoBERTa 网络的层、注意力头等),并且是针对特定任务(例如命名实体识别)进行了微调。对于该模型,它可能会加载类似以下的文件:

  • pytorch_model.bin(包含模型的权重)
  • config.json(包含模型配置,如网络结构)

3. 总结:

  • AutoTokenizer 和 AutoModelForTokenClassification 都加载的是同一个模型资源,即 uer/roberta-base-finetuned-cluener2020-chinese。
  • AutoTokenizer 加载的是分词器相关的文件(如词汇表、分词器配置等)。
  • AutoModelForTokenClassification 加载的是微调后的模型文件(包含模型架构和权重)。

4. tf_model.h5 和 flax_model.msgpack

tf_model.h5 和 flax_model.msgpack 是两种不同框架和格式下的模型文件,它们分别与 TensorFlow 和 Flax 框架相关。每个文件类型用于不同的深度学习框架,并包含不同的内容。下面分别解释这两个文件的作用:

tf_model.h5
  • 框架:TensorFlow
  • 文件类型:HDF5 格式(即 .h5 文件)
  • 用途:tf_model.h5 是 TensorFlow 训练后的模型文件,通常保存了整个模型的结构和训练得到的权重。它是 TensorFlow 中最常用的模型保存格式之一。

内容:

  • 模型结构(Architecture):包括模型的层(Layer)和它们的连接方式,定义了神经网络的结构 (例如卷积层、全连接层、LSTM 等)。
  • 模型权重(Weights):包括训练过程中学到的参数(权重和偏置),这些参数是模型根据数据学习得到的。
  • 优化器状态(Optimizer state):包括优化器的状态(例如 Adam 优化器的动量信息),用于恢复模型训练的状态。

用途:

  • 保存模型:在训练完成后,将模型保存为 tf_model.h5 格式,方便以后加载并进行预测或继续训练。
  • 迁移学习:可以将 .h5 格式的模型加载到另一个环境中,进行微调(fine-tuning)或做迁移学习。
from tensorflow.keras.models import load_model# 加载保存的模型
model = load_model('tf_model.h5')# 进行推理或进一步训练
predictions = model.predict(input_data)
flax_model.msgpack
  • 框架:Flax(基于 JAX)
  • 文件类型:MessagePack 格式(即 .msgpack 文件)
  • 用途:flax_model.msgpack 是使用 Flax 框架训练的模型文件。Flax 是一个基于 JAX 的深度学习库,JAX 提供了高效的数值计算支持,而 Flax 主要用于构建神经网络模型。msgpack 是一种高效的二进制序列化格式,Flax 用它来保存模型的参数。

内容:

  • 模型参数(Model parameters):包括神经网络中的权重、偏置等参数,这些是模型在训练时学习得到的。
  • 模型配置(Model configuration):Flax 的模型通常由不同的模块和层组合而成,.msgpack 文件保存了模型的具体参数和配置。

用途:

  • 保存和加载 Flax 模型:.msgpack 文件用于保存 Flax 模型的参数。它是一个平台和框架无关的二进制文件,可以高效地存储和加载模型。
  • 高效存储和传输:MessagePack 格式比 JSON 更小,因此它在存储和网络传输时会更加高效,适用于大规模的深度学习模型。
import flax
from flax.training import checkpoints# 加载模型
checkpoint = checkpoints.restore_checkpoint(ckpt_dir='.', target=None)# 使用加载的模型进行推理
params = checkpoint['model']  # 获取模型参数

五:将模型保存为 .pt 格式

他本来就是pt

加载模型

from transformers import AutoTokenizer, AutoModelForTokenClassification, pipelinetokenizer = AutoTokenizer.from_pretrained("uer/roberta-base-finetuned-cluener2020-chinese")
model = AutoModelForTokenClassification.from_pretrained("uer/roberta-base-finetuned-cluener2020-chinese")
# 查看模型结构
model 

保存为pt

import torch
torch.save(model, "./model.pt")

(1) torch.save(model.state_dict(), “model.pt”)
保存模型为 .pt 文件(保存的是模型的权重数据字典。state_dict 只包含模型的参数,不包括模型的结构定义。加载时你需要确保模型架构和参数相匹配。)
(2) torch.save(model, “model.pt”)
或者直接保存整个模型(保存整个模型,包括结构和权重。这种方式较为方便,因为加载时不需要重新定义模型结构。)

使用pt模型预测

import torch
from transformers import AutoTokenizer, pipelinemodel = torch.load("./model.pt")
tokenizer = AutoTokenizer.from_pretrained("uer/roberta-base-finetuned-cluener2020-chinese")
# 确保模型在评估模式
model.eval()
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer)
ner_pipeline("马云是阿里巴巴的创始人,他住在中国杭州。")

六、模型结构

print(model)
RobertaForTokenClassification((roberta): RobertaModel((embeddings): RobertaEmbeddings((word_embeddings): Embedding(21128, 768)(position_embeddings): Embedding(512, 768)(token_type_embeddings): Embedding(2, 768)(LayerNorm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)(dropout): Dropout(p=0.1, inplace=False))(encoder): RobertaEncoder((layer): ModuleList((0): RobertaLayer((attention): RobertaAttention((self): RobertaSelfAttention((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): RobertaAttentionOutput((dense): Linear(in_features=768, out_features=768, bias=True)(layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)(dropout): Dropout(p=0.1, inplace=False)))(intermediate): RobertaIntermediate((dense): Linear(in_features=768, out_features=3072, bias=True)(activation): GELUActivation())(output): RobertaOutput((dense): Linear(in_features=3072, out_features=768, bias=True)(layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)(dropout): Dropout(p=0.1, inplace=False)))...))(pooler): RobertaPooler((dense): Linear(in_features=768, out_features=768, bias=True)(activation): Tanh()))(classifier): Linear(in_features=768, out_features=11, bias=True)  # NER分类头
)
  1. RobertaForTokenClassification: 这是一个用于标注任务(例如命名实体识别,NER)的模型,继承自RobertaModel,同时增加了用于分类的 classifier 层。
  2. roberta: 这是底层的 RoBERTa 模型,它包括:
    (1) embeddings: 词嵌入层(word embeddings),包括词嵌入、位置嵌入和token类型嵌入。
    (2) encoder: 由多个 RobertaLayer 组成的编码器,它包含了自注意力层(self-attention)和前馈神经网络层(feed-forward)
  3. classifier: 这是一个线性分类头(Linear),用于对每个token进行分类,输出层的维度是 11,即针对NER任务的实体类别数量(具体类别数量取决于任务)。

如果你想查看模型的更多详细层次结构,或检查特定层的参数,可以使用如下方式:

# 查看模型的所有层
for name, module in model.named_modules():print(name, ":", module)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34136.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AgentLego:组装大模型智能体“乐高”

1 AgentLego 1.1 AgentLego 是什么 AgentLego 是一个提供了多种开源工具 API 的多模态工具包,旨在像是乐高积木一样,让用户可以快速简便地拓展自定义工具,从而组装出自己的智能体。通过 AgentLego 算法库,不仅可以直接使用多种工…

w071基于springboot的图书进销存管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

手撕单例的 5 种写法!

单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。当然,它也是面试中的常客,尤其是某手面试中经常要求应聘者手撕,所以今天咱们就来盘盘它。 单例模式的实现方式有很多&…

制作Windows11个人iso镜像的方法

一、前期准备 1.光盘刻录软件AnyBurn 2.对应Windows11版本的iso基础镜像(一定要对应,不然封装的iso镜像无法使用) Windows11最新版本24H2的iso镜像下载地址下载 Windows 11 此前版本下载地址官方网站不再提供,需要自行搜索下载 笔…

timesnet+timemixer时间序列预测模型

1.timesnet 原论文源码:https://github.com/thuml/Time-Series-Library?tabreadme-ov-file 时间序列分析被广泛应用于众多领域中,如天气预报中预测气象要素的未来变化、数据质控时填补缺失值、工业生产中监控设备状态、医疗诊断时分析心跳曲线等。 不…

Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架

Linux 35.6 JetPack v5.1.4之RTP实时视频Python框架 1. 源由2. 思路3. 方法论3.1 扩展思考 - 慎谋而后定3.2 扩展思考 - 拒绝拖延或犹豫3.3 扩展思考 - 哲学思考3.4 逻辑实操 - 方法论 4 准备5. 分析5.1 gst-launch-1.05.1.1 xvimagesink5.1.2 nv3dsink5.1.3 nv3dsink sync05…

异或和公式

前缀异或和公式 前缀异或和的概念与前缀和类似,但它使用的是异或(XOR)操作而不是加法。异或操作有一些独特的性质,使得前缀异或和在处理某些问题时非常有用。下面是前缀异或和的推导原理: • 异或操作的性质&#xf…

【Unity】 HTFramework框架(五十三)使用 Addressables 可寻址系统

更新日期:2024年7月25日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 Addressables 可寻址系统使用 Addressables 可寻址系统一、导入 Addressables二、切换到 Addressables 加载模式三、切换资源加载助手四、加载资源五、注…

Spring Cache简单使用

Spring Cache是一个框架,实现了基于注解的缓存功能。只需要简单地加一个注解,就能实现缓存功能 Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如: 1.EHCahce 2.Chffeine 3.Redis 需要导入的maven坐标 …

Delphi Web前端开发教程(9):基于TMS WEB Core框架

3、REST Servers服务端(后端)框架 REST服务端特点: – 为远程资源提供一个REST API接口。也可以为其他网络内容提供服务; – 包括在Delphi Enterprise & Architect企业版和架构师版中的RAD服务器、DataSnap、WebBroker; – 开源框架&a…

vue+mars3d点击图层展示炫酷的popup弹窗

展示效果 目录 一:叠加数据图层到地图上,此时需要使用bindPopup绑定popup 二、封装自定义的popup,样式可以自行调整 一:叠加数据图层到地图上,此时需要使用bindPopup绑定popup 这里我根据数据不同,展示的…

【机器人学】3-1.六自由度机器人速度域-雅克比矩阵【附MATLAB代码】

MATLAB仿真验证 已知六轴机器人的D-H参数如下所示: 关节1关节2关节3关节4关节5关节609000-9090a0042539300d160.700113.39993.60900-9000000000 通过D-H参数,选用改进型的D-H参数,可以得到各个关节间的旋转矩阵。详细请看我的第一篇博客六自…

基于SSM的网上拍卖系统+LW示例参考

1.项目介绍 系统角色:管理员、卖家、买家功能模块:用户管理、卖家管理、公告管理、竞拍物品管理、预约竞拍管理、竞拍管理等技术选型:SSM,jsp等测试环境:idea2024,jdk1.8,tomcat8,n…

Vue3安装 运行教程

本文是综合了所有vue安装教程而成 更细化 更简略 希望对各位读者有所帮助! Vue安装 1. Vue-cli脚手架安装 安装vue的方式有很多 我们这里选择npm方式安装vue npm方式 npm方式安装vue,详细介绍见下文。 1.node.js安装和配置 安装npm 需要安装note.js&…

帝可得-设备管理

设备管理 需求说明 点位管理主要涉及到三个功能模块,业务流程如下: 新增设备类型: 允许管理员定义新的售货机型号,包括其规格和容量。新增设备: 在新的设备类型定义后,系统应允许添加新的售货机实例,并将它们分配到特…

w070基于springboot的大创管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

FlyHttp 的最佳实践:加速项目级 API 请求构建

FlyHttp的相关文章: FlyHttp 的诞生:从认识各种网络请求开始 FlyHttp 的设计思想:前端 API 自动化构建工具 FlyHttp 的使用:如何高效使用 FlyHttp,支持 JS、TS 项目 一. FlyHttp 是什么? 这是一个自动…

七次课掌握 Photoshop:样式与滤镜

Photoshop 中的图层样式和滤镜功能,能够为图像添加丰富的效果和质感,使图像更加生动和富有创意。熟练掌握这些工具和方法,可以大大提升作品的视觉表现力。 一、图层样式 图层样式 Layer Styles是应用于图层或图层组的特效,如投影、…

ML23_变分推理Variational inference

可以先看第一期https://blog.csdn.net/qq_51605551/article/details/141901941 变分推理(Variational Inference, VI)是一种用于近似贝叶斯推断的方法,它在处理复杂的概率模型时特别有用。贝叶斯推断的核心是计算后验分布,即在给…

Map和Set(下)

我们先对上一小节部分进行一些复习和补充 1. 补充和强调 补充 1. HashMap 和 HashSet 即 java 中利用哈希表实现的 Map 和 Set 2. java 中使用的是哈希桶方式解决冲突的 3. java 会在冲突链表长度大于一定阈值后,将链表转变为搜索树(红黑树)条…