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

TensorFlow时间序列预测教程改参数后报OverflowError如何解决

报错根因

你遇到的报错本质是Keras进度条渲染逻辑触发的异常:代码中self.target是evaluate阶段的总步数,当验证集/测试集对应的tf.data.Dataset为空时,self.target等于0,此时np.log10(0)会返回负无穷,转换为整数时就触发了OverflowError。

数据集为空的直接原因是:你当前的参数配置下,单样本需要的序列总长度(输入长度 + 预测步长,即input_width + OUT_STEPS)大于划分后的验证集/测试集的序列长度,滑动窗口逻辑无法生成任何有效样本,最终得到空数据集。

你用7万多条数据时没有报错,是因为划分后的验证集、测试集长度远大于窗口需要的总长度,可以正常生成样本。

排查步骤

  • 先执行print(len(val_df), len(test_df))打印验证集、测试集的原始样本数
  • 再执行print(wide_window.val.cardinality().numpy()),如果输出为0即可确认是验证集为空的问题

解决方法

  • 调整数据集划分比例:降低验证集、测试集的占比,保证划分后每个子集的样本数都大于input_width + OUT_STEPS,你的1440条总数据可以调整为9:0.5:0.5的训练/验证/测试划分比例
  • 缩小窗口参数:如果不想调整划分规则,可以降低input_width或者OUT_STEPS的数值,保证input_width + OUT_STEPS小于验证集、测试集的最小长度
  • 临时规避进度条问题:在evaluate方法中添加verbose=0参数,关闭进度条渲染即可绕过该报错,写法参考你测试集评估的代码行
  • 补充输入数据:如果条件允许,增加输入时间序列的总长度,保证划分后的所有子集都满足窗口生成的长度要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:30:05