首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-16 23:42
  • 4079
  • 5480
blog.csdn.net

目录

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简便一下:

注:本文转载自blog.csdn.net的笨笨sg的文章"https://blog.csdn.net/a131529/article/details/134691189"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top