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中的面向对象编程详解(上)
Apr 13 Python
python处理大数字的方法
May 27 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
django反向解析和正向解析的方式
Jun 05 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
python用requests实现http请求代码实例
Oct 31 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
构建高效的python requests长连接池详解
May 02 Python
Jupyter notebook如何修改平台字体
May 13 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
PHP语法速查表
2006/12/06 PHP
PHP 数组教程 定义数组
2009/10/23 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
浅析Python函数式编程
2018/10/06 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Python tornado上传文件的功能
2020/03/26 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
后勤自我鉴定
2013/10/13 职场文书
入党积极分子介绍信
2014/01/17 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL