我训练了一个模型来预测实际值(回归),并希望对测试集进行预测以验证性能(平均绝对误差)。我使用生成器来生成测试集,然后再次创建它以确保获取真实值和预测时的一致性。如果我使用Evaluation_generator评估模型,则MAE为1.80。
gen = generator()
loss, mae = model.evaluate_generator(gen, 1000)
#This produces Test set MAE: 1.80
当我想根据预测值手动计算MAE时,可以使用以下方法从经过训练的模型中获得预测值:
gen = generator()
predictions = model.predict_generator(gen, 1000).flatten()
并获得基本的真值:
gen = generator()
y_test = np.zeros((1000))
i = 0
while i < 1000:
p = next(gen)[1]
y_test[i] = p
i += 1
然后我用以下公式计算MAE:
# Manually compute MAE
np.mean(np.abs(predictions - y_test))
# This produces 13.74
产生的MAE为13.74,这与使用validate_generator计算的MAE有很大不同。我想念什么吗?