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操作文件
Jul 31 Python
Python 结巴分词实现关键词抽取分析
Oct 21 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Python实现求数列和的方法示例
Jan 12 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
python实现身份证实名认证的方法实例
Nov 08 Python
python实现tail -f 功能
Jan 17 Python
python批量修改xml属性的实现方式
Mar 05 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
Python3.7安装pyaudio教程解析
Jul 24 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
提问的智慧
2006/10/09 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
php面向对象值单例模式
2016/05/03 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
Python语言生成水仙花数代码示例
2017/12/18 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python查看列的唯一值方法
2018/07/17 Python
Python退火算法在高次方程的应用
2018/07/26 Python
python binascii 进制转换实例
2019/06/12 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
护理专业大学生自我推荐信
2014/01/25 职场文书
运动会加油口号
2014/06/07 职场文书
假释思想汇报范文
2014/10/11 职场文书
门面房租房协议书
2014/12/01 职场文书
2014年教研工作总结
2014/12/06 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android