Transformers实战——使用Trainer类训练和评估自己的数据和模型

这篇具有很好参考价值的文章主要介绍了Transformers实战——使用Trainer类训练和评估自己的数据和模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有时候我们并不想使用Transformers来训练别人的预训练模型,而是想用来训练自己的模型,并且不想写训练过程代码。这时,我们可以按照一定的要求定义数据集和模型,就可以使用Trainer类来直接训练和评估模型,不需要写那些训练步骤了。

使用Trainer类训练自己模型步骤如下,以网络退化现象和残差网络效果中的残差模型为例:

导入必要库

import torch
from torch import nn
from datasets import Dataset
from transformers import Trainer, TrainingArguments

# 驱动选择
device = "cuda" if torch.cuda.is_available() else "cpu"

准备数据

X = torch.zeros((26, 26), dtype=torch.float32).to(device=device)
labels = []
for i in range(26):
    labels.append((i+1) % 26)
    X[i][i] = 1.
labels = torch.tensor(labels)
dataset = Dataset.from_dict({'x':X, 'labels':labels})
  • 注意

    Trainer训练时,会将dataset中的数据按照对应的键值传入,因此需要在自己模型的forward方法中接收键值变量。如上例,需要将方法写为:forward(self, x, labels)

构建网络

# 残差网络
class RN(nn.Module):
    def __init__(self):
        super(RN, self).__init__()
        self.linear_stack = nn.Sequential(
            nn.Linear(26, 64),
            nn.Hardsigmoid(),
            nn.Linear(64, 26),
            nn.Hardsigmoid(),
        )
        
        self.linear_stack_2 = nn.Sequential(
            nn.Linear(26, 64),
            nn.Hardsigmoid(),
            nn.Linear(64, 64),
            nn.Hardsigmoid(),
        )
        
        self.output_layer = nn.Linear(64, 26)
        
        self.loss_f = nn.CrossEntropyLoss()
        
    def forward(self, x, labels, mode='train'):
        y = self.linear_stack(x)
        # 残差
        y = y+x
        y = self.linear_stack_2(y)
        y = self.output_layer(y)
       
        if mode is 'train':
            return {
                'loss':self.loss_f(y, labels),
                'predictions':y
            }
        
        return y

网络与之前完全一致,只是改了下前向传播方法,这里的mode=’train’是为了后续自己使用模型加的,也可以不要。

创建Trainer类

# 生成模型实例
model = RN().to(device=device)

def compute_metrics(pred):
    labels = pred.label_ids
    preds = pred.predictions.argmax(-1)
    acc = (labels == preds).sum()/len(labels)
    return {
        'accuracy': acc,
    }

training_args = TrainingArguments(
    output_dir='./results',         # output directory 结果输出地址
    num_train_epochs=1000,          # total # of training epochs 训练总批次
    per_device_train_batch_size=1,  # batch size per device during training 训练批大小
    per_device_eval_batch_size=1,   # batch size for evaluation 评估批大小
    logging_dir='./logs/rn_log',    # directory for storing logs 日志存储位置
    learning_rate=1e-3,             # 学习率
    save_steps=False,               # 不保存检查点
)

trainer = Trainer(
    model=model,                      # the instantiated 🤗 Transformers model to be trained 需要训练的模型
    args=training_args,               # training arguments, defined above 训练参数
    train_dataset=dataset,            # training dataset 训练集
    eval_dataset=dataset,             # evaluation dataset 测试集
    compute_metrics=compute_metrics   # 计算指标方法
)

trainer.train()
trainer.evaluate()

训练过程:

transformers trainer,# Transformers,深度学习,机器翻译,人工智能,Transformers

评估结果:

transformers trainer,# Transformers,深度学习,机器翻译,人工智能,Transformers

保存模型

trainer.save_model()

加载并使用模型

checkpoint = torch.load('./results/pytorch_model.bin')
model = RN().to(device)
model.load_state_dict(checkpoint)
model(X.to(device), torch.tensor(labels).to(device))['predictions'].argmax(1)

transformers trainer,# Transformers,深度学习,机器翻译,人工智能,Transformers文章来源地址https://www.toymoban.com/news/detail-626594.html

