PyTorch預(yù)訓(xùn)練Bert模型的示例
本文介紹以下內(nèi)容:
1. 使用transformers框架做預(yù)訓(xùn)練的bert-base模型;
2. 開發(fā)平臺(tái)使用Google的Colab平臺(tái),白嫖GPU加速;
3. 使用datasets模塊下載IMDB影評(píng)數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)。
transformers模塊簡(jiǎn)介
transformers框架為Huggingface開源的深度學(xué)習(xí)框架,支持幾乎所有的Transformer架構(gòu)的預(yù)訓(xùn)練模型。使用非常的方便,本文基于此框架,嘗試一下預(yù)訓(xùn)練模型的使用,簡(jiǎn)單易用。
本來打算預(yù)訓(xùn)練bert-large模型,發(fā)現(xiàn)colab上GPU顯存不夠用,只能使用base版本了。打開colab,并且設(shè)置好GPU加速,接下來開始介紹代碼。
代碼實(shí)現(xiàn)
首先安裝數(shù)據(jù)下載模塊和transformers包。
pip install datasets pip install transformers
使用datasets下載IMDB數(shù)據(jù),返回DatasetDict類型的數(shù)據(jù).返回的數(shù)據(jù)是文本類型,需要進(jìn)行編碼。下面會(huì)使用tokenizer進(jìn)行編碼。
from datasets import load_dataset imdb = load_dataset('imdb') print(imdb['train'][:3]) # 打印前3條訓(xùn)練數(shù)據(jù)
接下來加載tokenizer和模型.從transformers導(dǎo)入AutoModelForSequenceClassification, AutoTokenizer,創(chuàng)建模型和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)
對(duì)原始數(shù)據(jù)進(jìn)行編碼,并且分批次(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)
上面得到編碼數(shù)據(jù),每個(gè)批次設(shè)置為16.接下來需要指定訓(xùn)練的參數(shù),訓(xùn)練參數(shù)的指定使用transformers給出的接口類TrainingArguments,模型的訓(xùn)練可以使用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 )
訓(xùn)練模型使用trainer對(duì)象的train方法
trainer.train()
評(píng)估模型使用trainer對(duì)象的evaluate方法
trainer.evaluate()
總結(jié)
本文介紹了基于transformers框架實(shí)現(xiàn)的bert預(yù)訓(xùn)練模型,此框架提供了非常友好的接口,可以方便讀者嘗試各種預(yù)訓(xùn)練模型。同時(shí)datasets也提供了很多數(shù)據(jù)集,便于學(xué)習(xí)NLP的各種問題。加上Google提供的colab環(huán)境,數(shù)據(jù)下載和預(yù)訓(xùn)練模型下載都非??欤ㄗh讀者自行去煉丹。本文完整的案例下載
以上就是PyTorch預(yù)訓(xùn)練Bert模型的示例的詳細(xì)內(nèi)容,更多關(guān)于PyTorch預(yù)訓(xùn)練Bert模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何在Python?中使用?join()?函數(shù)把列表拼接成一個(gè)字符串
這篇文章主要介紹了如何在Python?中使用?join()?函數(shù)把列表拼接成一個(gè)字符串,文章圍繞?join()?函數(shù)的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你有幫助2022-03-03python模塊smtplib實(shí)現(xiàn)純文本郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了python模塊smtplib實(shí)現(xiàn)純文本郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05用Python展示動(dòng)態(tài)規(guī)則法用以解決重疊子問題的示例
這篇文章主要介紹了用Python展示動(dòng)態(tài)規(guī)則法用以解決重疊子問題的一個(gè)棋盤游戲的示例,動(dòng)態(tài)規(guī)劃常常適用于有重疊子問題和最優(yōu)子結(jié)構(gòu)性質(zhì)的問題,且耗時(shí)間往往遠(yuǎn)少于樸素解法,需要的朋友可以參考下2015-04-04使用Keras訓(xùn)練好的.h5模型來測(cè)試一個(gè)實(shí)例
這篇文章主要介紹了使用Keras訓(xùn)練好的.h5模型來測(cè)試一個(gè)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07Scrapy+Selenium自動(dòng)獲取cookie爬取網(wǎng)易云音樂個(gè)人喜愛歌單
這篇文章主要介紹了Scrapy+Selenium自動(dòng)獲取cookie爬取網(wǎng)易云音樂個(gè)人喜愛歌單,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02python中字符串類型json操作的注意事項(xiàng)
這篇文章主要給大家介紹了python中字符串類型json操作的一些注意事項(xiàng),文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05