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

Keras多变量时间序列预测模型训练时MAE与loss返回NaN异常

排查解决步骤

  • 全量校验数据异常值
    运行df.isnull().sum().sum()检查是否存在空值,运行np.isinf(df).values.sum()检查是否存在无穷值(inf/-inf)。
    重点核查标准化逻辑:标准化必须仅使用训练集的均值、标准差计算,再应用到验证集和测试集,如果提前用全量数据做标准化,或是某列特征标准差为0时直接执行(x-mean)/std计算,会直接生成inf/NaN值。
  • 检查窗口生成的批次数据
    Baseline仅做输入复制不会触发数值异常,可单独提取Conv窗口的批次数据做校验:
    for inputs, labels in conv_window.train.take(5):
        print("输入含NaN:", tf.reduce_any(tf.math.is_nan(inputs)).numpy())
        print("标签含NaN:", tf.reduce_any(tf.math.is_nan(labels)).numpy())
    
    如果返回存在NaN,说明窗口生成时对不足长度的尾部数据做了空值填充,未做截断处理。
  • 修复梯度爆炸问题
    193维特征叠加卷积、全连接层时容易出现梯度爆炸,导致参数更新为NaN,可在优化器中增加梯度裁剪:
    将优化器替换为tf.optimizers.Adam(clipnorm=1.0),限制梯度的最大范数,避免梯度过大导致参数异常。
  • 定位异常特征列
    单特征场景运行正常,可逐步增加输入特征的数量,从2列、10列逐步增加到全量193列,定位到触发NaN问题的特定特征列后单独处理。
  • 校验数据类型
    检查所有特征列是否均为float32/float64数值类型,避免混入字符串、时间戳等非数值类型,导致模型计算异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:45:03