训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类

基础介绍:

Bert模型是一个通用backbone,可以简单理解为一个句子的特征提取工具

更直观来看:我们的自然语言是用各种文字表示的,经过编码器,以及特征提取就可以变为计算机能理解的语言了

下游任务:

提取特征后,我们便可以自定义其他自然语言处理任务了,以下是一个简单的示例(效果可能不好,但算是一个基本流程)

数据格式:

模型训练:

我们来训练处理句子情感分类的模型,代码如下

import torch
from tqdm import tqdm  # 进度条库
from transformers import AdamW  # 优化器
import pandas as pd  # 文件读取
from transformers import BertTokenizer, BertModel  # 导入分词器和模型
# 导入数据
data = pd.read_csv("data/data.csv")
# 定义编码器
token = BertTokenizer.from_pretrained("bert-base-chinese")
# 加载预训练模型
pretrained = BertModel.from_pretrained("bert-base-chinese")
# 创建编码集
encode = []
# 编码句子
for i in tqdm(data["sentence"]):
    out = token.batch_encode_plus(
        batch_text_or_text_pairs=[i],
        truncation=True,
        padding='max_length',
        max_length=17,
        return_tensors='pt',
        return_length=True
    )
    encode.append(out)
# 定义模型
class MODEL(torch.nn.Module):
    def __init__(self):
        super().__init__()  # 确保调用父类构造函数
        self.linear1 = torch.nn.Linear(768, 2)
    def forward(self, input_ids, attention_mask, token_type_ids):
        result = pretrained(input_ids=input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)
        result = self.linear1(result.last_hidden_state[:, 0])
        result = result.softmax(dim=1)
        return result
# 创建模型对象
model = MODEL()
# 定义优化器
optimizer = AdamW(model.parameters(), lr=5e-4)
# 定义损失函数
criterion = torch.nn.CrossEntropyLoss()
# 模型训练
for i in range(len(encode)):
    out = model(encode[i]["input_ids"], encode[i]["attention_mask"], encode[i]["token_type_ids"])
    loss = criterion(out, torch.LongTensor([data["label"][i]]))
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()
# 模型权重保存
torch.save(model.state_dict(), 'model1_weights.pth')

运行后得到了训练后的模型权重文件

模型使用:

可用以下代码进行判断句子情感

