PyTorch预训练Bert模型的示例


Posted in Python onNovember 17, 2020

本文介绍以下内容:
1. 使用transformers框架做预训练的bert-base模型;
2. 开发平台使用Google的Colab平台,白嫖GPU加速;
3. 使用datasets模块下载IMDB影评数据作为训练数据。

transformers模块简介

transformers框架为Huggingface开源的深度学习框架,支持几乎所有的Transformer架构的预训练模型。使用非常的方便,本文基于此框架,尝试一下预训练模型的使用,简单易用。

本来打算预训练bert-large模型,发现colab上GPU显存不够用,只能使用base版本了。打开colab,并且设置好GPU加速,接下来开始介绍代码。

代码实现

首先安装数据下载模块和transformers包。

pip install datasets
pip install transformers

使用datasets下载IMDB数据,返回DatasetDict类型的数据.返回的数据是文本类型,需要进行编码。下面会使用tokenizer进行编码。

from datasets import load_dataset

imdb = load_dataset('imdb')
print(imdb['train'][:3]) # 打印前3条训练数据

接下来加载tokenizer和模型.从transformers导入AutoModelForSequenceClassification, AutoTokenizer,创建模型和tokenizer。

from transformers import AutoModelForSequenceClassification, AutoTokenizer

model_checkpoint = "bert-base-uncased"

tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint, num_labels=2)

对原始数据进行编码,并且分批次(batch)

def preprocessing_func(examples):
  return tokenizer(examples['text'], 
           padding=True,
           truncation=True, max_length=300)

batch_size = 16

encoded_data = imdb.map(preprocessing_func, batched=True, batch_size=batch_size)

上面得到编码数据,每个批次设置为16.接下来需要指定训练的参数,训练参数的指定使用transformers给出的接口类TrainingArguments,模型的训练可以使用Trainer。

from transformers import Trainer, TrainingArguments

args = TrainingArguments(
  'out',
  per_device_train_batch_size=batch_size,
  per_device_eval_batch_size=batch_size,
  learning_rate=5e-5,
  evaluation_strategy='epoch',
  num_train_epochs=10,
  load_best_model_at_end=True,
)

trainer = Trainer(
  model,
  args=args,
  train_dataset=encoded_data['train'],
  eval_dataset=encoded_data['test'],
  tokenizer=tokenizer
)

训练模型使用trainer对象的train方法

trainer.train()

PyTorch预训练Bert模型的示例

评估模型使用trainer对象的evaluate方法

trainer.evaluate()

总结

本文介绍了基于transformers框架实现的bert预训练模型,此框架提供了非常友好的接口,可以方便读者尝试各种预训练模型。同时datasets也提供了很多数据集,便于学习NLP的各种问题。加上Google提供的colab环境,数据下载和预训练模型下载都非常快,建议读者自行去炼丹。本文完整的案例下载

以上就是PyTorch预训练Bert模型的示例的详细内容,更多关于PyTorch预训练Bert模型的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 列表(List)操作方法详解
Mar 11 Python
python使用append合并两个数组的方法
Apr 28 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
python实现Virginia无密钥解密
Mar 20 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
Flask框架路由和视图用法实例分析
Nov 07 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
linux 下selenium chrome使用详解
Apr 02 Python
Python开发入门——迭代的基本使用
Sep 03 Python
python中pyplot基础图标函数整理
Nov 10 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
python 下载文件的多种方法汇总
Nov 17 #Python
python跨文件使用全局变量的实现
Nov 17 #Python
Python中logging日志的四个等级和使用
Nov 17 #Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 #Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 #Python
python调用百度API实现人脸识别
Nov 17 #Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 #Python
You might like
一步一步学习PHP(8) php 数组
2010/03/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
理解JavaScript的prototype属性
2012/02/11 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
Python MD5加密实例详解
2017/08/02 Python
python小程序实现刷票功能详解
2019/07/17 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
大学新生欢迎词
2014/01/10 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL