You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中model.predict()对所有测试输入返回相同预测结果求助

解决Keras回归模型预测输出全相同的问题

这种情况我之前也碰到过,看似矛盾(评估误差极小但预测全一致),其实大概率是数据或训练环节的细节出了问题,咱们一步步排查:

1. 先排查训练/测试数据的核心问题

这是最常见的触发原因:

  • 检查标签分布:先打印训练集标签ytrain的统计特征,用numpy就能快速实现:
    import numpy as np
    print(f"ytrain均值: {np.mean(ytrain)}, 标准差: {np.std(ytrain)}")
    print(f"ytrain最小值: {np.min(ytrain)}, 最大值: {np.max(ytrain)}")
    
    如果ytrain的标准差接近0,说明所有标签几乎都是同一个值,模型自然会学到输出这个固定值——评估时ytest大概率也接近这个值,所以误差极小,但预测结果必然全一致。
  • 检查数据归一化的一致性:你提到已完成数据归一化,要确认xtest是用训练集的归一化参数转换的,而不是重新对xtest做拟合。比如用StandardScaler的正确流程是:
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    xtrain_scaled = scaler.fit_transform(xtrain)
    xtest_scaled = scaler.transform(xtest)  # 这里绝对不能用fit_transform!
    
    如果错误地对xtest用了fit_transform,会导致测试集输入分布和训练集完全脱节,模型根本无法做出有效预测。

2. 检查模型训练过程的细节

  • 打开训练日志,观察loss变化:你训练时用了verbose=0,看不到每一轮的loss走势,改成verbose=1重新训练:
    model_final = model.fit(xtrain, ytrain, epochs=100, batch_size=10, verbose=1)
    
    如果训练一开始loss就极低且几乎没有变化,那基本可以确定是标签本身没有波动;如果loss是逐步下降到极低值,再继续排查下面的点。
  • 排查正则化是否过强:你给两个Dense层都加了l2(0.001)的正则化,如果你的数据本身信号比较弱,正则化可能会把模型权重压制到接近0,导致输出层只能输出偏置的平均值(也就是固定值)。可以先去掉正则化,简化模型测试:
    def model_final():
        model = models.Sequential()
        model.add(layers.Dense(64, activation='relu', input_shape=(xtrain.shape[1],)))
        model.add(layers.Dense(64, activation='relu'))
        model.add(layers.Dense(1))
        model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
        return model
    
    如果去掉正则化后预测结果不再一致,说明之前的正则化强度不适合你的数据。
  • 检查模型权重是否异常:打印模型第一层的权重,看看是不是都接近0:
    weights, biases = model.layers[0].get_weights()
    print(f"权重均值: {np.mean(weights)}, 权重标准差: {np.std(weights)}")
    
    如果权重几乎全是0,说明正则化过强或者数据没有有效特征供模型学习。

3. 其他可能的小细节

  • 确认训练集和测试集的划分是否正确:有没有可能xtest的所有输入特征都几乎相同?打印xtest的统计特征排查。
  • 尝试减少训练轮数:虽然你的评估误差小,但如果训练轮数过多导致模型过度拟合到固定标签,也可能出现这种情况,可以试试把epochs降到20-30再测试。

按照上面的步骤排查,应该能快速定位问题所在。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:26:58