AttributeError:“顺序”对象没有属性“predict_classes”/

1 python opencv machine-learning

每当我尝试运行此代码时,它都会显示:

 AttributeError: 'Sequential' object has no attribute 'predict_classes'
Run Code Online (Sandbox Code Playgroud)

第一行返回错误:

result = str(model.predict_classes(roi, 1, verbose = 0)[0])
cv2.putText(copy, getLetter(result), (300 , 100), cv2.FONT_HERSHEY_COMPLEX, 2, (0, 255, 0), 2)
cv2.imshow('frame', copy)    
Run Code Online (Sandbox Code Playgroud)

CMY*_*ang 5

我相信model.predict_classes()已被弃用。如果您使用 Jupyter Notebook 和 Tensorflow 2.5.0,您将收到如下警告:

C:\Anaconda3\envs\tf-gpu-2.5\lib\site-packages\tensorflow\python\keras\engine\sequential.py:455: UserWarning:model.predict_classes()已弃用,并将在 2021-01->01 后删除。请改用:* np.argmax(model.predict(x), axis=-1),如果您的 >模型进行多类分类(例如,如果它使用softmax最后一层激活)。* (model.predict(x) > 0.5).astype("int32"),如果您的 >模型进行二元分类(例如,如果它使用sigmoid最后一层>激活)。warnings.warn('model.predict_classes()已弃用并且 '

正如警告所建议的,请改用:

  • np.argmax(model.predict(x), axis=-1),如果您的模型进行多类分类(例如,如果它使用softmax最后一层激活)。
  • (model.predict(x) > 0.5).astype("int32"),如果您的模型进行二元分类(例如,如果它使用sigmoid最后一层激活)。

我刚刚使用 Python 3.9.6 升级到 Tensorflow 2.6.0,在 TF 2.6.0 中使用model.predict_classes()将直接显示错误。

predict = NN.predict_classes(X_test_NL)
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-14-f1898c8da755> in <module>
----> 1 predict = NN.predict_classes(X_test_NL)

AttributeError: 'Sequential' object has no attribute 'predict_classes'
Run Code Online (Sandbox Code Playgroud)

如果必须使用predict_classes(),则必须回滚到以前版本的tensorflow。

或者将您从使用中获得的概率转换.predict()为类标签。

参考文献:从 Keras 中的预测方法获取类标签

  • 这个想法是,这使得帖子*可搜索/可找到*,即*有价值*。否则,您将依赖于应用 OCR 的搜索引擎,这会浪费时间(而且很容易出错,如果这样做的话!),如果您可以首先发布文本。 (3认同)
  • 请不要将代码作为图像共享。始终将代码作为文本。 (2认同)
  • 感谢您对问题的有用回答,但这一点仍然适用:将这些图像替换为*它们包含的文本*。 (2认同)