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

LSTM血糖时序预测报错NPY_DATETIME无法转Tensor问题咨询

报错根因

触发ValueError: Failed to convert a NumPy array to a Tensor (Unsupported numpy type: NPY_DATETIME)的直接原因是传入模型的训练/测试特征或标签数组中包含numpy.datetime64格式的时间数据,TensorFlow的张量计算不支持原生日期时间类型。

排查修复流程
  • 先定位存在类型问题的数组:在调用model.fit()前运行以下代码,打印所有输入数组的数据类型,确认哪组数据包含datetime类型值:
print("x_train dtype:", x_train.dtype)
print("x_test dtype:", x_test.dtype)
print("y_train dtype:", y_train.dtype)
print("y_test dtype:", y_test.dtype)
  • 清洗时间字段:如果时间列是你需要用到的特征,不要直接传入原始datetime值,需转换为数值型格式:
    • 可转换为秒/毫秒级时间戳的浮点/整数值
    • 可拆解为小时、星期、月份等周期数值,做归一化处理后再输入
      如果不需要时间作为特征,直接从特征集中删除所有时间列即可。
  • 类型兜底转换:完成特征处理后,强制将所有输入模型的数组转换为float32类型,彻底避免类型不兼容问题:
x_train = x_train.astype("float32")
x_test = x_test.astype("float32")
y_train = y_train.astype("float32")
y_test = y_test.astype("float32")
现有代码的任务适配问题

你当前的模型配置和血糖水平预测任务不匹配,即便解决类型报错也无法得到正确结果:

  • 血糖值预测是连续值回归任务,不是二分类任务。当前代码用sigmoid做输出层激活、binary_crossentropy做损失、accuracy做评估指标,完全不符合回归任务要求。
  • 对应部分修正参考:
# 输出层移除sigmoid激活,直接输出连续预测值
model.add(Dense(1))
# 回归任务使用均方误差作为损失,平均绝对误差作为评估指标
model.compile(optimizer='adam', loss='mse', metrics=['mae'])

内容的提问来源于stack exchange,提问作者Jose Ramon Medina Lorente

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:51:24