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 09 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
基于hashlib模块--加密(详解)
Jun 21 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
用Python解决x的n次方问题
Feb 08 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
Python collections.deque双边队列原理详解
Oct 05 Python
python多线程和多进程关系详解
Dec 14 Python
Python趣味挑战之实现简易版音乐播放器
May 28 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分页效率终结版(推荐)
2013/07/01 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
python 动态加载的实现方法
2017/12/22 Python
Python中装饰器学习总结
2018/02/10 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Python argparse模块应用实例解析
2019/11/15 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
python dict乱码如何解决
2020/06/07 Python
Python偏函数实现原理及应用
2020/11/20 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
高职助产应届生自荐信
2013/09/24 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
殡葬服务心得体会
2014/09/11 职场文书
高中数学教学反思范文
2016/02/18 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技