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中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
Python 加密与解密小结
Dec 06 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
Django框架反向解析操作详解
Nov 28 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
Django用户身份验证完成示例代码
Apr 03 Python
Python requests接口测试实现代码
Sep 08 Python
python爬虫---requests库的用法详解
Sep 28 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
Jquery 弹出层插件实现代码
2009/10/24 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jQuery 选择器理解
2010/03/16 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
Python制作动态字符图的实例
2019/01/27 Python
使用python实现简单五子棋游戏
2019/06/18 Python
python递归法解决棋盘分割问题
2019/07/17 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
服装设计专业自荐信
2014/06/17 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
党风廉正建设责任书
2015/01/29 职场文书
英文辞职信范文
2015/05/13 职场文书
全民创业工作总结
2015/08/13 职场文书
2015年国庆节寄语
2015/08/17 职场文书
800字作文之大雪
2019/12/04 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
Nginx 匹配方式
2022/05/15 Servers