我无法理解以下代码中发生的事情。我已经定义了 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 与我计算的不同。起初我尝试使用回调来保存我最好的模型,然后用它进行预测,但在这种情况下,值也不同。
我错过了什么?