![](/img/trans.png)
[英]AttributeError: 'Sequential' object has no attribute 'predict_classes'
[英]Keras AttributeError: 'Sequential' object has no attribute 'predict_classes'
我试图按照本指南https://machinelearningmastery.com/how-to-calculate-precision-recall-f1-and-more-for-deep-learning-models/查找 model 性能指标(F1 分数、准确度、召回率)
这个确切的代码几个月前还在工作,但现在返回各种错误,非常令人困惑,因为我没有更改此代码的一个字符。 也许 package 更新改变了一切?
我将顺序 model 与 model.fit 拟合,然后使用 model.evaluate 来查找测试精度。 现在我正在尝试使用 model.predict_classes 进行 class 预测(模型是多类分类器)。 代码如下图:
model = Sequential()
model.add(Dense(24, input_dim=13, activation='relu'))
model.add(Dense(18, activation='relu'))
model.add(Dense(6, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
-
history = model.fit(X_train, y_train, batch_size = 256, epochs = 10, verbose = 2, validation_split = 0.2)
-
score, acc = model.evaluate(X_test, y_test,verbose=2, batch_size= 256)
print('test accuracy:', acc)
-
yhat_classes = model.predict_classes(X_test)
最后一行返回错误“AttributeError: 'Sequential' object has no attribute 'predict_classes'”
这个确切的代码不久前还在工作,所以有点挣扎,感谢您的帮助
此功能已在 TensorFlow 2.6 版中删除。 根据rstudio参考中的keras
更新到
predict_x=model.predict(X_test)
classes_x=np.argmax(predict_x,axis=1)
或者使用 TensorFlow 2.5 或更高版本。
如果您使用的是 TensorFlow 2.5 版,您将收到以下警告:
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
最后一层激活)。
我遇到了同样的错误,我使用下面的代码,成功了
替换:
predictions = model.predict_classes(x_test)
有了这个:
predictions = (model.predict(x_test) > 0.5).astype("int32")
python包类型:Tensorflow 2.6.0
我们可以用以下代码替换有问题的代码行:
y_predict = np.argmax(model.predict(x_test), axis=-1)
我使用以下代码进行预测
y_pred = model.predict(X_test)
y_pred = np.round(y_pred).astype(int)
在 Tensorflow 2.7 中,可以使用以下代码获得预测类:
predicted = np.argmax(model.predict(token_list),axis=1)
在最新版本的 Tensorflow 中, predict_classes
函数已被弃用(在以前的版本中对此有警告)。 新语法如下:
predictions = np.argmax(model.predict(x_test),axis=1)
使用它,因为最新版本的 tensorflow 删除了 predict_classes
predictions = (model.predict(X_test) > 0.5)*1
由于这是一个二元问题(0 或 1),因此输出类别取决于概率是否大于 0.5。 因此上面的代码
对于下面的整个数据集的代码,
preds = model.predict_classes(test_sequences)
此代码可用于新版本。
y_predict = np.argmax(model.predict(test_sequences), axis=1)
在此,“ test_sequence ”是您必须预测的数据框,轴是选择列或行。
我对此有疑问,当我使用
np.argmax(model.predict(x_test), axis=-1)
替换以前的'predict_classes',然后我使用'accuracy_score'来获得准确度分数,分数很低。 但是当我使用
predictions = (model.predict(x_test) > 0.5).astype("int32")
准确度得分正常且正确。 其他代码相同。
如果您使用的是多类分类,则使用np.argmax(model.predict(x), axis=-1)
例如:
predictions = np.argmax(model.predict(x_test),axis=1)
或者,如果您手头有二进制分类问题,请使用(model.predict(x) > 0.5).astype("int32")
例如:
predictions=(model.predict(X_test) > 0.5).astype("int32")
如果我想在 CNN 中预测是否患有癌症。 那么上述错误将如何解决。 BEACUSAE 我们应该将其分类为 1 或零。
代码是:
input_arr = img_to_array(img)/255
plt.imshow(input_arr)
plt.sh`enter code here`ow
input_array = np.expand_dim(input_arr,axis=0)
pred = model.predict(input_arr)[0],[0]
pred
第 5 行代码中的错误 ID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.