1.5 基础组件之Model(下)BERT文本分类

目录

1 模型微调代码实例:

2 数据集: 

3 步骤:

3.1 导包:

3.2 导入数据:

3.3 数据清洗(dropna):

3.4 创建数据集:

3.5 划分数据集:

3.6 创建Dataloader:

3.7 创建模型及优化器:

3.8 训练与验证:

3.9 模型训练:

3.10 模型预测:


1 模型微调代码实例:

本节我们要做的就是只使用tokenizer和model来做一个文本分类(酒店好评、差评)的解决方案。

2 数据集: 

数据集链接

label,review:好评为1,差评为0 

3 步骤:

3.1 导包:

3.2 导入数据:

处理csv数据一般会使用python的panda这个库

Pandas是一个在Python中非常流行的数据处理和分析库。它提供了高效的数据结构和数据分析工具,使得在Python中进行数据操作变得更加简单和灵活。

以下是Pandas库的一些主要功能和特点:

  1. 数据结构:Pandas提供了两个主要的数据结构:Series和DataFrame。

    • Series是一维标记数组,类似于带有索引的数组或列。它可以容纳不同类型的数据,并具有许多方便的方法和函数。
    • DataFrame是一个二维表格数据结构,由多个Series组成。它类似于电子表格或关系型数据库表,可以方便地处理和操作结构化数据。
  2. 数据导入和导出:Pandas支持从各种数据源(如CSV、Excel、数据库、JSON等)导入数据,并提供了简单的API来将数据导出为不同的格式。

  3. 数据清洗和处理:Pandas提供了广泛的数据清洗和处理功能,包括数据过滤、排序、删除重复值、填充缺失值、数据转换、重塑和合并等操作。这些功能使得数据预处理变得更加高效和方便。

  4. 数据分析和统计:Pandas提供了丰富的统计和聚合函数,可以对数据进行各种分析和计算。例如,你可以计算平均值、总和、标准差,进行分组和透视表操作,执行时间序列分析等。

  5. 数据可视化:Pandas结合了Matplotlib等可视化库,可以方便地进行数据可视化。它提供了简单易用的绘图函数和工具,可以创建直方图、折线图、散点图等常见的图表,帮助用户更好地理解和展示数据。

  6. 高性能和内存优化:Pandas通过使用NumPy数组和优化的算法,提供了高性能的数据操作。它还针对大型数据集的内存使用进行了优化,可以高效地处理大量数据。

3.3 数据清洗(dropna):

由于数据量较大,因此在使用之前,我们有必要做一个空数据删除处理:

dropna()是DataFrame对象的一个方法。dropna()方法用于删除包含缺失值(NaN)的行或列,并返回一个新的DataFrame对象,其中已删除了缺失值。

处理前:

处理后:

说明里面真的是有一个空数据。

3.4 创建数据集:

为了在训练模型时加载和处理数据,我们需要对导入的数据进行处理,创建自己的数据集:

torch.utils.data.Dataset是PyTorch中的一个抽象类,用于表示数据集的抽象接口。它定义了用于访问数据集的方法和属性,包括__getitem__()__len__()等。因此我们要先引入这个。然后对继承的父类的属性和方法进行修改和扩展。

3.5 划分数据集:

pytorch1.13的版本支持通过小数比例划分:

以前的版本可以使用具体长度来划分: 

3.6 创建Dataloader:

为了更方便地对数据进行批量处理和迭代,我们需要创建DataLoader,它可以将数据集封装成一个可迭代的对象,使得我们可以按批次加载和处理数据。这里的shuffle是指进行随机化处理

 这个代码我们得到的结果是:

可以看到只执行这个操作后,我们得到的labels确实是一个张量tensor了,方便我们后续在PyTorch模型中直接进行使用,但是reviews确实仍然是原始的形式,因此我们要想办法对reviews进行处理。

既然Dataloader本身的聚合collate_fn没办法达到预期的效果,那么我们就自己写一个这个聚合函数。同时对数据进行Tokenizer处理

我们可以看到现在打印的结果就是一个list了

在进行tokenizer处理之后,我们就可以得到如下结果:

3.7 创建模型及优化器:

首先导入文本分类模型,接着创建优化器,由于我们做的是迁移学习(是在已有模型的基础上,所以学习率不宜设的过高),有GPU的话可以采用GPU训练

 optimizer = Adam(model.parameters(), lr=2e-5) 这行代码创建了一个使用 Adam 优化算法的优化器,并将模型的参数传递给该优化器进行参数更新。

具体解释如下:

  • model.parameters():这部分代码获取了模型中需要进行优化的参数。model.parameters() 返回一个包含了模型中所有可学习参数的迭代器或生成器。这些参数包括模型的权重(weights)和偏置(biases)等。这些参数将在训练过程中通过优化器进行更新。

  • Adam():这是用于创建 Adam 优化器的函数。Adam 是一种常用的优化算法,特别适用于深度学习模型的训练。它结合了动量(momentum)和自适应学习率机制,能够有效地调整参数更新的步长。

  • lr=2e-5:这是学习率(learning rate)的设置。学习率决定了参数在每次更新中的调整步长。在这个例子中,学习率被设置为 2e-5,即 0.00002。较小的学习率可以使参数更新更加稳定,避免过大的调整。

3.8 训练与验证:

3.9 模型训练:

可以看到,经过三个epoch,accuracy确实是在逐步提升的。

3.10 模型预测:

可以使用pipeline简便一下

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值