使用Hugging Face的Pytorch版本BERT模型进行Fine-tune实现文本分类

使用Hugging Face的Pytorch版本BERT模型进行Fine-tune实现文本分类

Hugging Face确实可以让BERT变得很容易使用,这里介绍一下如何使用Hugging Face的Pytorch版本BERT模型进行Fine-tune实现文本分类。

Tokenize

首先,我们需要看看如何对中文预料进行Tokenize的操作。废话不说,这里直接上代码。

from transformers import AutoTokenizer


tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
batch_sentences = [
    "我在广州",
    "今天天气很好",
    "今天是2022年9月23日",
]
encoded_input = tokenizer(batch_sentences,
                          padding="max_length",
                          truncation=True,
                          max_length=20)
print(encoded_input)

这里直接使用了,transformers下面的AutoTokenizer,使用bert-base-chinese来编码,输出的结果如下。
在这里插入图片描述
可以看到,这里定义了max_seq_length=20,不足加padding,超过自动截断,头尾加入101,102代表截断。

Decode

decode是Tokenize的反操作,这里对第一句编码进行decode操作。

data = tokenizer.decode(encoded_input["input_ids"][0])
print(data)

得出来在前后添加了开始和结束符号,和PAD
在这里插入图片描述

构建并训练模型

我们这里是用了THUCNews数据集,打开网页下载THUCNews.zip文件即可,里面一共有10个类别,这里只使用了2类,为了加快训练速度,分别用了体育和娱乐。所以定义model时候,需要指明文本类别数。
AutoModelForSequenceClassification.from_pretrained(“bert-base-chinese”, num_labels=2)
构建和训练模型的代码如下面所示:

import torch
from torch.utils.data import DataLoader
from tqdm 
### 用于训练 BERT 进行文本分类的开源框架 在自然语言处理领域,BERT 已成为一种重要的预训练模型工具。为了支持研究人员和开发者更高效地利用 BERT 实现各种 NLP 应用,许多开源框架被开发出来以简化其训练过程。以下是几个常用的开源框架及其功能描述: #### PyTorchHugging Face Transformers Hugging Face 的 `Transformers` 是目前最流行的基于 PyTorch 和 TensorFlow 的库之一,它提供了大量预训练好的 BERT 模型以及便捷的接口来加载这些模型并对其进行微调。通过简单的几行代码即可完成从数据准备到模型训练的过程。 ```python from transformers import BertTokenizer, BertForSequenceClassification import torch tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2) inputs = tokenizer("Hello, my dog is cute", return_tensors="pt") labels = torch.tensor([1]).unsqueeze(0) # Example label: positive sentiment (class '1') outputs = model(**inputs, labels=labels) loss = outputs.loss logits = outputs.logits ``` 此代码片段展示了如何使用 Hugging Face 提供的功能快速设置好一个二元分类任务所需的组件[^1]。 #### Tensorflow/Keras API 配合 TF-BERT 对于偏好 TensorFlow 或 Keras 接口的人来说,官方维护了一个名为 `tensorflow/models` 的存储库,在其中包含了针对不同硬件环境优化过的版本如 TPU 支持等特性。此外还有第三方项目比如 Simpletransformers 基于原生TF封装而成更加易用的形式给初学者入门降低门槛的同时保留高度灵活性满足高级需求场景下的定制化能力扩展可能性无限大! 下面是一个简单例子说明怎样创建一个基本结构来进行下一步操作前准备工作完毕之后就可以着手解决实际问题啦~ ```python import tensorflow as tf from official.nlp.bert import configs, models config = configs.BertConfig(vocab_size=30522, hidden_size=768, num_hidden_layers=12, num_attention_heads=12, intermediate_size=3072) classifier_model = models.create_classifier(config=config, max_seq_length=128, num_labels=2) print(classifier_model.summary()) ``` 这段脚本定义了一种特定类型的神经网络——即带有全连接层顶部的标准双向编码器表示形式(Bi-directional Encoder Representation),专门用来执行句子级别的预测工作流中的最后一步计算概率分布向量输出结果以便后续评估指标衡量效果好坏程度差异情况作出相应调整改进措施直至达到预期目标为止[^2]. #### FastAI Library Integration with BERT Fastai 是另一个强大的深度学习框架,能够轻松集成像 BERT 这样的复杂架构。它的高层抽象使得即使是复杂的迁移学习流程也变得直观明了。用户只需指定少量参数就能启动整个端到端的学习管道。 示例如下所示: ```python from fastai.text.all import * dls = TextDataLoaders.from_folder('/path/to/data', valid='valid', bs=32) learn = text_classifier_learner(dls, AWD_LSTM, drop_mult=0.5, metrics=accuracy) learn.fine_tune(4, base_lr=2e-2) ``` 虽然这里展示的是 LSTM 类型的语言模型实例而不是真正的 BERT ,但是 fastai 同样允许我们导入外部资源文件夹路径指向已经下载保存本地磁盘上的 bert-base-* 系列权重矩阵从而实现相同目的只是具体方法略有区别而已[^3]. --- ### 总结 综上所述,无论是 Python 社区广泛采用的 PyTorch 结合 HuggingFace 的解决方案还是谷歌自家出品的支持多平台部署方案亦或是面向教育科研用途设计友好的 fastai wrapper layer ,它们都极大地方便了广大研究者们开展关于 transformer family member related research activities without worrying too much about underlying implementation details anymore !
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值