当前位置: 首页 > news >正文

昇思25天学习打卡营第13天 |昇思MindSpore 基于 MindSpore 实现 BERT 对话情绪识别

一、模型简介
BERT 是 Google 于 2018 年末开发并发布的一种新型语言模型,在众多自然语言处理任务中发挥重要作用。其创新点在于 pre-train 方法,即采用了 Masked Language Model 和 Next Sentence Prediction 两种方法分别捕捉词语和句子级别的表征。

二、调用库的功能介绍

  1. mindspore:提供了深度学习框架的核心功能,用于构建、训练和推理模型。
  2. mindspore.dataset:包含数据处理相关的模块,如文本处理、数据集生成和转换等。
  3. mindnlp._legacy.engine:提供了训练和评估模型的相关类和回调函数。
  4. mindnlp._legacy.metrics:用于定义和计算模型评估指标。

三、函数介绍

1. SentimentDataset

  • 参数path,表示数据集文件的路径。
  • 功能:读取指定路径的数据集文件,提取其中的标签和文本数据。
  • 例句
sentiment_dataset = SentimentDataset("data/train.tsv")

2. process_dataset 函数

  • 参数
    • source:数据集的来源。
    • tokenizer:用于文本分词的工具。
    • max_seq_len(默认值 64):序列的最大长度。
    • batch_size(默认值 32):批次大小。
    • shuffle(默认值 True):是否打乱数据集。
  • 功能:对数据集进行加载、转换、分词和批处理等预处理操作。
  • 例句
dataset_train = process_dataset(SentimentDataset("data/train.tsv"), tokenizer)

3. BertForSequenceClassification.from_pretrained 函数

  • 参数
    • 'bert-base-chinese':预训练模型的名称。
    • num_labels=3:分类的类别数量。
  • 功能:从预训练模型加载并构建用于序列分类的 BERT 模型。
  • 例句
model = BertForSequenceClassification.from_pretrained('bert-base-chinese', num_labels=3)

4. auto_mixed_precision 函数

  • 参数
    • model:要进行混合精度处理的模型。
    • 'O1':混合精度的模式。
  • 功能:对模型进行自动混合精度操作,以提高训练速度。
  • 例句
model = auto_mixed_precision(model, 'O1')

5. CheckpointCallback

  • 参数
    • save_path='checkpoint':保存检查点的路径。
    • ckpt_name='bert_emotect':检查点的名称。
    • epochs=1:保存的间隔周期。
    • keep_checkpoint_max=2:保留的最大检查点数量。
  • 功能:在训练过程中按照指定的间隔和策略保存模型检查点。
  • 例句
ckpoint_cb = CheckpointCallback(save_path='checkpoint', ckpt_name='bert_emotect', epochs=1, keep_checkpoint_max=2)

6. BestModelCallback

  • 参数
    • save_path='checkpoint':保存最佳模型的路径。
    • ckpt_name='bert_emotect_best':最佳模型的名称。
    • auto_load=True:是否自动加载最佳模型。
  • 功能:在训练过程中保存表现最佳的模型。
  • 例句
best_model_cb = BestModelCallback(save_path='checkpoint', ckpt_name='bert_emotect_best', auto_load=True)

四、数据集

  1. 提供了一份已标注、经过分词预处理的机器人聊天数据集,来自百度飞桨团队。
  2. 数据由两列组成,以制表符分隔,第一列是情绪分类类别(0 表示消极,1 表示中性,2 表示积极),第二列是以空格分词的中文文本。

五、数据加载和数据预处理

  1. 新建 process_dataset 函数用于数据加载和预处理。
    • 包括数据格式转换、Tokenize 处理和 pad 操作。
    • 针对昇腾 NPU 环境,采用静态 Shape 处理。
  2. 加载预训练的 BertTokenizer ,并对训练集、验证集和测试集进行处理。

六、模型构建

  1. 通过 BertForSequenceClassification 构建情感分类的 BERT 模型。
  2. 加载预训练权重,设置情感三分类的超参数自动构建模型。
  3. 采用自动混合精度操作,实例化优化器和评价指标。
  4. 设置模型训练的权重保存策略,构建训练器并开始训练。

七、模型验证
使用验证数据集对训练好的模型进行验证,评价指标为准确率。

八、模型推理

  1. 遍历推理数据集,展示推理结果与标签。
  2. 自定义推理数据,展示模型泛化能力。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 非插件实现给wordpress添加社交软件的分享按钮
  • 运维工作中的事件、故障排查处理思路
  • OpenAI突然上线两件“杀手锏”:势在维持大模型霸主地位
  • vscode自动优化verilog 格式
  • CentOS安装sentry
  • 3百题英语四级听力考试练习题ACCESS\EXCEL数据库
  • 8-springboot集成nacos config
  • python绘图 | 横坐标是日期,纵坐标是数值
  • LabVIEW无法在共享变量引擎中定位共享变量
  • [微信小程序/uniapp] 锁屏/后台 状态下的音频控制方案
  • 【图像识别】十大数据集合集!
  • golang编码最佳实践(持续更新中)
  • fastjson-1.2.24利用
  • ardupilot开发 --- Rpanion-server 篇
  • 通过 C# 写入数据到Excel表格
  • python3.6+scrapy+mysql 爬虫实战
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • CentOS7简单部署NFS
  • CSS 三角实现
  • download使用浅析
  • Fabric架构演变之路
  • input的行数自动增减
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript服务器推送技术之 WebSocket
  • javascript面向对象之创建对象
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • MySQL数据库运维之数据恢复
  • v-if和v-for连用出现的问题
  • 动态魔术使用DBMS_SQL
  • 关于字符编码你应该知道的事情
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #QT 笔记一
  • (02)Hive SQL编译成MapReduce任务的过程
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (补)B+树一些思想
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***检测工具之RKHunter AIDE
  • .gitignore文件使用
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • @Autowired和@Resource装配
  • @RequestMapping-占位符映射
  • @RestControllerAdvice异常统一处理类失效原因
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [100天算法】-目标和(day 79)