1. 程式人生 > 實用技巧 >圖網路學習筆記——ERNIE實踐

圖網路學習筆記——ERNIE實踐

前言

本次圖網路學習筆記主要是百度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)

接下來就是自己訓練,如果訓練完成後,需要儲存模型,而不是每次預測都訓練一遍,這裡經過閱讀原始碼發現,


可以使用這兩種方法:
儲存引數: