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

TensorFlow中target作为模型输入之一时如何使用model.predict推理

正确推理实现方法

首先要明确:官方示例里编写的keras.Model(inputs=[inputs, targets], outputs=predictions)根本就不是面向推理场景设计的模型。它把targets设为模型输入,纯粹是为了配合LogisticEndpoint层内部封装的损失计算、指标统计逻辑——让训练阶段的fit流程能自动把标签匹配到对应的输入节点,无需手动在compile接口里传入loss参数。直接拿这个模型跑predict,本来就会因为缺少targets输入触发维度不匹配的错误。

实操步骤

  • 不要用给targets输入位塞全零/随机张量的方式凑参数:这种操作虽然能让代码跑通,但LogisticEndpoint在生成预测值的阶段根本不读取targets的内容,传入的标签完全是冗余计算,还容易给后续维护造成逻辑歧义。
  • 基于训练完成的权重,单独搭建推理专用模型:输入仅保留原始特征节点,输出链路跳过需要targets参与的损失计算分支,只保留预测值生成逻辑即可。

对应的可直接复用的代码实现:

# 复用原模型已定义的logits张量
# 调用LogisticEndpoint时不传targets,层内部仅返回经过sigmoid激活的预测概率
inference_output = LogisticEndpoint(name="pred_output")(logits)
# 定义纯推理模型,输入仅保留原始特征inputs
inference_model = keras.Model(inputs=inputs, outputs=inference_output)
# 把之前训练好的模型权重直接同步到推理模型,无需重新训练
inference_model.set_weights(model.get_weights())

# 推理阶段仅需传入待预测的特征,完全不需要提供target
test_data = np.random.random((2, 3))
prediction = inference_model.predict(test_data)

补充说明

LogisticEndpoint层本身的调用逻辑就适配了两种使用场景:

  • 训练态调用:传入targets时,层内部自动计算损失、记录训练指标,同时返回预测值,配合fit流程完成训练
  • 推理态调用:不传targets时,层内部直接跳过所有损失、指标计算逻辑,仅返回基于logits生成的预测概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 00:54:04