dmlc--dgl
9b34b1c22a
* stgcn_wave model * fix readme * rm data file * split sensors2graph * rm dead code * fix README * rename class * rm seed & dead code * Update README.md * rm dead code & networkx * add num_layer papram, make model structure adjustable * fix * add model structure controller string, make code easier to understand and make model strcture more flexible * Update main.py * Update model.py * fix * Update README.md Co-authored-by: Ubuntu <ubuntu@ip-172-31-14-255.ap-northeast-1.compute.internal> Co-authored-by: Quan (Andy) Gan <coin2028@hotmail.com> Co-authored-by: Da Zheng <zhengda1936@gmail.com>
33 行
965 B
Python
33 行
965 B
Python
import torch
|
|
import numpy as np
|
|
|
|
|
|
|
|
def evaluate_model(model, loss, data_iter):
|
|
model.eval()
|
|
l_sum, n = 0.0, 0
|
|
with torch.no_grad():
|
|
for x, y in data_iter:
|
|
y_pred = model(x).view(len(x), -1)
|
|
l = loss(y_pred, y)
|
|
l_sum += l.item() * y.shape[0]
|
|
n += y.shape[0]
|
|
return l_sum / n
|
|
|
|
|
|
def evaluate_metric(model, data_iter, scaler):
|
|
model.eval()
|
|
with torch.no_grad():
|
|
mae, mape, mse = [], [], []
|
|
for x, y in data_iter:
|
|
y = scaler.inverse_transform(y.cpu().numpy()).reshape(-1)
|
|
y_pred = scaler.inverse_transform(model(x).view(len(x), -1).cpu().numpy()).reshape(-1)
|
|
d = np.abs(y - y_pred)
|
|
mae += d.tolist()
|
|
mape += (d / y).tolist()
|
|
mse += (d ** 2).tolist()
|
|
MAE = np.array(mae).mean()
|
|
MAPE = np.array(mape).mean()
|
|
RMSE = np.sqrt(np.array(mse).mean())
|
|
return MAE, MAPE, RMSE
|