圖網路學習筆記——ERNIE實踐
阿新 • • 發佈:2020-11-29
前言
本次圖網路學習筆記主要是百度PGL團隊的七日優質免費課程,主要參考自這裡:圖神經網路7日打卡營.
本次課程包含了很多內容:圖遊走來演算法,圖神經演算法,尤其是NLP的預訓練模型為基礎的應用的ERNIESAGE模型取得了很好的效果,這裡作為基礎先記錄一下ERNIE的實踐過程。
學習原理可參考:PPT.
主要實踐內容
實踐內容參考自持續學習語義理解框架ERNIE.
首先要按照pip install ernie
下面是部分程式碼與補充解釋。
# 導包 import numpy as np import pandas as pd from sklearn.metrics import f1_score, accuracy_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import train_test_split import paddle as P import paddle.fluid as F import paddle.fluid.layers as L import paddle.fluid.dygraph as D from ernie.tokenizing_ernie import ErnieTokenizer from ernie.modeling_ernie import ErnieModelForSequenceClassification #匯入資料 trains = pd.read_csv(PATH + '/samples/train.csv') # 資料格式為:詞彙 + 類別 的DF格式 列 BATCH = 32 # 根據視訊記憶體確定 MAX_SEQLEN = 64 EPOCH = 10 lr = 5e-5 # learning_rate n_class = 2 # 類別 假設為2分類 D.guard().__enter__() ernie_path = r'\pre-training_model\ERNIE\model-ernie1.0.1' # 使用下載到本地的模型,預設是從網路下載,可能由於波動不一定每次都可以 tokenizer = ErnieTokenizer.from_pretrained(pretrain_dir_or_url=ernie_path) ernie = ErnieModelForSequenceClassification.from_pretrained(pretrain_dir_or_url=ernie_path, num_labels=n_class) optimizer = F.optimizer.Adam(lr, parameter_list=ernie.parameters())
接下來就是資料處理:
# 這裡是makedata 和 get_batch_data 根據自己的需要設定自己的格式,參考源文件即可
# 需要注意的是浮點型設定為float32,
構造訓練驗證集,這裡與源文件不一樣
# 處理資料 X = trains['file'] y = trains['label'] X_train,X_val,y_train,y_val=train_test_split(X.values,y.values,test_size=1/10,random_state=13) X_y_train = list(zip(X_train,y_train)) X_y_val = list(zip(X_val, y_val)) train_data = make_data(X_y_train) val_data = make_data(X_y_val)
接下來就是自己訓練,如果訓練完成後,需要儲存模型,而不是每次預測都訓練一遍,這裡經過閱讀原始碼發現,
可以使用這兩種方法:
儲存引數: