【问题标题】:AttributeError: 'Sequential' object has no attribute 'predict_classes'/AttributeError:“顺序”对象没有属性“predict_classes”/
【发布时间】:2021-10-23 06:25:09
【问题描述】:

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

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

第一行返回错误:

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)    

【问题讨论】:

  • model.predict_classes 在最近的版本中不再存在。而是使用preds=model.predict,然后使用np.argmax(preds)
  • 您能否在我的代码的上下文中提供此内容。所以我可以将它集成到我的代码中
  • 嗨,王牌。请在您的问题标题中提及与错误相关的库(在这种情况下为 cv2),以便会员将来可以找到它。

标签: python opencv machine-learning


【解决方案1】:

我相信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),如果您的 >model 进行多类分类(例如,如果它使用 softmax last->layer 激活)。* (model.predict(x) > 0.5).astype("int32"),如果您的 >model 进行二元分类(例如,如果使用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)
---------------------------------------------------------------------------
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'

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

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

参考:Get Class Labels from predict method in Keras

【讨论】:

  • 请不要将代码分享为图片。始终将代码作为文本。
  • @Kaveh 哎呀,忘了只裁剪错误消息。感谢您的提醒。
  • 感谢您对问题的有用回答,但要点仍然适用:将这些图像替换为 它们包含的文本
  • @ChristophRackwitz 老实说,我不知道必须对错误消息或任何回溯消息进行格式化。谢谢你让我知道。编辑它。
  • 这个想法是使帖子可搜索/可查找,即有价值。否则,您将依赖应用 OCR 的搜索引擎,这会浪费时间(而且很容易出错,如果这样做的话!),如果您可以首先发布文本。
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 2020-01-29
  • 2020-01-03
  • 2021-10-28
相关资源
最近更新 更多