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

使用Tensorflow/Keras训练神经网络遇精度过低与输出异常问题求助

问题分析与修复方案

核心问题拆解

你的方案存在几个关键错误,直接导致模型输出异常、"精度"指标无意义:

  • 输出层激活函数误用:sigmoid函数输出范围固定在(0,1),但你的任务是回归预测(目标Y是1000、500这类大正数值),模型输出被强制压缩到0-1区间,np.round后自然只有0或1,完全不符合任务需求。
  • 用错评价指标:accuracy是分类任务的指标,用来衡量类别匹配度,对你的回归任务来说毫无参考价值,3%的"精度"不代表模型真实性能。
  • 数据未做预处理:X和Y都是大数值范围的数据,神经网络对数据尺度敏感,未归一化/标准化会导致训练时梯度不稳定,难以收敛到有效解。
  • 优化器选择不合适:SGD的固定学习率对这类回归任务不够友好,不如自适应学习率的优化器容易收敛。

具体修复步骤

  1. 替换输出层激活函数
    把输出层的sigmoid换成线性激活(Keras中Dense层默认就是linear,无需显式指定);如果目标Y全为正数,也可以用relu或softplus避免输出负数:

    model.add(tensorflow.keras.layers.Dense(102))  # 默认linear激活
    # 可选:确保输出非负 -> model.add(tensorflow.keras.layers.Dense(102, activation='relu'))
    
  2. 更换回归任务专属评价指标
    去掉accuracy,改用MAE(平均绝对误差)、MSE(均方误差)等回归指标:

    model.compile(loss='mean_absolute_percentage_error', optimizer='Adam', metrics=['mean_absolute_error', 'mean_squared_error'])
    
  3. 数据归一化/标准化处理
    用sklearn的缩放工具对X和Y分别处理,消除数据尺度差异:

    from sklearn.preprocessing import StandardScaler
    
    # 处理输入特征X
    scaler_X = StandardScaler()
    X_train_scaled = scaler_X.fit_transform(X_train)
    X_dev_scaled = scaler_X.transform(X_dev)
    
    # 处理目标值Y
    scaler_Y = StandardScaler()
    Y_train_scaled = scaler_Y.fit_transform(Y_train)
    Y_dev_scaled = scaler_Y.transform(Y_dev)
    
    # 用缩放后的数据训练
    model.fit(X_train_scaled, Y_train_scaled, epochs=100, batch_size=32, verbose=1)
    # 预测后反缩放得到真实数值
    predictions_scaled = model.predict(X_dev_scaled)
    predictions = scaler_Y.inverse_transform(predictions_scaled)
    
  4. 优化训练配置

    • 把优化器从SGD换成Adam,自适应学习率能让模型更快收敛;
    • 适当增加epochs(比如100-200),观察损失曲线直到损失稳定;
    • 如果模型欠拟合,可增加网络复杂度:比如加一层Dense(128, activation='relu'),或降低Dropout比例(当前模型偏简单,0.2的Dropout可能过度抑制)。
  5. 修正预测后的数据处理
    不需要对预测结果做np.round(i, 0),直接保存反缩放后的连续数值即可。

关于模型适用性

神经网络完全适用于你的任务——既然线性回归能取得不错效果,说明数据存在线性关联,而神经网络可以拟合更复杂的非线性关系,只要配置正确,性能不会弱于线性回归,甚至可能更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:31:09