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编写一个模仿CPU工作的程序
Apr 16 Python
Python实现在线音乐播放器
Mar 03 Python
Python语言描述随机梯度下降法
Jan 04 Python
python DataFrame 修改列的顺序实例
Apr 10 Python
Python按钮的响应事件详解
Mar 04 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
python 实现图片特效处理
Apr 03 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
js选项卡的实现方法
2015/02/09 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python random模块常用方法
2014/11/03 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
python标识符命名规范原理解析
2020/01/10 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
保险公司开门红口号
2014/06/21 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
公务员考察材料范文
2014/12/23 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
工程质量保证书
2015/05/09 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
导游词之桂林山水
2019/09/20 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP