Keras属性错误:“Sequential”对象没有属性“predict_classes”

im9ewurl  于 2023-02-08  发布在  其他
关注(0)|答案(9)|浏览(422)

我正尝试按照此指南https://machinelearningmastery.com/how-to-calculate-precision-recall-f1-and-more-for-deep-learning-models/查找模型性能指标(F1评分、准确性、召回率
这段代码几个月前还能正常工作,但现在返回了各种错误,非常混乱,因为我没有改变这段代码的一个字符。也许软件包更新改变了一些事情?
我在www.example.com上拟合了序列模型model.fit,然后使用model.evaluate查找测试精度。现在我尝试使用model.predict_classes进行类预测(model是一个多类分类器)。代码如下所示:

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”对象没有属性“predict_classes”“
这个确切的代码是工作不久前,所以有点挣扎,感谢任何帮助

egmofgnx

egmofgnx1#

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\引擎\顺序. py:455:用户警告:model.predict_classes()已弃用,并将在2021年1月1日后删除。如果您的模型执行多类分类(例如,如果它使用softmax最后一层激活),请改用:* np.argmax(model.predict(x), axis=-1)。* (model.predict(x) > 0.5).astype("int32"),如果您的模型执行二进制分类(例如,如果它使用sigmoid最后一层激活)。

vhmi4jdf

vhmi4jdf2#

我遇到了同样的错误,我使用以下代码,并成功
替换:

predictions = model.predict_classes(x_test)

有了这个:

predictions = (model.predict(x_test) > 0.5).astype("int32")

python包的类型:tensorflow 2.6.0

velaa5lx

velaa5lx3#

我们可以用以下代码替换有问题的代码行:

y_predict = np.argmax(model.predict(x_test), axis=-1)
sg3maiej

sg3maiej4#

我用下面的代码来预测

y_pred = model.predict(X_test)
y_pred = np.round(y_pred).astype(int)
lh80um4z

lh80um4z5#

在最新版本的Tensorflow中,predict_classes函数已被弃用(之前版本中有关于此问题的警告)。新语法如下所示:

predictions = np.argmax(model.predict(x_test),axis=1)
zpjtge22

zpjtge226#

在Tensorflow 2.7中,可以使用以下代码获取预测类:

predicted = np.argmax(model.predict(token_list),axis=1)
xt0899hw

xt0899hw7#

对于整个数据集的以下代码,

preds = model.predict_classes(test_sequences)

此代码可用于新版本。

y_predict = np.argmax(model.predict(test_sequences), axis=1)

其中,“test_sequence”是要预测的 Dataframe ,axis 是选择列或行。

xriantvc

xriantvc8#

使用此选项是因为predict_classes已在最新版本的tensorflow中移除

predictions = (model.predict(X_test) > 0.5)*1

由于这是一个二进制问题(0或1),因此输出类由概率是否大于0.5来确定。

6l7fqoea

6l7fqoea9#

如果使用的是多类分类,则使用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")`

相关问题