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生成器的使用方法
Nov 21 Python
python语言使用技巧分享
May 31 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
Python实现代码统计工具
Sep 19 Python
python列表返回重复数据的下标
Feb 10 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
Python内置函数及功能简介汇总
Oct 13 Python
python 如何用map()函数创建多线程任务
Apr 07 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 操作excel文件的方法小结
2009/12/31 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php编译安装php-amq扩展简明教程
2016/06/25 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
js实现滑动滑块验证登录
2020/07/24 Javascript
Python人脸识别初探
2017/12/21 Python
python for循环remove同一个list过程解析
2019/08/14 Python
python实现多进程通信实例分析
2019/09/01 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
电钳专业个人求职信
2014/01/04 职场文书
初二物理教学反思
2014/01/29 职场文书
感恩的演讲稿
2014/05/06 职场文书
绘画专业自荐信
2014/07/04 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2014年大学生工作总结
2014/11/20 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
python微信智能AI机器人实现多种支付方式
2022/04/12 Python