报错‘Sequential‘ object has no attribute ‘predict_classes‘,解决predict_classes无法使用的问题

最近在学习深度学习网络的时候,按照书上的代码来敲,但是发现一个问题,就是

AttributeError: 'Sequential' object has no attribute 'predict_classes'

这是因为版本问题,使用不了predict_classes函数,但是没关系,使用np.argmax函数可以轻松解决

原代码:

prediction = model.predict_classes(X_test)
def pre_results(i):
    plot_image(X_test1[i])#显示测试集图像
    print('Y_test1=',Y_test1[i])#显示测试集图像标签编号
    print("pre_result = ",prediction[i])#显示预测结果
pre_results(0)
pre_results(2)

以mnist数据集,LeNet这个例子分析,第一行输入的是测试集图像(多张图像),那么经过predict_classes所得到的prediction是每个图像所对应的图像编号,而predict_class的实现方式是如何呢,首先对于测试集中每张图像,先计算该图像在每个类别的可能性,然后找出最大可能性所对应的索引,索引对应的类别就是程序预测的结果

按照这个逻辑,我们可以先使用predict函数求出每一项的所有类别的可能性,然后使用np.argmax()函数来得到最大可能性所对应的索引,这就是我们的最终结果

测试图像,对应X_test[0]

[3.1139207e-05 2.2548358e-05 3.1966437e-04 9.3736342e-04 6.8001400e-06
 1.4975133e-05 9.5684662e-08 9.9833894e-01 7.2426815e-06 3.2126979e-04]

测试图像经过predict()函数得到的可能性列表(索引从0开始),很明显,最大可能性索引为7,输出结果如下

Y_test1= 7
pre_result =  7

修改后的代码(记得 import numpy as np):

prediction = model.predict(X_test)

def pre_results(i):
    plot_image(X_test1[i]) # 显示测试集图像
    print('Y_test1=',Y_test1[i]) # 显示测试集图像标签编号
    print(prediction[i]) # 输出测试集中第i张图片的类别可能性列表
    print("pre_result = ",np.argmax(prediction[i])) # 显示预测结果
pre_results(0) # 取测试集中一张图片进行预测
pre_results(2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值