Keras报错:'Sequential'对象无'predict_classes'属性问题咨询
报错原因
predict_classes 是Keras 2.6版本之前的接口,TensorFlow升级到2.6及以上版本后,该方法被正式从Sequential类中移除,因此旧代码运行会抛出AttributeError。
解决方案
你使用的是softmax激活的多分类模型,直接将最后一行报错代码替换为以下内容即可得到和原接口完全一致的类别预测结果:
import numpy as np # 先获取所有测试样本的各类别预测概率 yhat_probs = model.predict(X_test, verbose=0) # 取概率最高的类别索引作为预测结果 yhat_classes = np.argmax(yhat_probs, axis=1)
后续指标计算补充
如果你的测试集标签y_test是one-hot编码格式,计算F1、准确率、召回率等指标前,需要先把真实标签也转换为一维类别索引:
y_test_classes = np.argmax(y_test, axis=1)
之后可直接调用sklearn的指标工具计算对应值,示例如下:
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 多分类任务可根据需求调整average参数,常用weighted、macro两类 acc = accuracy_score(y_test_classes, yhat_classes) precision = precision_score(y_test_classes, yhat_classes, average='weighted') recall = recall_score(y_test_classes, yhat_classes, average='weighted') f1 = f1_score(y_test_classes, yhat_classes, average='weighted')
内容的提问来源于stack exchange,提问作者Greig Fotheringham
相关产品推荐
相关产品推荐

