我的回归神经网络训练时准确率卡在固定值无法提升如何解决?
回归模型训练准确率停滞问题解决方案
核心问题:误用分类任务评估指标
准确率(accuracy)是分类任务专属的评估指标,计算逻辑是统计预测值与真实值完全相等的样本占比。你当前做的是回归任务,预测的是连续的分数值,标签经过缩放后是0-1区间的浮点数,模型输出的预测值几乎不可能和真实值完全一致,因此准确率始终处于极低水平且不会上升属于正常现象,该指标在回归场景下完全没有参考价值,你之前观察到的损失下降才是模型正在学习的正确信号。
修正步骤
1. 替换适配回归任务的评估指标
将模型编译环节的metrics参数更换为回归任务常用的平均绝对误差(MAE)、均方根误差(RMSE)即可,修改后的代码如下:
model.compile( loss='mse', optimizer=keras.optimizers.SGD(learning_rate=0.01), metrics=['mae'] )
后续训练时只需观察loss和mae的下降情况,不需要再关注准确率指标。
2. 可选优化建议
- 当前使用SGD优化器收敛速度较慢,可以替换为Adam优化器,学习率设置为0.001,能够大幅加快收敛速度:
optimizer=keras.optimizers.Adam(learning_rate=0.001) - 如果需要直接输出原始分数值,可删除
data_y = data_y / 100这行归一化代码,同时将输出层的sigmoid激活函数更换为线性激活(即不设置activation参数)。 - 从你提供的特征与标签的散点图来看,特征和标签存在明显的相关性,当前模型结构完全可以拟合数据集,不需要调整隐藏层、神经元数量等结构参数。
内容的提问来源于stack exchange,提问作者Ikaruga
相关产品推荐
相关产品推荐

