AttributeError: 'Model' object has no attribute 'predict_classes' 的解决方案

使用keras训练好了mnist数字识别模型后,准备拿来做预测。
以下是预测代码:

   #coding:utf-8
    import cv2
    import numpy as np
    from keras.models import load_model
    model = load_model('self.h5')    
    image = cv2.imread('Predict_image/7.jpg', 0)
    img = cv2.imread('Predict_image/7.jpg', 0)    
    img = (img.reshape(1,28,28,1)).astype("float32")/255
    predict = model.predict_classes(img)
    print ('识别为:')
    print (predict)
    cv2.imshow("Image1", image)
    cv2.waitKey(0)

之前这个代码是有效的,但是在更换训练模型后,代码出现提示:

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

在这里插入图片描述
在国外网站上找到了解决办法。

The predict_classes method is only available for the Sequential class (which is the class of your first model) but not for the Model class (the class of your second model).

With the Model class, you can use the predict method which will give you a vector of probabilities and then get the argmax of this vector (with np.argmax(y_pred1,axis=1)).

原因很简单,两次训练时,网络结构不同。
第一次用的网络是在model=Sequential()下添加模块的的方法,也就是所谓的顺序模型。Sequential class可以使用model.predict_classes()的方法来实现预测;第二次用的方法,是编写好网络结构后使用model=Model()综合起来的方法,也就是Model class,无法使用model.predict_classes(),但是可以使用组合形式预测。

predict = model.predict_classes(img)

改为

predict = model.predict(img)
predict=np.argmax(predict,axis=1)

即可。

参考网址:
https://stackoverflow.com/questions/44806125/attributeerror-model-object-has-no-attribute-predict-classes
希望本博客对您的问题有所帮助!

  • 36
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值