首页 > 其他分享 >Coggle数据科学 | Kaggle干货:自定义transformers数据集

Coggle数据科学 | Kaggle干货:自定义transformers数据集

时间:2024-07-27 20:29:39浏览次数:18  
标签:__ loss transformers 自定义 self labels Kaggle train

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。

原文链接:Kaggle干货:自定义transformers数据集

transformers是现在NLP同学必备的库,但在使用的过程中主要的代码是需要自定义数据集,那么如何舒服的读取数据,并使用transformers进行训练模型呢?

本文的内容如下:

  • 自定义文本数据集

  • 使用transformerstrainer训练

  • 使用Pytorch自定义训练流程

步骤1:读取IMDb Reviews

IMDb Reviews是比较常见的英文情感分类的数据集,主要完成文本多分类任务。我们首先需要读取数据,并处理数据。

  • 下载数据

# 如下为shell命令
wget http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz
tar -xf aclImdb_v1.tar.gz
  • 划分数据集

from sklearn.model_selection import train_test_split
train_texts, val_texts, train_labels, val_labels = train_test_split(train_texts, train_labels, test_size=.2)
  • 对文本进行编码

这里建议提前将文本进行编码,不建议动态进行编码,可以节约时间。

from transformers import DistilBertTokenizerFast
tokenizer = DistilBertTokenizerFast.from_pretrained('distilbert-base-uncased')

train_encodings = tokenizer(train_texts, truncation=True, padding=True)
val_encodings = tokenizer(val_texts, truncation=True, padding=True)
test_encodings = tokenizer(test_texts, truncation=True, padding=True)
  • 自定义数据集

比较常见的自定义数据集的方法,需要修改__init____getitem____len__函数。

import torch

class IMDbDataset(torch.utils.data.Dataset):
    def __init__(self, encodings, labels):
        self.encodings = encodings
        self.labels = labels

    def __getitem__(self, idx):
        item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
        item['labels'] = torch.tensor(self.labels[idx])
        return item

    def __len__(self):
        return len(self.labels)

train_dataset = IMDbDataset(train_encodings, train_labels)
val_dataset = IMDbDataset(val_encodings, val_labels)
test_dataset = IMDbDataset(test_encodings, test_labels)

步骤2:使用trainer训练

如果你的数据集定义为上述的格式,就可以非常方面的使用transformerstrainer训练。

from transformers import DistilBertForSequenceClassification, Trainer, TrainingArguments

# 训练细节
training_args = TrainingArguments(
    output_dir='./results',          # output directory
    num_train_epochs=3,              # total number of training epochs
    per_device_train_batch_size=16,  # batch size per device during training
    per_device_eval_batch_size=64,   # batch size for evaluation
    warmup_steps=500,                # number of warmup steps for learning rate scheduler
    weight_decay=0.01,               # strength of weight decay
    logging_dir='./logs',            # directory for storing logs
    logging_steps=10,
)

# 加载模型
model = DistilBertForSequenceClassification.from_pretrained("distilbert-base-uncased")

trainer = Trainer(
    model=model,                         # the instantiated 

标签:__,loss,transformers,自定义,self,labels,Kaggle,train
From: https://blog.csdn.net/csdn_xmj/article/details/138021434

相关文章

  • Coggle数据科学 | Kaggle 知识点:时序模型 Prophet
    本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。原文链接:Kaggle知识点:时序模型ProphetProphet 算法在时间序列中Prophet是Facebook开源的时间序列预测算法,可以有效处理节假日信息,并按周、月、年对时间序列数据的变化趋势进行拟合。https://facebook.g......
  • STM32自定义协议串口接收解析指令程序
    1、在使用串口接收自定义协议指令时,需要串口解析收到的是什么指令,举例通信报文为上位机->单片机名称长度备注帧头1Byte0x5A0x5A帧长度1Byte数据包的长度0x00-0xFF数据包命令字1Byte功能标识数据可以为空校验1Byte数据包所有字节按位异......
  • YOLOv8-seg——基于自定义数据集训练图像分割模型
    目录一、制作分割数据集1标注2json文件转txt文件3数据集划分二、训练图像分割模型1环境搭建2训练网络3预测三、训练结果解读一.制作分割数据集1标注运用labelme软件进行手动标注,得到数据的json格式标注文件。*注意区别于labelimg软件,labelimg软件对每个......
  • 渲染三角形(自定义数据)并平移的关键代码/(OpenGL)
    废话不多说,先上结果:图1 渲染一个三角形并移动 图2打印坐标关键代码:(1)glBegin、glEnd这两个函数之间的代码用于定义要绘制的图形;glColor3f:设置顶点颜色;glVertex3f:设置顶点位置因为涉及需要打印移动前后的三角形顶点的坐标矩阵,所以在绘制三角形的时候,三角形顶点可以......
  • 训练的韧性:Mojo模型中自定义训练中断与恢复机制的实现
    训练的韧性:Mojo模型中自定义训练中断与恢复机制的实现在机器学习模型的开发过程中,训练过程可能会因为多种原因(如硬件故障、电源中断等)被迫中断。Mojo模型,作为一个泛指,可以代表任何机器学习或深度学习模型。支持模型的自定义训练中断和恢复机制,可以显著提高模型训练的稳定性......
  • 【微信小程序开发】API使用、自定义组件、页面实现图解超详细
    文章目录常用API消息交互消息加载转发给朋友模态对话框获取用户信息调起客户端扫码界面发起支付获取位置自定义组件创建自定义组件使用自定义组件组件生命周期组件所在页面的生命周期页面实现淘宝订单简化页面饮品订单简化页面本篇总结更多相关内容可查看常用......
  • Asp .Net Core 系列:详解授权以及实现角色、策略、自定义三种授权和自定义响应
    什么是授权(Authorization)?在ASP.NETCore中,授权(Authorization)是控制对应用资源的访问的过程。它决定了哪些用户或用户组可以访问特定的资源或执行特定的操作。授权通常与身份验证(Authentication)一起使用,身份验证是验证用户身份的过程,授权与身份验证相互独立,但是,授权需要一种身......
  • 解密黑盒:Mojo模型中自定义模型解释性报告的动态生成
    解密黑盒:Mojo模型中自定义模型解释性报告的动态生成在机器学习领域,模型的可解释性是一个至关重要的议题。Mojo模型,作为一个通用术语,可以指代任何机器学习或深度学习模型。随着模型被集成到生产环境中,提供模型决策的透明度和可解释性变得尤为关键。本文将探讨如何在Mojo模型......
  • Postman自定义插件全攻略:扩展你的API开发工具箱
    Postman自定义插件全攻略:扩展你的API开发工具箱Postman作为API开发的瑞士军刀,其强大的功能集已经为开发者所熟知。但你知道吗?Postman还允许开发者使用自定义插件来进一步扩展其功能。这些插件可以帮助自动化重复性任务、增强测试能力,甚至集成其他服务。本文将详细介绍如何......
  • 【WSL2】在Windows通过自定义域名访问wsl2中的服务
    前言目前在windows与windows的wsl系统之间,宿主机无法通过相对较固定的方式来进行网络访问,通常需要使用wsl的ip来访问,而ip可能不是很直观并且可能会有变更,当前教程解决了这个问题,通过hosts映射的方式实现windows宿主机访问wsl服务。脚本的原理:在linux启动时,执行一次修改windows......