huggingface实战bert-base-chinese模型(训练+预测)
文章目录
- 前言
- 一、bert模型词汇映射说明
- 二、bert模型输入解读
- 1、input_ids说明
- 2、attention_mask说明
- 3、token_type_ids说明
- 4、模型输入与vocab映射内容
- 二、huggingface模型数据加载
- 1、数据格式查看
- 2、数据dataset处理
- 3、tokenizer处理dataset数据
- 三、huggingface训练bert分类模型
- 1、huggingface训练bert分类模型主函数解读
- 2、huggingface的bert分类模型加载构建
- 四、huggingface推理bert分类模型
- 五、填空bert模型构建
- 1、数据构建
- 2、模型构建
- 3、loss计算
- 4、模型预测
- 六、完整代码链接
- 总结
前言
Hugging Face是一家人工智能公司,致力于提供自然语言处理(NLP)模型和工具的开源库。他们的开源库包括了BERT等各种预训练模型的实现,以及用于训练、微调和部署这些模型的工具。在本文中,我们将探讨如何使用Hugging Face的库来构建一个BERT分类模型,该模型能够对文本进行分类,例如情感分析、文本分类等任务。我们将介绍如何使用Hugging Face提供的transformers库来构建、训练和评估BERT分类模型。通过本文的学习,您将能够掌握使用Hugging Face构建BERT分类模型的关键步骤和技巧,为NLP任务提供强大的解决方案。同时,我也将介绍掩码mask预测模型方法。最终,我也将数据、模型文件、代码等内容公开。
一、bert模型词汇映射说明
在BERT中,和是特殊的词元(token),用于在输入序列中标记特定的位置和边界。
:它是表示序列开头的特殊词元,全称为"classification"。在BERT中,输入序列的第一个位置被标记为,用于表示整个序列的概括信息。在训练过程中,BERT模型学习使用位置的表示来进行各种分类任务,例如文本分类、情感分析等。在编码后的表示中,位置的向量通常用作整个序列的汇总表示。
:它是表示序列分割的特殊词元,全称为"separator"。在BERT中,输入的文本序列可以由多个片段(segments)组成,例如两个句子或一个问题和一个回答。为了将这些片段分隔开,词元用于标记不同片段的边界。它出现在片段之间和序列的末尾,用于告知BERT模型输入序列的结构。
:它表示填充(padding)的词元,在输入序列中用于填充长度不足的片段或序列。填充是为了使所有输入序列具有相同的长度,以便进行批量处理。
:它表示掩蔽(mask)的词元,在预训练阶段用于生成掩蔽语言模型(Masked Language Model,MLM)任务。在训练过程中,输入序列中的一部分词元会被随机选择并替换为词元,模型需要预测被掩蔽的词元。
5 :它表示未知(unknown)的词元,用于表示在预训练期间未见过的词汇。当输入序列中出现未登录词(out-of-vocabulary)时,这些词元将被替换为词元。
博客链接:这里
二、bert模型输入解读
在这里,我们假设有个句子“这位姐姐对这本书几近痴迷。我不好这一口,没有耐心看它。纯粹表扬一下这次送书的效率和质量。起码书的品相不错,好过我前两次购书。希望以后能保持。”,包含标点符号。我们探讨该句子在模型中的输入或映射ids与vocab.txt对应关系。同时,也再次说明input_ids与attention_mask的含义。
1、input_ids说明
这里可以从input_ids看到tokenizer的输出是将你的文本根据模型的词汇表转化为对应的id。同时观察到所有句子都以101开头,102结尾,这两个id分别对应 [CLS], [SEP] token。
2、attention_mask说明
attention_mask有id的地方取值为1,没有id地方取值为0,表示模型需要处理token,在有掩码训练可根据这个决定哪些token不训练,如训练过程中的掩码率是15%。
3、token_type_ids说明
token_type_ids这里主要表示是否是两个句子拼接在一起,如果不是拼接的句子,那么这个值则全为0,若2个句子需要拼接,第二个句子为的token_type_ids为全1 ,如[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]],0是第一个句子位置,1是第二个句子位置。
4、模型输入与vocab映射内容
该模型是个文本分类模型,标签只有2个类0或1,模型输入input_ids、attention_mask、token_type_ids、token_type_ids,我已在上面做了解释。这几个变量都为[batch,max_length],表示batch与文本长度,不足需pad填充,一般为0,其具体结果如下:
sents[0]= 这位姐姐对这本书几近痴迷。我不好这一口,没有耐心看它。纯粹表扬一下这次送书的效率和质量。起码书的品相不错,好过我前两次购书。希望以后能保持。
input_ids[0]= [ 101 6821 855 1995 1995 2190 6821 3315 741 1126 6818 4590 6837 5112769 679 1962 6821 671 1366 8024 3766 3300 5447 2552 4692 2124 5115283 5122 6134 2813 671 678 6821 3613 6843 741 4638 3126 4372 14696574 7030 511 6629 4772 741 4638 1501 4685 679 7231 8024 1962 68142769 1184 697 3613 6579 741 511 2361 3307 809 1400 5543 924 2898511 102 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0]
attention_mask[0]= [1 1 1 1 1 1 1 1 1 相关文章:
huggingface实战bert-base-chinese模型(训练+预测)
文章目录 前言一、bert模型词汇映射说明二、bert模型输入解读1、input_ids说明2、attention_mask说明3、token_type_ids说明4、模型输入与vocab映射内容二、huggingface模型数据加载1、数据格式查看2、数据dataset处理3、tokenizer处理dataset数据三、huggingface训练bert分类模…...
CCS安装和导入项目及编译教程
1. CCS安装# 在 TI官网 下载离线版(offline)。 Code Composer Studio Downloads 页面上有license 信息:这么看来是免费的,爱了爱了 Licensing: CCSv7 and later are Technology Software Publicly Available (TSPA) compliant.…...
在React里面使用mobx状态管理详细步骤
1、安装MobX和MobX React: 在你的项目目录下运行以下命令安装MobX和MobX React: npm install mobx mobx-react2、创建MobX Store: 创建一个用于管理状态的MobX Store。这个Store应该包含你希望全局管理的状态和相关的操作。以下是一个简单…...
1.6PTA集练7-5~7-24、7-1、7-2,堆的操作,部落冲突(二分查找)
7-5 大師と仙人との奇遇 分数 20 #include<iostream> #include<queue> using namespace std; int n; long long ans0,num; priority_queue<long long,vector<long long>,greater<long long>>q;//记录之前买的,用小顶堆,最上面就是最…...
uniapp向上拉加载,下拉刷新
目录 大佬1大佬2 大佬1 大佬地址:https://blog.csdn.net/wendy_qx/article/details/135077822 大佬2 大佬2:https://blog.csdn.net/chen__hui/article/details/122497140...
目标检测脚本之mmpose json转yolo txt格式
目标检测脚本之mmpose json转yolo txt格式 一、需求分析 在使用yolopose及yolov8-pose 网络进行人体姿态检测任务时,有时需要标注一些特定场景的中的人型目标数据,用来扩充训练集,提升自己训练模型的效果。因为单纯的人工标注耗时费力&…...
大数据技术在民生资金专项审计中的应用
一、应用背景 目前,针对审计行业,关于大数据技术的相关研究与应用一般包括大数据智能采集数据技术、大数据智能分析技术、大数据可视化分析技术以及大数据多数据源综合分析技术。其中,大数据智能采集数据技术是通过网络爬虫或者WebService接口实现跨部门在线数据交互;大数…...
视觉SLAM十四讲|【四】误差Jacobian推导
视觉SLAM十四讲|【四】误差Jacobian推导 预积分误差递推公式 ω 1 2 ( ( ω b k n k g − b k g ) ( w b k 1 n k 1 g − b k 1 g ) ) \omega \frac{1}{2}((\omega_b^kn_k^g-b_k^g)(w_b^{k1}n_{k1}^g-b_{k1}^g)) ω21((ωbknkg−bkg)(wbk1nk1g−bk1g)) …...
「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(一)
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 在web项目中使用DHTMLX Gantt时,开发人员经常需要满足与UI外观相关的各种需求。因此他们必须确定JavaScript甘特图库的…...
【习题】应用程序框架
判断题 1. 一个应用只能有一个UIAbility。错误(False) 正确(True)错误(False) 2. 创建的Empty Ability模板工程,初始会生成一个UIAbility文件。正确(True) 正确(True)错误(False) 3. 每调用一次router.pushUrl()方法,页面路由栈数量均会加1。错误(Fal…...
java基于ssm的线上选课系统的设计与实现论文
摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生选课信息管理的提升&#x…...
汽车雷达:实时SAR成像的实现
摘要: 众所周知,点云成像是目前实现汽车雷达感知最流行的方案,尤其是采用多级联实现的4D点云成像雷达,这是目前最有希望实现产品落地的技术方案之一。 今天重点分享关于汽车雷达SAR成像相关技术内容,这也证实了4D点云成像雷达并不一定就是汽车雷达成像唯一的方案,在业内…...
《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计
2-15 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。 #include <iostream>using namespace std;int main() {// 提示用户输入数字cout << "请输入一个数字: ";// 用于存储用户输入的数字的变量double number;// 从…...
2023年生成式AI全球使用报告
生成式人工智能工具正在迅速改变多个领域,从营销和新闻到教育和艺术。 这些工具使用算法从大量培训材料中获取新的文本、音频或图像。虽然 ChatGPT 和 Midjourney 之类的工具可以用来实现超出人类能力或想象力的艺术效果,但目前它们最常用于比人类更轻松…...
安全防御之漏洞扫描技术
每年都有数以千计的网络安全漏洞被发现和公布,加上攻击者手段的不断变化,网络安全状况也在随着安全漏洞的增加变得日益严峻。寻根溯源,绝大多数用户缺乏一套完整、有效的漏洞管理工作流程,未能落实定期评估与漏洞修补工作。只有比…...
SPON世邦 IP网络对讲广播系统 多处文件上传漏洞复现
0x01 产品简介 SPON世邦IP网络对讲广播系统是一种先进的通信解决方案,旨在提供高效的网络对讲和广播功能。 0x02 漏洞概述 SPON世邦IP网络对讲广播系统 addscenedata.php、uploadjson.php、my_parser.php等接口处存在任意文件上传漏洞,未经身份验证的攻击者可利用此漏洞上…...
Python综合数据分析_RFM用户分层模型
文章目录 1.数据加载2.查看数据情况3.数据合并及填充4.查看特征字段之间相关性5.聚合操作6.时间维度上看销售额7.计算用户RFM8.数据保存存储(1).to_csv(1).to_pickle 1.数据加载 import pandas as pd dataset pd.read_csv(SupplyChain.csv, encodingunicode_escape) dataset2…...
【C++进阶04】STL中map、set、multimap、multiset的介绍及使用
一、关联式容器 vector/list/deque… 这些容器统称为序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是<key, value>结构的键值对 在数据检索时…...
在 Linux 中开启 Flask 项目持续运行
在 Linux 中开启 Flask 项目持续运行 在部署 Flask 项目时,情况往往并不是那么理想。默认情况下,关闭 SSH 终端后,Flask 服务就停止了。这时,您需要找到一种方法在 Linux 服务器上实现持续运行 Flask 项目,并在服务器…...
考研个人经验总结【心理向】
客官你好 首先,不管你是以何种原因来到这篇博客,以下内容或多或少可能带给你一些启发。如果你还是大二or大三学生,有考研的打算,不妨提前了解一些考研必备的心理战术,有时候并不是你知识学得不好,而是思维…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
