AttributeError: 'Sequential' object has no attribute 'predict_classes' ,sequential 构建的模型

AttributeError: 'Sequential' object has no attribute 'predict_classes'  ,sequential 构建的模型

问题描述:

采用sequential 构建的模型(注意不是keras.model构建的模型),为什么会不存在 predict_classes().同样的代码在别人电脑却可以运行,keras版本不同?还是什么情况

img

import numpy as np
import pandas as pd
import sklearn
import keras
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense,Activation
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

data = pd.read_csv("c1/task1_data.csv")
data.head()
x = data.drop(['y'],axis=1)
y = data.loc[:,'y']
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)

#创建模型
mlp = Sequential()
mlp.add(Dense(units=25,input_dim=2,activation="sigmoid"))
mlp.add(Dense(units=1,activation='sigmoid'))
mlp.summary()
#配置模型
mlp.compile(optimizer='adam',loss='binary_crossentropy')
#训练模型
mlp.fit(x_train,y_train,epochs=1000)

#预测
y_train_predict = mlp.predict_classes(x_train)

原文链接:


Keras非顺序模型没有model.predict_classes()方法如何获取测试数据分类的标签

有时分类任务中,当我们用测试数据测试训练好的模型性能时,希望得到模型输出的标签。此时,若搭建的模型为顺序模型,即利用model=Sequential()顺序添加神经网络层时可以直接调用model.predict_calsses()获取预测的标签。

但对于非顺序模型,不存在predict_calsses()方法,我们只能利用predict()得到预测概率。那么这种情况我们如何获取预测标签呢?

有博主利用如下代码自行转化

pred=model.predict(X_test)
pred=np.armax(pred,axis=-1)
但是,np.armax(pred,axis=-1)返回值为最大值的索引,所以只能对多分类模型或者是以softmax作为输出层激活函数的二分类模型

对于输出层激活函数为sigmoid的模型,其输出只有一个数,所以利用上述方法所有输出都会被映射到一个标签,因此,针对这种情况。应该利用

Y_pred = model.predict(X_test)
Y_pred = np.int64(Y_pred>0.5)
进行转化,详情可以参考Keras model.predict_classes()源代码
————————————————
版权声明:本文为CSDN博主「qq_37654517」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: