以Transformer-XL為基礎的NLP的框架XLnet

繼 BERT 之後,谷歌又推出了一個用於 NLP 框架——XLnet。

這是一款以Transformer-XL為核心的框架,從論文的結果來看,XLnet 在問答、文本分類、自然語言理解等任務上大幅超越 BERT。

開發者放出了預訓練模型幫助用戶更好地使用 XLNet。

預訓練的模型;

在2019.7.16發佈的有

XLNet-Large, Cased: 24-layer, 1024-hidden, 16-heads

XLNet-Base, Cased: 12-layer, 768-hidden, 12-heads.

這個模型是在全量數據上訓練的。

基於XLNet的微調:

在2019.7.19已經測試了,其依賴TensorFlow 1.13.1 /Python2.

用於XLNet訓練;

TPU上訓練用train.py,GPU上則用train_gpu.py。

python train.py

--record_info_dir=$DATA/tfrecords \\

--train_batch_size=2048 \\

--seq_len=512 \\

--reuse_len=256 \\

--mem_len=384 \\

--perm_size=256 \\

--n_layer=24 \\

--d_model=1024 \\

--d_embed=1024 \\

--n_head=16 \\

--d_head=64 \\

--d_inner=4096 \\

--untie_r=True \\

--mask_alpha=6 \\

--mask_beta=1 \\

--num_predict=85

用XLNet的Tokenization

import sentencepiece as spm

from prepro_utils import preprocess_text, encode_ids

# some code omitted here...

# initialize FLAGS

text = "An input text string."

sp_model = spm.SentencePieceProcessor()

sp_model.Load(FLAGS.spiece_model_file)

text = preprocess_text(text, lower=FLAGS.uncased)

ids = encode_ids(sp_model, text)


以Transformer-XL為基礎的NLP的框架XLnet


以Transformer-XL為基礎的NLP的框架XLnet


分享到:


相關文章: