谷歌-BERT-“bert-base-chinese ”

1 需求

需求:自动下载模型和分词器

需求:手动导入模型和分词器


需求:pipeline使用预训练模型


需求:训练和评估

需求:测试

关键词:训练数据集、评估数据集、测试数据集


需求:上线


2 接口


3 自动下载模型与分词器

示例一: 

from transformers import BertModel, BertTokenizer# 指定模型和分词器的名称
model_name = 'bert-base-uncased'# 指定下载路径
cache_dir = './my_models'# 下载模型和分词器,并指定下载路径
model = BertModel.from_pretrained(model_name, cache_dir=cache_dir)
tokenizer = BertTokenizer.from_pretrained(model_name, cache_dir=cache_dir)# 现在你可以使用模型和分词器进行推理或其他任务了

import os
os.environ['http_proxy'] = 'http://proxyhk.zte.com.cn'
os.environ['https_proxy'] = 'http://proxyhk.zte.com.cn'import torch
from transformers import BertModel, BertTokenizer# 加载预训练的模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertModel.from_pretrained('bert-base-chinese')# 示例文本
text = "这是一个使用BERT进行中文文本处理的例子。"# 对文本进行分词
inputs = tokenizer(text, return_tensors="pt")  # 返回张量形式的输入# 通过模型获取输出
with torch.no_grad():  # 不计算梯度以节省内存outputs = model(**inputs)# 输出最后一层的隐藏状态
last_hidden_states = outputs.last_hidden_state# 获取文本的第一个标记(通常是[CLS]标记)的向量表示
text_embedding = last_hidden_states[:, 0]print(text_embedding)

3 手动导入模型和分词器

  • 模型权重文件:pytorch_model.bin 或 tf_model.h5
  • 模型配置文件:config.json
  • 分词器的词汇表文件:vocab.txt
  • 分词器配置文件:tokenizer.json、tokenizer_config.json

当手动下载 Hugging Face 模型时,通常需要以下类型的文件:

一、模型权重文件

  1. PyTorch 格式(.bin 或.pt)
    • 如果模型是基于 PyTorch 开发的,其权重文件通常以 .bin 或 .pt 格式存在。这些文件包含了模型的参数,例如神经网络的每层权重、偏置等信息。
    • 例如,对于一个预训练的 BERT 模型(PyTorch 版本),这些权重文件定义了模型如何将输入文本转换为有意义的表示。
  2. TensorFlow 格式(.h5 或.ckpt)
    • 对于基于 TensorFlow 的模型,可能会有 .h5 或者 .ckpt 格式的权重文件。.h5 文件是一种常见的保存 Keras(TensorFlow 后端)模型的格式,它可以包含模型的结构和权重信息。.ckpt 文件则是 TensorFlow 原生的检查点文件,主要用于保存模型在训练过程中的中间状态。

二、模型配置文件

  1. JSON 或 YAML 格式
    • 模型配置文件以 JSON 或 YAML 格式为主。这些文件描述了模型的架构,如模型的层数、每层的神经元数量、激活函数类型、输入输出形状等信息。
    • 以 GPT - 2 模型为例,其配置文件会指定模型是由多少个 Transformer 块组成,每个块中的头数量、隐藏层大小等关键架构参数。

三、分词器(Tokenizer)相关文件

  1. 词汇表文件(.txt 或.pkl 等)
    • 分词器用于将输入文本转换为模型能够处理的标记(tokens)。词汇表文件包含了模型所使用的所有词汇(对于基于单词的分词器)或者子词(对于基于子词的分词器,如 BPE、WordPiece 等)。
    • 例如,对于一个基于 BPE 算法的分词器,词汇表文件定义了模型能够识别的所有子词单元。这个文件可能是一个简单的文本文件(.txt),其中每行包含一个词汇或子词,也可能是经过序列化的 Python 对象(如 .pkl 文件,用于保存 Python 的字典等数据结构)。
  2. 分词器配置文件(JSON 或 YAML 格式)
    • 类似于模型配置文件,分词器配置文件描述了分词器的一些参数,如分词算法(BPE、WordPiece 等)、特殊标记(如开始标记、结束标记、填充标记等)的定义等。

