我正尝试按照此指南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”“
这个确切的代码是工作不久前,所以有点挣扎,感谢任何帮助
9条答案
按热度按时间egmofgnx1#
TensorFlow版本2.6中已删除此函数。根据rstudio参考中的keras
更新至
如果您使用的是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
最后一层激活)。vhmi4jdf2#
我遇到了同样的错误,我使用以下代码,并成功
替换:
有了这个:
python包的类型:tensorflow 2.6.0
velaa5lx3#
我们可以用以下代码替换有问题的代码行:
sg3maiej4#
我用下面的代码来预测
lh80um4z5#
在最新版本的Tensorflow中,
predict_classes
函数已被弃用(之前版本中有关于此问题的警告)。新语法如下所示:zpjtge226#
在Tensorflow 2.7中,可以使用以下代码获取预测类:
xt0899hw7#
对于整个数据集的以下代码,
此代码可用于新版本。
其中,“test_sequence”是要预测的 Dataframe ,axis 是选择列或行。
xriantvc8#
使用此选项是因为predict_classes已在最新版本的tensorflow中移除
由于这是一个二进制问题(0或1),因此输出类由概率是否大于0.5来确定。
6l7fqoea9#
如果使用的是多类分类,则使用
np.argmax(model.predict(x), axis=-1)
例如:
或者,如果手头有二进制分类问题,则使用
(model.predict(x) > 0.5).astype("int32")
例如: