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 08 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
May 29 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
python编写俄罗斯方块
Mar 13 Python
使用python客户端访问impala的操作方式
Mar 28 Python
python中entry用法讲解
Dec 04 Python
python如何获取网络数据
Apr 11 Python
Python实现文字pdf转换图片pdf效果
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
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
Python函数返回值实例分析
2015/06/08 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
python Canny边缘检测算法的实现
2020/04/24 Python
python获取整个网页源码的方法
2020/08/03 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
2014年元旦感言
2014/03/06 职场文书
战略合作意向书范本
2014/04/01 职场文书
平面设计专业求职信
2014/08/09 职场文书
民事上诉状范文
2015/05/22 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
初中地理教学反思
2016/02/19 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python