具体需要下载哪些文件取决于模型的类型(如文本生成模型、图像分类模型等)、框架(PyTorch 或 TensorFlow 等)以及模型开发者所采用的存储和组织方式。

第一步

https://huggingface.co/

第二步

https://huggingface.co/models

第三步

https://huggingface.co/google-bert/bert-base-chinese

第四步

https://huggingface.co/google-bert/bert-base-chinese/tree/main

第五步 PyCharm手动添加模型和分词器

示例一:

from transformers import BertModel, BertTokenizer# 指定本地模型文件和分词器文件的路径
model_path = './my_bert_model'# 加载模型和分词器
model = BertModel.from_pretrained(model_path)
tokenizer = BertTokenizer.from_pretrained(model_path)# 使用分词器对文本进行编码
inputs = tokenizer("Hello, world!", return_tensors="pt")# 使用模型进行推理
outputs = model(**inputs)# 输出模型的预测结果(例如,最后一个隐藏层的表示)
print(outputs.last_hidden_state)

示例二:

from huggingface_hub import snapshot_downloadsnapshot_download(repo_id="bert-base-chinese", local_dir="./test2", local_dir_use_symlinks=False)

参考资料:

https://huggingface.co/docs/huggingface_hub/guides/download

huggingface下载模型文件(基础入门版)-CSDN博客


3 pipeline使用预训练模型

示例一:使用在线预训练模型 

from transformers import pipeline# 创建一个pipeline,指定模型名称和任务类型
# 这里以'bert-base-uncased'模型的'fill-mask'任务为例
fill_mask_pipeline = pipeline("fill-mask",model="bert-base-uncased",tokenizer="bert-base-uncased"
)# 使用pipeline进行推理
# 例如,填充句子中的[MASK]标记
result = fill_mask_pipeline("Hello I'm a [MASK] model.")# 打印结果
print(result)

示例二:使用本地已下载的预训练模型

from transformers import pipeline# 设定本地模型文件的存储路径
local_model_path = './my_local_bert_model'# 创建一个pipeline,用于执行特定的任务,例如'fill-mask'
# 在此过程中,我们指定了本地模型的路径
fill_mask_pipeline = pipeline("fill-mask",model=local_model_path,tokenizer=local_model_path  # 假设分词器文件也存放在同一目录下
)# 使用pipeline进行推理
# 例如,填充句子中的[MASK]部分
result = fill_mask_pipeline("Hello, I'm a [MASK] model.")# 输出结果
print(result)

参考资料:

transformers库的使用【一】——pipeline的简单使用_transformer pipeline-CSDN博客

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)-CSDN博客

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)_文本生成数据集-CSDN博客


3 微调和评估

微调步骤:

1. 准备数据集:首先,你需要准备一个与你的任务相关的标注数据集。这个数据集应该包含输入文本以及相应的标签或注释,用于训练和评估模型。

2. 加载预训练模型:使用 Hugging Face 的 Transformers 库加载预训练的 `bert-base-chinese` 模型。你可以选择加载整个模型或只加载其中的一部分,具体取决于你的任务需求。

3. 创建模型架构:根据你的任务需求,创建一个适当的模型架构。这通常包括在 `bert-base-chinese` 模型之上添加一些额外的层,用于适应特定的任务。

4. 数据预处理:将你的数据集转换为适合模型输入的格式。这可能包括将文本转换为输入的编码表示,进行分词、填充和截断等操作。

5. 定义损失函数和优化器:选择适当的损失函数来衡量模型预测与真实标签之间的差异,并选择合适的优化器来更新模型的参数。

6. 微调模型:使用训练集对模型进行训练。在每个训练步骤中,将输入文本提供给模型,计算损失并进行反向传播,然后使用优化器更新模型的参数。

