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

TensorFlow多输入模型传入PrefetchDataset预测报张量输入错误求助

报错原因

  • Keras模型实例直接调用model(inputs)的前向传播逻辑,仅支持传入张量/张量列表类型的输入,你传入的Test_dataset是tf.data.PrefetchDataset数据集对象,不属于张量类型,因此触发类型错误。
  • 训练阶段调用model.fit()无报错是因为fit方法原生适配tf.data.Dataset类型输入,内部会自动迭代数据集提取张量批次进行计算,和直接调用模型的输入要求不一致。

适配要求的解决方案

你要求必须使用model()而非predict方法推理,只需要手动迭代测试数据集,逐批次取出张量输入模型即可,示例代码如下:

# 初始化结果存储容器
predictions = []
true_labels = []

# 遍历测试集所有批次
for batch_x, batch_y in Test_dataset:
    # 直接调用模型传入批次输入张量,符合你要求的调用方式
    batch_pred = model(batch_x)
    # 存储当前批次结果,调用numpy()可脱离TensorFlow计算图
    predictions.append(batch_pred.numpy())
    true_labels.append(batch_y.numpy())

预测结果与真实标签存储方案

你可以将所有批次的结果拼接为全量数组后按需存储,示例如下:

import numpy as np
import pandas as pd

# 拼接所有批次的结果为完整数组
all_predictions = np.concatenate(predictions, axis=0).flatten()
all_true_labels = np.concatenate(true_labels, axis=0).flatten()

# 方案1:存储为npy格式,适合后续Python读取处理
np.save("test_predictions.npy", all_predictions)
np.save("test_true_labels.npy", all_true_labels)

# 方案2:存储为csv格式,方便通用工具查看
result_df = pd.DataFrame({
    "true_label": all_true_labels,
    "prediction": all_predictions
})
result_df.to_csv("test_result.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 14:51:02