Transformers_for_Text_Classification
1.0.0
基於最新的huggingface 出品的transformers v2.2.2代碼進行重構。為了保證代碼日後可以直接復現而不出現兼容性問題,這裡將transformers 放在本地進行調用。
model_type:
在shell文件中修改model_type參數即可指定模型
如,BERT後接FC全連接層,則直接設置model_type=bert ;BERT後接CNN卷積層,則設置model_type=bert_cnn .
在本README的Support中列出了本項目中各個預訓練模型支持的model_type 。
最後,在終端直接運行shell文件即可,如:
bash run_classifier.sh
注:在中文RoBERTa、ERNIE、BERT_wwm這三種預訓練語言模型中,均使用BERT的model_type進行加載。
dataset文件夾裡存放自定義的數據集文件夾,如TestData .utils.py中,仿照class THUNewsProcessor寫一個自己的類,如命名為class TestDataProcessor ,並在tasks_num_labels , processors , output_modes三個dict中添加相應內容.TestData .one 2080Ti, 12GB RAM
Python: 3.6.5
PyTorch: 1.3.1
TensorFlow: 1.14.0(僅為了支持TensorBoard,無其他作用)
Numpy: 1.14.6
數據集: THUNews/5_5000
epoch:1
train_steps: 5000
| model | dev set best F1 and Acc | remark |
|---|---|---|
| bert_base | 0.9308869881728941, 0.9324 | BERT接FC層, batch_size 8, learning_rate 2e-5 |
| bert_base+cnn | 0.9136314735833212, 0.9156 | BERT接CNN層, batch_size 8, learning_rate 2e-5 |
| bert_base+lstm | 0.9369254464106703, 0.9372 | BERT接LSTM層, batch_size 8, learning_rate 2e-5 |
| bert_base+gru | 0.9379539112313108, 0.938 | BERT接GRU層, batch_size 8, learning_rate 2e-5 |
| roberta_large | RoBERTa接FC層, batch_size 2, learning_rate 2e-5 | |
| xlnet_mid | 0.9530066512880131, 0.954 | XLNet接FC層, batch_size 2, learning_rate 2e-5 |
| xlnet_mid+lstm | 0.9269927348553552, 0.9304 | XLNet接LSTM層, batch_size 2, learning_rate 2e-5 |
| xlnet_mid+gru | 0.9494631023945569, 0.9508 | XLNet接GRU層, batch_size 2, learning_rate 2e-5 |
| albert_xlarge_183k |
NPL_PEMDC