首页 > 其他分享 >huggingface三种添加模型的方法

huggingface三种添加模型的方法

时间:2023-03-06 19:56:51浏览次数:40  
标签:模型 导入 huggingface checkpoint 添加 三种 model config pretrained

首先搞清楚预训练模型一般会有的文件:

  1. vocab.txt
  2. config.json
  3. pytorch_model.bin

这三个分别对应tokenizer,config和model。

添加huggingface hub里面的模型

  1. 只要有模型名就可以导入tokenizer和model
  2. 无需导入config
# 这里导入Huggingface里面有的模型:hfl/chinese-roberta-wwm-ext

# 使用预训练模型的权重,生成分词器
tokenizer = BertTokenizerFast.from_pretrained("hfl/chinese-roberta-wwm-ext") 

# 载入模型
model = BertForSequenceClassification.from_pretrained("hfl/chinese-roberta-wwm-ext")

添加自己通过迁移训练或者增量训练生成的模型

  1. 需要给出本地模型存储地址
  2. 通过模型地址导入tokenizer、config和model
  3. 如果要更新config需要在导入model之前更新
# 本地模型存储的地址
checkpoint = os.path.join(project_path, 'model/checkpoint-1000')

# 使用预训练模型的权重,生成分词器
tokenizer = AutoTokenizer.from_pretrained(checkpoint)  

# 载入模型
config = AutoConfig.from_pretrained(checkpoint)
config.num_labels = len(labels)
config.problem_type = "multi_label_classification"
config.id2label = id2label
config.label2id = label2id
model = AutoModelForSequenceClassification.from_pretrained(checkpoint, config=config)

添加别人的模型

  1. 需要给出本地模型存储的地址
  2. 需要从地址中导入tokenizer、config和model。如果要更新config需要在导入model之前。(和第二种导入的方法一样)
  3. 要注意模型内的文件名是否符合transformers的要求。例如,config.json,vocab.txt不能有其他的名字,否则会导入出错。另外在config.json里面也需要有指出"model_type"。
# 模型存储的地址
checkpoint = os.path.join(project_path, f'FinBERT_L-12_H-768_A-12_pytorch')

# 从模型导入分词器
tokenizer = AutoTokenizer.from_pretrained(checkpoint) 

# 导入config
config = AutoConfig.from_pretrained(checkpoint)
config.num_labels = len(labels)
config.problem_type = "multi_label_classification"
config.id2label = id2label
config.label2id = label2id

#导入模型
model = AutoModelForSequenceClassification.from_pretrained(checkpoint, config=config)

标签:模型,导入,huggingface,checkpoint,添加,三种,model,config,pretrained
From: https://www.cnblogs.com/AudreyXu/p/17185127.html

相关文章

  • 【Android Studio】通过编辑setting.gradle文件,添加阿里仓库
    本人对AndroidStudio的了解非常初级,这篇blog主要是自用备忘性质。因为众所周知的原因,国外仓库访问很不方便,影响项目构建。所以需要添加国内仓库,而阿里云仓库属于比较知名......
  • 获取struts请求参数的三种方式
    一、请求参数直接注入对应Action的属性中要求:(1)Action类必须为要接受参数的成员变量提供setXXX()方法;(2)jsp中表单的name属性须与Action中接受参数的成员变量的setter方法......
  • 首页地图添加热力图
    loadHeatMap(){letthat=this;//创建一个Heatmap图层that.heatMapSource=newol.source.Vector({url:"/static/public/map/heatMapLayer.json",//还可以是k......
  • WebUploader上传文件夹的三种解决方案
    ​ 1、介绍enctypeenctype 属性规定发送到服务器之前应该如何对表单数据进行编码。enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样)1、......
  • B/S上传文件夹的三种解决方案
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1. 通过form表单向后端发送请求    ......
  • CSharp上传文件夹的三种解决方案
    ​ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。ASP.NE......
  • javascript如何将字符串转为数组——三种方法
                参考:https://m.php.cn/article/498168.html......
  • vue中element table 单选,添加单选框
        参考:https://blog.csdn.net/qq_45780380/article/details/126272154......
  • CentOS 升级内核的三种方式(yum/rpm/源码)
    CentOS升级内核的三种方式(yum/rpm/源码)在CentOS使用过程中,难免需要升级内核,但有时候因为源码编译依赖问题,不一定所有程序都支持最新内核版本,所以以下将介绍三种升级内......
  • ASP.NET上传文件夹的三种解决方案
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......