import torch
from transformers import BertTokenizer, BertModel
token = BertTokenizer.from_pretrained('bert-base-chinese')
pretrained = BertModel.from_pretrained('bert-base-chinese')
# 定义模型
class Model(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = torch.nn.Linear(768, 2)
    def forward(self, input_ids, attention_mask, token_type_ids):
        out = pretrained(
            input_ids=input_ids,
            attention_mask=attention_mask,
            token_type_ids=token_type_ids
        )
        out = self.fc(out.last_hidden_state[:, 0])
        out = out.softmax(dim=1)
        return out
model = Model()
# 加载训练好的模型权重
model.load_state_dict(torch.load('model1_weights.pth'))
sentence = ["衣服一点也不好,差评"]
# 编码
o = token.batch_encode_plus(
        batch_text_or_text_pairs=sentence,
        truncation=True,
        padding='max_length',
        max_length=17,
        return_tensors='pt'
    )
out = model(o['input_ids'], o['attention_mask'], o['token_type_ids'])
if out[0][0] > out[0][1]:
    print("好评")
else:
    print("差评")


相关文章
|
机器学习/深度学习 编解码 人工智能
人脸表情[七种表情]数据集(15500张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
本数据集包含15,500张已划分、已标注的人脸表情图像,覆盖惊讶、恐惧、厌恶、高兴、悲伤、愤怒和中性七类表情,适用于YOLO系列等深度学习模型的分类与检测任务。数据集结构清晰,分为训练集与测试集,支持多种标注格式转换,适用于人机交互、心理健康、驾驶监测等多个领域。
|
25天前
|
机器学习/深度学习 传感器 人工智能
火灾火焰识别数据集(2200张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
在人工智能和计算机视觉的快速发展中,火灾检测与火焰识别逐渐成为智慧城市、公共安全和智能监控的重要研究方向。一个高质量的数据集往往是推动相关研究的核心基础。本文将详细介绍一个火灾火焰识别数据集,该数据集共包含 2200 张图片,并已按照 训练集(train)、验证集(val)、测试集(test) 划分,同时配有对应的标注文件,方便研究者快速上手模型训练与评估。
火灾火焰识别数据集(2200张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
24天前
|
机器学习/深度学习 人工智能 监控
坐姿标准好坏姿态数据集(图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
坐姿标准好坏姿态数据集的发布,填补了计算机视觉领域在“细分健康行为识别”上的空白。它不仅具有研究价值,更在实际应用层面具备广阔前景。从青少年的健康教育,到办公室的智能提醒,再到驾驶员的安全监控和康复训练,本数据集都能发挥巨大的作用。
坐姿标准好坏姿态数据集(图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
27天前
|
机器学习/深度学习 编解码 人工智能
102类农业害虫数据集(20000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
在现代农业发展中,病虫害监测与防治 始终是保障粮食安全和提高农作物产量的关键环节。传统的害虫识别主要依赖人工观察与统计,不仅效率低下,而且容易受到主观经验、环境条件等因素的影响,导致识别准确率不足。
|
机器学习/深度学习 人工智能 文字识别
中药材图像识别数据集(100类,9200张)|适用于YOLO系列深度学习分类检测任务
本数据集包含9200张中药材图像,覆盖100类常见中药材,适用于YOLO系列及主流深度学习模型的图像分类与目标检测任务。数据已划分为训练集(8000张)与验证集(1200张),采用标准文件夹结构和简体中文命名,适配PyTorch、TensorFlow等框架,可用于中药识别系统开发、医学辅助诊断、移动端图像识别App研发及AI科研训练,具备较强的实用性与拓展性。
469 44
|
28天前
|
机器学习/深度学习 自动驾驶 算法
道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
随着城市化与交通运输业的快速发展,道路基础设施的健康状况直接关系到出行安全与城市运行效率。长期高强度的使用、气候变化以及施工质量差异,都会导致道路表面出现裂缝、坑洼、井盖下沉及修补不良等缺陷。这些问题不仅影响驾驶舒适度,还可能引发交通事故,增加道路养护成本。
道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
机器学习/深度学习 人工智能 编解码
AI虫子种类识别数据集(近3000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
本数据集包含近3000张已划分、标注的虫子图像,适用于YOLO系列模型的目标检测与分类任务。涵盖7类常见虫子,标注采用YOLO格式,结构清晰,适合农业智能化、小样本学习及边缘部署研究。数据来源多样,标注精准,助力AI虫害识别落地应用。
|
9月前
|
人工智能 自然语言处理 前端开发
Director:构建视频智能体的 AI 框架,用自然语言执行搜索、编辑、合成和生成等复杂视频任务
Director 是一个构建视频智能体的 AI 框架,用户可以通过自然语言命令执行复杂的视频任务,如搜索、编辑、合成和生成视频内容。该框架基于 VideoDB 的“视频即数据”基础设施,集成了多个预构建的视频代理和 AI API,支持高度定制化,适用于开发者和创作者。
412 9
Director:构建视频智能体的 AI 框架,用自然语言执行搜索、编辑、合成和生成等复杂视频任务
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
昇腾AI行业案例(四):基于 Bert 模型实现文本分类
欢迎学习《昇腾行业应用案例》的“基于 Bert 模型实现文本分类”实验。在本实验中,您将学习如何使用利用 NLP (natural language processing) 领域的AI模型来构建一个端到端的文本系统,并使用开源数据集进行效果验证。为此,我们将使用昇腾的AI硬件以及CANN等软件产品。
461 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习与自然语言处理的最新进展
探索深度学习与自然语言处理的最新进展
259 0

热门文章

最新文章