如何使用bert

2021-09-29 23:00:04 字數 1953 閱讀 9093

bert原文中文翻譯版,**位址。

uer-py全稱是universal encoder representations,uer-py是乙個在通用語料預訓練以及對下游任務進行微調的工具包。github專案位址。

uer的一些教程,知乎教程(bert做情感分類、序列標註)。

uer分類**的介紹,參考uer-py/run_classifier.py。

#bert載入的關鍵**

model = build_model(args)

# load or initialize parameters.

if args.pretrained_model_path is

notnone

:# initialize with pretrained model.

model.load_state_dict(torch.load(args.pretrained_model_path)

, strict=

false

)else

:# initialize with normal distribution.

for n, p in

list

(model.named_parameters())

:if'gamma'

notin n and

'beta'

notin n:

p.data.normal_(0,

0.02

)#這是model就是乙個已經把預訓練權重全部載入好了的模型了。

#我們先使用model.embedding 把token轉化為embedding,然後呼叫model.encoder

#進行bert編碼。

#在這個模型中,把載入好的bert model作為引數傳入了自己建立的分類模型。

為什麼可以載入bert模型呢?

實際上就是和我們平時儲存載入模型一樣,網上發布的模型通常是他們在大規模語料上訓練的模型的權重,只要我們實現了和網上權重對應的bert模型,就可以把相應的引數load進去,下面我們介紹下乙個pytorch上的bert模型。

專案名稱 pytorch-pretrained-bert.

這個專案時fork乙個專案transformer的乙個實現,裡面的實現也是基本差不多,不過transformer封裝的更好,類間的關係的複雜,**的冗餘比較低,但我還沒有怎麼看tranformer的用法。這個專案有個好處,每乙個類的實現比較完整,比較方便自己去改動。

如何安裝,建議使用原始碼安裝,pip直接安裝會報錯。

pip install -

-editable .

# 注意最後面的 . 不能省略。

import torch

from pytorch_pretrained_bert import berttokenizer, bertmodel, bertformaskedlm

#load pre-trained model tokenizer (vocabulary)

tokenizer = berttokenizer.from_pretrained(

'bert/bert-base-chinese-vocab.txt'

)model = bertmodel.from_pretrained(

'bert'

)#這樣就可以載入模型權重了。詳細的使用教程可以參考github上的示例。

在自己的資料集上進行bert任務的學習,可以進一步把權重學的更好,使用方法,資料要處理成這種格式

然後依次執行preprocess.py 和 pretrain.py即可,這裡遇到乙個問題,在使用gpu時實驗室的伺服器會報錯,我在自己的電腦是可以正常執行的,猜測是由於pytorch的版本造成的問題。

pytorch_pretrained_bert如何進行預訓練,在examples檔案中有乙個run_lm_finetuning.py檔案。

如何使用bert做word embedding

調研目的 如何使用第三方庫快速對資料進行預訓練,得到embedding 作者 香港大學 馬東什麼 不同預訓練模型的embedding機制不一樣,word2vec glove fasttext 都是直接查詞得到embedding,bert 直接取最後一層的輸出,elmo更靈活了 可以取embeddin...

Bert原理與使用

一.簡介 1.bert模型的核心思想有兩點,對推動nlp的發展有著重要的作用 1 transformer結構 2 無監督的預訓練。transformer是乙個只基於注意力 attention 機制的序列模型。bert模型同時需要預訓練,從兩個無監督任務中獲取權重 語言建模 給定左右上下文,丟失的單詞...

bert 中文使用(2)

曾寫過bert cs服務方式的呼叫方法 這種方式優點是操作簡單,但也有很大的缺陷,不能 fine tune,操作繁瑣,而且速度非常慢 不能在windows上使用。最近一直嘗試另一種bert的呼叫方式,克服了上面所說缺點,具體如下 tensorflow 版本為 1.13,1.14,1.15 都可以 其...