如何向已训练的TensorFlow模型传入自定义输入并查看输出?
TensorFlow模型传入自定义输入获取预测结果的实现方法
训练完成后直接调用模型的predict()方法即可完成推理,需要注意输入数据的形状必须和模型训练时要求的输入维度匹配,你当前的模型输入要求每个样本包含3个特征,输入张量的形状需要满足(批次大小, 3)的格式,哪怕只预测单个样本也不能直接传入一维列表。
具体操作代码可以直接追加在你现有训练代码的末尾:
import numpy as np # 自定义单样本输入 single_sample = [100, 2, 4] # 转换为numpy数组并调整形状为(1, 3),对应1个样本、每个样本3个特征 input_data = np.array(single_sample).reshape(1, -1) # 执行预测,verbose=0用于关闭预测过程的日志打印 pred_result = model.predict(input_data, verbose=0) # 输出结果 print(f"输入{single_sample}的sigmoid预测概率:{pred_result[0][0]:.4f}") # 二分类场景下取0.5为阈值,输出最终分类结果 pred_label = 1 if pred_result[0][0] >= 0.5 else 0 print(f"阈值0.5下的分类结果:{pred_label}")
批量预测多个自定义样本
如果需要一次性推理多个样本,直接把多个样本组成二维列表传入即可,不需要额外修改逻辑:
# 多个自定义样本,每个样本3个特征 batch_samples = [ [100, 2, 4], [5, 30, 22], [1, 0, 49] ] batch_input = np.array(batch_samples) batch_pred = model.predict(batch_input, verbose=0) # 打印每个样本的结果 for sample, pred in zip(batch_samples, batch_pred): print(f"输入{sample},预测概率{pred[0]:.4f},分类{1 if pred[0]>=0.5 else 0}")
注意事项
- 禁止直接传入一维列表如
[100,2,4]调用predict,会触发维度不匹配报错,必须保证输入最后一维的长度和模型定义的input_shape一致(当前模型为3) - 你当前训练集的特征取值范围是0-50,传入远超出这个范围的数值(比如示例里的100)时,预测结果的可信度会大幅降低,属于正常的分布偏移问题,不是代码错误
- 预测时如果不需要看进度条日志,加上
verbose=0参数即可关闭输出
内容的提问来源于stack exchange,提问作者user17098578
相关产品推荐
相关产品推荐

