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 相关文章推荐
在Django的视图中使用form对象的方法
Jul 18 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
python3中使用__slots__限定实例属性操作分析
Feb 14 Python
Django中的session用法详解
Mar 09 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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简介
2006/10/09 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
php 修改密码实现代码
2017/05/24 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python中的ConfigParser模块使用详解
2015/05/04 Python
Django开发中复选框用法示例
2018/03/20 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
Python正则表达式指南 推荐
2018/10/09 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
《在山的那边》教学反思
2014/02/23 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
python图像处理 PIL Image操作实例
2022/04/09 Python