模型.predict_classes已弃用——用什么代替?



我一直在尝试重新访问我的python代码用于神经网络预测,我在运行代码后意识到model.predict_classes自2021年1月1日起已弃用。

你能支持我知道我可以用什么代替我的代码吗?

代码行为:

y_pred_nn = model.predict_classes(X_test)

问题:

NameError
Traceback (most recent call last)
<ipython-input-11-fc1ddbecb622> in <module>
----> 1 print(y_pred_nn)
NameError: name 'y_pred_nn' is not defined

关于如何处理这个问题的最好解释是:

https://androidkt.com/get-class-labels-from-predict-method-in-keras/

首先使用model.predict()提取类概率。然后根据类的数量执行以下操作:

二元分类使用阈值来选择将决定类别0或1的概率

np.where(y_pred > threshold, 1,0)

例如,使用阈值0.5

Mutli-class分类选择概率最高的类

np.argmax(predictions, axis=1)

多标记分类在每个示例可以有多个输出类的地方,使用一个阈值来选择应用哪个标签。

y_pred = model.predict(x, axis=1)
[i for i,prob in enumerate(y_pred) if prob > 0.5]

如果你的模型执行多类分类(例如,如果它使用softmax最后一层激活)使用:

np.argmax(model.predict(x), axis=-1)

如果你的模型执行二进制分类(例如,如果它使用sigmoid最后一层激活)使用:

(model.predict(X_test) > 0.5).astype("int32")

model.predict_classes已弃用,如@Kaveh所述,请使用model.predict()函数代替。

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

了解model.predict()的更多信息,请点击此链接。

model.predict_classes()为参数提供了输出类。由于某些原因,它已从Keras中删除。相反,如果使用model.predict(),最终将得到输入样本的输出预测。主要用于大批量输入的批量处理。虽然它们不是同一件事,但你会知道你的目标是什么。

model.predict_classes可以用以下代码片段

代替然而,在此之前,我们需要提到以下内容:

ANN_model.fit(X_train,y_train, epochs=150) #Fitting the model
y_ANN_prediction = ANN_model.predict(X_test) #predicting y data from the fitted model 

这将预测输入#1落在输出之一的概率

例如:对于第1行或输入1,如果我们请求3个概率输出[0.03745461,0.53267044,0.42987496],我们可以得到以下结果。换句话说,这一行表示中产阶级或[1]是输入中最有可能落入

的类别

要获得表示最高概率的索引位置的numpy数组,您需要执行以下操作:

y_ANN_prediction_classes = []
for x in y_ANN_prediction: 
y_ANN_prediction_classes.append(np.argmax(x))
#Conver the list back to a numpy arrach
y_ANN_prediction_classes_arr = np.array(y_ANN_prediction_classes)

y_ANN_prediction_classes_arr #-> This will return [1] for [0.03745461, 0.53267044, 0.42987496]. which represents the index of the highest probability 

相关内容

  • 没有找到相关文章

最新更新