为什么预测后 MAE 不同(神经网络)?

数据挖掘 Python 神经网络 深度学习 喀拉斯 预言
2021-10-14 18:31:35

我无法理解以下代码中发生的事情。我已经定义了 x_train、y_train、x_val、y_val 和 x_test,它们定义了我的训练、验证和测试集。我正在使用 keras 库。

model = Sequential()
model.add(Dense(8,input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(1, activation='linear'))
model.summary()

rms = optimizers.RMSprop(lr=0.0003)

model.compile(optimizer=rms,
              loss='mean_squared_error',
              metrics=['mae'])
history = model.fit(x_train, y_train, epochs=1000, validation_data=(x_val, y_val), batch_size = 32)


pred_train = model.predict(x_train)
pred_val = model.predict(x_val)
pred_test = model.predict(x_test) 


MAE_train = np.mean(np.absolute(y_train - pred_train ))
print('Mean absolute error for  training is MAE = '+str(MAE_train))
MAPE_train = 100 * np.mean(np.absolute(y_train - pred_train )/ y_train)
print('MAPE for training is MAPE = '+str(MAPE_train))
print(pred_val)
MAE_val= np.mean(np.absolute(y_val - pred_val ))
print('MAE  val is MAE = '+str(MAE_val))
MAPE_val = 100 * np.mean(np.absolute(y_val - pred_val )/ y_val)
print('MAPE for val is MAPE = '+str(MAPE_val))

这是执行的结果:

在此处输入图像描述

我不明白的是,训练结束时显示的 val_mean_absolute_error 与我计算的不同。起初我尝试使用回调来保存我最好的模型,然后用它进行预测,但在这种情况下,值也不同。

我错过了什么?

1个回答

MAE_val的是:

MAE_val= np.mean(np.absolute(y_val - pred_val ))

另一方面,您将模型安装在:

history = model.fit(x_train, y_train, ...

所以你是在不同的物体上计算它们。一侧的训练数据和最终评估的验证集。