TensorFlow Keras CategoricalCrossentropy模型预测结果存储位置问询
获取TensorFlow模型预测值的解决方案
你当前的问题是没有调用模型的预测方法生成预测值,y_test只是拆分出来的真实标签,y_true和y_pred需要你手动生成。以下是具体步骤:
1. 生成模型预测值
训练完成后,调用model.predict()方法传入测试数据即可得到预测结果。根据你的代码,有两种方式:
方式一:直接用测试特征矩阵X_test
# 生成测试集每个样本的类别概率(softmax输出) y_pred_probs = model.predict(X_test, verbose=0) # 将概率转换为类别标签(取概率最大的类别索引) y_pred = y_pred_probs.argmax(axis=1)
方式二:用已创建的validation_dataset
# 从验证数据集生成预测概率 y_pred_probs = model.predict(validation_dataset, verbose=0) y_pred = y_pred_probs.argmax(axis=1)
注:
verbose=0是关闭预测过程的日志输出,可根据需要调整为1或2。
2. 转换真实标签格式
因为你用了CategoricalCrossentropy损失函数,y_test应该是one-hot编码的格式。要和预测标签对比,需要把它转成类别索引:
# 将one-hot编码的真实标签转换为类别索引 y_true = y_test.argmax(axis=1)
3. 验证结果
现在可以打印真实标签和预测标签对比:
print("前10个真实标签:", y_true[:10]) print("前10个预测标签:", y_pred[:10])
关键说明
model.fit()返回的history对象只记录训练过程中的指标变化(比如精度、损失),不会自动生成或保存预测值,必须手动调用predict()方法。- 模型最后一层用了
softmax激活,输出的是每个类别的概率值,所以需要用argmax(axis=1)提取概率最大的类别,得到和真实标签对应的索引值。
内容的提问来源于stack exchange,提问作者joshAU
相关产品推荐
相关产品推荐

