PyTorch預(yù)訓(xùn)練Bert模型的示例
本文介紹以下內(nèi)容:
1. 使用transformers框架做預(yù)訓(xùn)練的bert-base模型;
2. 開發(fā)平臺使用Google的Colab平臺,白嫖GPU加速;
3. 使用datasets模塊下載IMDB影評數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)。
transformers模塊簡介
transformers框架為Huggingface開源的深度學(xué)習(xí)框架,支持幾乎所有的Transformer架構(gòu)的預(yù)訓(xùn)練模型。使用非常的方便,本文基于此框架,嘗試一下預(yù)訓(xù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)行編碼。下面會使用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)
對原始數(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ù),每個批次設(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對象的train方法
trainer.train()

評估模型使用trainer對象的evaluate方法
trainer.evaluate()
總結(jié)
本文介紹了基于transformers框架實(shí)現(xiàn)的bert預(yù)訓(xùn)練模型,此框架提供了非常友好的接口,可以方便讀者嘗試各種預(yù)訓(xùn)練模型。同時datasets也提供了很多數(shù)據(jù)集,便于學(xué)習(xí)NLP的各種問題。加上Google提供的colab環(huán)境,數(shù)據(jù)下載和預(yù)訓(xùn)練模型下載都非???,建議讀者自行去煉丹。本文完整的案例下載
以上就是PyTorch預(yù)訓(xùn)練Bert模型的示例的詳細(xì)內(nèi)容,更多關(guān)于PyTorch預(yù)訓(xùn)練Bert模型的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
快速解釋如何使用pandas的inplace參數(shù)的使用
這篇文章主要介紹了快速解釋如何使用pandas的inplace參數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
使用Python實(shí)現(xiàn)簡單的服務(wù)器功能
socket的使用并不局限于Python語言,你可以用C或者Java來寫出同樣的socket服務(wù)器,而所有語言使用socket的方式都類似(Apache就是使用C實(shí)現(xiàn)的服務(wù)器)2017-08-08
Django的restframework接口框架自定義返回?cái)?shù)據(jù)格式的示例詳解
這篇文章主要介紹了Django的restframework接口框架自定義返回?cái)?shù)據(jù)格式,本文介紹了通過Django的restframework接口框架自定義Response返回對象來自定義返回?cái)?shù)據(jù)格式,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07

