PyTorch預(yù)訓(xùn)練Bert模型的示例
本文介紹以下內(nèi)容:
1. 使用transformers框架做預(yù)訓(xùn)練的bert-base模型;
2. 開(kāi)發(fā)平臺(tái)使用Google的Colab平臺(tái),白嫖GPU加速;
3. 使用datasets模塊下載IMDB影評(píng)數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)。
transformers模塊簡(jiǎn)介
transformers框架為Huggingface開(kāi)源的深度學(xué)習(xí)框架,支持幾乎所有的Transformer架構(gòu)的預(yù)訓(xùn)練模型。使用非常的方便,本文基于此框架,嘗試一下預(yù)訓(xùn)練模型的使用,簡(jiǎn)單易用。
本來(lái)打算預(yù)訓(xùn)練bert-large模型,發(fā)現(xiàn)colab上GPU顯存不夠用,只能使用base版本了。打開(kāi)colab,并且設(shè)置好GPU加速,接下來(lái)開(kāi)始介紹代碼。
代碼實(shí)現(xiàn)
首先安裝數(shù)據(jù)下載模塊和transformers包。
pip install datasets pip install transformers
使用datasets下載IMDB數(shù)據(jù),返回DatasetDict類(lèi)型的數(shù)據(jù).返回的數(shù)據(jù)是文本類(lèi)型,需要進(jìn)行編碼。下面會(huì)使用tokenizer進(jìn)行編碼。
from datasets import load_dataset
imdb = load_dataset('imdb')
print(imdb['train'][:3]) # 打印前3條訓(xùn)練數(shù)據(jù)
接下來(lái)加載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.接下來(lái)需要指定訓(xùn)練的參數(shù),訓(xùn)練參數(shù)的指定使用transformers給出的接口類(lèi)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的各種問(wèn)題。加上Google提供的colab環(huán)境,數(shù)據(jù)下載和預(yù)訓(xùn)練模型下載都非???,建議讀者自行去煉丹。本文完整的案例下載
以上就是PyTorch預(yù)訓(xùn)練Bert模型的示例的詳細(xì)內(nèi)容,更多關(guān)于PyTorch預(yù)訓(xùn)練Bert模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
快速解釋如何使用pandas的inplace參數(shù)的使用
這篇文章主要介紹了快速解釋如何使用pandas的inplace參數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Python中請(qǐng)使用isinstance()判斷變量類(lèi)型
這篇文章主要介紹了Python中請(qǐng)使用isinstance()判斷變量類(lèi)型,本文先是給出了isinstance函數(shù)判斷變量類(lèi)型的例子,并對(duì)isinstance 和 type的區(qū)別做了講解,需要的朋友可以參考下2014-08-08
一文教你利用Python制作一個(gè)C盤(pán)清理器
關(guān)于電腦的垃圾清理操作,已經(jīng)有很多的成熟的軟件可以幫助我們完成C盤(pán)的垃圾清理操作,比如360等等。但是使用三方的清理軟件往往伴隨著很多的廣告,所以本文就來(lái)用Python制作一個(gè)C盤(pán)清理器吧2023-03-03
使用Python實(shí)現(xiàn)簡(jiǎn)單的服務(wù)器功能
socket的使用并不局限于Python語(yǔ)言,你可以用C或者Java來(lái)寫(xiě)出同樣的socket服務(wù)器,而所有語(yǔ)言使用socket的方式都類(lèi)似(Apache就是使用C實(shí)現(xiàn)的服務(wù)器)2017-08-08
Django的restframework接口框架自定義返回?cái)?shù)據(jù)格式的示例詳解
這篇文章主要介紹了Django的restframework接口框架自定義返回?cái)?shù)據(jù)格式,本文介紹了通過(guò)Django的restframework接口框架自定義Response返回對(duì)象來(lái)自定義返回?cái)?shù)據(jù)格式,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07