7. 评估模型:使用验证集或测试集评估模型的性能。可以计算准确率、精确率、召回率等指标来评估模型在任务上的表现。

8. 调整和优化:根据评估结果,对模型进行调整和优化。你可以尝试不同的超参数设置、模型架构或训练策略,以获得更好的性能。

9. 推断和应用:在微调完成后,你可以使用微调后的模型进行推断和应用。将新的输入文本提供给模型,获取预测结果,并根据任务需求进行后续处理。

需要注意的是,微调的过程可能需要大量的计算资源和时间,并且需要对模型和数据进行仔细的调整和优化。此外,合适的数据集规模和质量对于获得良好的微调结果也非常重要。


3 测试

……


3 交互式部署

……

参考资料:

交互式AI技术与模型部署:bert-base-chinese模型交互式问答界面设置_bert-base-chinese 问答-CSDN博客


4 参考资料

在Hugging Face上下载并使用Bert-base-Chinese_bert-base-chinese下载-CSDN博客

3 文本分类入门finetune:bert-base-chinese-CSDN博客

4如何对BERT 微调-案例_tokenizer input max length: 1000000000000000019884-CSDN博客

基于Bert-base-chinese训练多分类文本模型(代码详解)_bert做多分类-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[UTCTF2020]sstv

用goldwave和010editor打开均未发现线索, 网上搜索sstv,豆包回答如下: 慢扫描电视(Slow Scan Television,简称 SSTV)是一种通过无线电传输和接收静态图像的技术。 一、工作原理 SSTV 通过将图像逐行扫描并…

鸿蒙OpenHarmony【轻量系统内核通信机制(互斥锁)】子系统开发

互斥锁 基本概念 互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。 任意时刻互斥锁的状态只有两种,开锁或闭锁。当任务持有互斥锁时,该互斥锁处于闭锁状态,这个任务获得该互斥锁…

利用Metasploit进行信息收集与扫描

Metasploit之信息收集和扫描 在本文中,我们将学习以下内容 使用Metasploit被动收集信息 使用Metasploit主动收集信息 使用Nmap进行端口扫描 使用db_nmap方式进行端口扫描 使用ARP进行主机发现 UDP服务探测 SMB扫描和枚举 SSH版本扫描 FTP扫描 SMTP枚举 …

基于python上门维修预约服务数据分析系统

目录 技术栈和环境说明解决的思路具体实现截图python语言框架介绍技术路线性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示操作可行性详细视频演示源码获取 技术栈和环境说明 结合用户的使用需求,本系统采用运用较为广…

Git使用详解:从安装到精通

前言 什么是Git Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。 可以理解: git是一个管理源代码的工具,主要用于企业团队开…

接口自动化框架入门(requests+pytest)

一、接口自动化概述 二、数据库概述 2.1 概念 存储数据的仓库,程序中数据的载体 2.2 分类 关系型数据库:安全 如mysql,oracle,SQLLite database tables 行列 非关系型数据库:高效 如redis,mongoDB 数…

学习大数据DAY59 全量抽取和增量抽取实战

目录 需求流程: 需求分析与规范 作业 作业2 需求流程: 全量抽取 增量抽取 - DataX Kettle Sqoop ... 场景: 业务部门同事或者甲方的工作人员给我们的部门经理和你提出了新的需 求 流程: 联系 > 开会讨论 > 确认需求 > 落地 需求文档( 具体…

4.提升客户服务体验:ChatGPT在客服中的应用(4/10)

本文大纲旨在指导撰写一篇全面探讨ChatGPT如何通过优化客户服务流程、提供实际应用案例和用户反馈,以提升客户服务体验的深入博客文章。 引言 在当今竞争激烈的商业环境中,客户服务已成为企业成功的关键因素。优质的客户服务不仅能够增强客户满意度和忠…

天池Fashion AI 比赛失败经历分享

关联比赛: FashionAI全球挑战赛—服饰关键点定位 昨天是天池Fashion AI初赛Deadline, 成绩出来复赛都没能进,虽然结果很遗憾,但在比赛的过程中也接触到了不少的新东西,希望能在这里把我尝试过的方法都分享出来。作为对自己的总结…

Why Is Prompt Tuning for Vision-Language Models Robust to Noisy Labels?

文章汇总 本文的作者针对了提示学习的结构设计进行了分析,发现了一些规律: 1)固定的类名令牌为模型的优化提供了强正则化,减少了由噪声样本引起的梯度。 2)从多样化和通用的web数据中学习到的强大的预训练图像文本嵌入为图像分类提供了强大…