到了这里,关于Transformers实战——使用Trainer类训练和评估自己的数据和模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模型实战(3)之YOLOv7实例分割、模型训练自己数据集

    下载yolov7实例分割模型: 安装环境

    2023年04月08日
    浏览(42)
  • GPT实战系列-如何用自己数据微调ChatGLM2模型训练

    广告文案生成模型 输入文字 :类型#裙 颜色#蓝色 风格#清新*图案#蝴蝶结 输出文案 :裙身处采用立体蝴蝶结装饰辅以蓝色条带点缀,令衣身造型饱满富有层次的同时为其注入一丝甜美气息。将女孩清新娇俏的一面衬托而出。 训练和测试数据组织: 数据可以从 下载链接,t

    2024年02月06日
    浏览(50)
  • ChatGLM2-6B、ChatGLM-6B 模型介绍及训练自己数据集实战

    介绍 ChatGLM-6B是开源的文本生成式对话模型,基于General Language Model(GLM)框架,具有62亿参数,结合模型蒸馏技术,实测在2080ti显卡训练中上(INT4)显存占用 6G 左右, 优点 :1.较低的部署门槛: FP16 半精度下,ChatGLM-6B 需要至少 13GB 的显存进行推理,结合模型量化技术,一需求可以进一步

    2024年02月12日
    浏览(59)
  • 精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型

    精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型。 机器学习 人工智能的核心,是使计算机具有智能的根本途径。机器学习专注于算法,允许机器学习而不需要编程,

    2024年01月25日
    浏览(78)
  • 使用MMDetection训练自己的数据集

    本文主要阐述如何使用 mmdetection 训练自己的数据,包括配置文件的修改,训练时的数据增强,加载预训练权重以及绘制损失函数图等。这里承接上一篇文章,默认已经准备好了 COCO 格式数据集且已安装 mmdetection ,环境也已经配置完成。 这里说明一下,因为 mmdetection 更新至

    2024年02月06日
    浏览(60)
  • 使用SwinUnet训练自己的数据集

    参考博文: https://blog.csdn.net/qq_37652891/article/details/123932772 遥感图像多类别语义分割,总共分为7类(包括背景) image: label_rgb label(这里并不是全黑,其中的类别取值为 0,1,2,3,4,5,6 ),此后的训练使用的也是这样的数据 数据地址 百度云: https://pan.baidu.com/s/1zZHnZfBgVWxs6T

    2024年02月04日
    浏览(50)
  • 博客3:YOLOv5车牌识别实战教程:模型训练与评估

    摘要:本篇博客将详细介绍如何使用YOLOv5进行车牌识别模型的训练与评估。我们将搭建训练环境、准备数据、配置模型参数、启动训练过程,以及使用验证集评估模型性能。 车牌识别视频 正文: 3.1 搭建训练环境   首先,我们需要搭建YOLOv5的训练环境。YOLOv5使用PyTorch框架,

    2024年02月04日
    浏览(47)
  • YOLOv5的Tricks | 【Trick15】使用COCO API评估模型在自己数据集的结果

    如有错误,恳请指出。 在解析yolov5整个工程项目的时候要,已经对其detect.py脚本和val.py脚本进行分别的解析。其中,个人觉得detect脚本写得过于冗杂,所以分别为每个任务(图片推理,视频推理,摄像头推理)单独的写了个简单易懂的推理脚本。 在之前在解析完val.py脚本之

    2024年02月07日
    浏览(45)
  • 【预训练语言模型】 使用Transformers库进行BERT预训练

    基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练。 鉴于算力限制,选用了较小的英文数据集wikitext-2 目的 :跑通Mask语言模型的预训练流程 注意:在Kaggle上训练时,最好将datasets更新到最新版(再重启kernel),避免版本低报错 colab和kaggle已经预安装transformers库 加载数据

    2024年03月14日
    浏览(45)
  • SwinIR Transformer训练教程(使用自己的数据集)

    SwinIR Transformer图像超分辨率重建训练教程 文章:https://arxiv.org/abs/2108.

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包