You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取深度学习模型的平均绝对误差(MAE)?深度自编码器推荐系统中MAE损失函数定义与模型精度计算

深度自编码器推荐系统:MAE损失定义与指标获取

我来帮你一步步解决MAE相关的问题,结合你给出的代码来调整:

1. 定义MAE损失函数并用于模型训练

Keras已经内置了MAE损失函数,你可以直接使用,也可以自定义实现(内置版本更高效稳定):

方式1:使用内置MAE损失

直接在model.compile里把loss参数改成"mae",同时在metrics里加入"mae",这样训练时会实时输出训练集和验证集的MAE指标:

from tensorflow.keras.optimizers import Adam

# 你的模型定义保持不变
model = deep_model(train_, layers, activation, last_activation, dropout, regularizer_encode, regularizer_decode)
# 修改compile部分,指定MAE损失并监控MAE指标
model.compile(optimizer=Adam(lr=0.001), loss="mae", metrics=["mae"])
model.summary()

方式2:自定义MAE损失函数

如果你想自己实现MAE的计算逻辑,可以这样写(和内置效果完全一致):

import tensorflow as tf

def custom_mae(y_true, y_pred):
    return tf.reduce_mean(tf.abs(y_true - y_pred))

# 编译时使用自定义损失
model.compile(optimizer=Adam(lr=0.001), loss=custom_mae, metrics=["mae"])

2. 使用MAE评估模型精度

在推荐系统场景中,MAE是衡量预测评分与真实评分之间平均绝对误差的核心指标,你可以通过两种方式获取评估结果:

训练过程中实时监控

你的model.fit代码无需大幅改动,训练时会自动输出每个epoch的训练MAE和验证MAE:

data_valid = (train, validate)
hist_model = model.fit(x=train, y=train, epochs=100, batch_size=128, validation_data=data_valid, verbose=2, shuffle=True)

输出内容里会类似val_mae: 0.78这样的字段,数值越小说明模型的预测精度越高

训练后评估验证/测试集MAE

训练完成后,你可以用model.evaluate直接计算验证集或测试集的MAE:

# 计算验证集的MAE
val_loss, val_mae = model.evaluate(validate, validate, verbose=0)
print(f"验证集MAE: {val_mae:.4f}")

# 如果有测试集,同样可以用相同方式计算
# test_loss, test_mae = model.evaluate(test_data, test_data, verbose=0)
# print(f"测试集MAE: {test_mae:.4f}")

3. 获取训练过程中的MAE历史数据

hist_model是训练的历史记录对象,你可以从中提取每个epoch的训练MAE和验证MAE,用于后续的趋势分析或可视化:

# 获取训练集每轮的MAE数据
train_mae_history = hist_model.history['mae']
# 获取验证集每轮的MAE数据
val_mae_history = hist_model.history['val_mae']

# 示例:打印最后一轮的MAE结果
print(f"最后一轮训练MAE: {train_mae_history[-1]:.4f}")
print(f"最后一轮验证MAE: {val_mae_history[-1]:.4f}")

小提示:自编码器做推荐时,输入输出都是用户-物品评分矩阵,所以训练时设置y=train是合理的,MAE能很好反映模型还原真实评分的能力~

内容的提问来源于stack exchange,提问作者kams

火山引擎 最新活动