基于kubernetes-nmstate配置节点网络

kubernetes-nmstate 简介 kubernetes-nmstate 通过 Kubernetes API 驱动的声明式节点网络配置。 随着混合云的出现,节点网络设置变得更加具有挑战性。不同的环境有不同的网络要求。 容器网络接口(CNI)标准实现了不同的解决方案,…

简单多状态dp第二弹 leetcode -删除并获得点数 -粉刷房子

740. 删除并获得点数 删除并获得点数 分析: 使用动态规划解决 这道题依旧是 打家劫舍I 问题的变型。 我们注意到题目描述,选择 x 数字的时候, x - 1 与 x 1 是不能被选择的。像不像 打家劫舍 问题中,选择 i 位置的金额之后,就不…

更高效的搜索工具,国内免费好用的AI智能搜索引擎工具

搜索引擎是我们获取信息的重要渠道,然而由于搜索引擎搜索结果存在较多的广告以及一些无关内容,这使我们的搜索效率变得更低效。小编就和大家分享几款国内免费好用的AI智能搜索工具,提高搜索效率。 1.开搜AI搜索 开搜AI搜索是一款基于深度学…

低版本SqlSugar的where条件中使用可空类型报语法错误

SQLServer数据表中有两列可空列,均为数值类型,同时在数据库中录入测试数据,Age和Height列均部分有值。   使用SqlSugar的DbFirst功能生成数据库表类,其中Age、Height属性均为可空类型。   开始使用的SqlSugar版本较低&…

Zabbix 6.4添加中文语言

/usr/share/zabbix/include/locales .inc .phplocale -agrep “zh_CN" yum install langpacks-zh_CN.noarch y y y

Linux | 探索 Linux 信号机制:信号的产生和自定义捕捉

信号是 Linux 操作系统中非常重要的进程控制机制,用来异步通知进程发生某种事件。理解信号的产生、阻塞、递达、捕捉等概念,可以帮助开发者更好地编写健壮的应用程序,避免由于未处理的信号导致程序异常退出。本文将带你从基础概念开始&#x…

利士策分享,自我和解:通往赚钱与内心富足的和谐之道

利士策分享,自我和解:通往赚钱与内心富足的和谐之道 在这个快节奏、高压力的时代,我们往往在追求物质财富的同时,忽略了内心世界的和谐与平衡。 赚钱,作为现代生活中不可或缺的一部分,它不仅仅是生存的手段…

【Godot4.3】胶囊形的偏移获取法

概述 之前用半圆弧拼接的方式求过胶囊形,在逐渐熟练使用Geometry2D的过程中,发现通过线段求端点是圆角类型的偏移多边形,获得的就是胶囊形。 所以我们有了第二种胶囊形求法。 测试代码 tool extends Node2D## 横向宽度 export var width:…

Java-数据结构-排序-(一) (。・ω・。)

文本目录: ❄️一、排序的概念及引用: ➷ 排序的概念: ➷ 常见的排序算法: ❄️二、插入排序的实现: ➷ 1、直接插入排序: ☞ 直接插入排序的基本思想: ☞ 直接插入排序的实现: ▶…

安全热点问题

安全热点问题 1.DDOS2.补丁管理3.堡垒机管理4.加密机管理 1.DDOS 分布式拒绝服务攻击,是指黑客通过控制由多个肉鸡或服务器组成的僵尸网络,向目标发送大量看似合法的请求,从而占用大量网络资源使网络瘫痪,阻止用户对网络资源的正…