【关于新版tensorflow ‘Sequential‘ 类没有 ‘predict_classes‘属性的问题】

项目场景:

目前正在学习深度学习神经网络多层感知器(MLP)的内容,在进行项目实战中发现原来的老版本tensorflow和现在版本的有点不太一样


问题描述

模型为预测非线性二分类问题在模型建立完准备预测训练数据结果时代码如下:

y_train_predict = mlp.predict_classes(X_train)
print(y_train_predict)

激活函数为sigmoid,使得输出的结果均为0到1之间,输出mlp.predict(X_train)的数据如下
【关于新版tensorflow ‘Sequential‘ 类没有 ‘predict_classes‘属性的问题】_第1张图片

如果输出mlp.predict_class(X_train)可以输出结果为这样的0 1分布的二维数组:
【关于新版tensorflow ‘Sequential‘ 类没有 ‘predict_classes‘属性的问题】_第2张图片

而现在结果报错’Sequential’ object has no attribute ‘predict_classes’

原因分析:

在TensorFlow 2.6版本中删除了这个predict_classes函数


解决方案:

生成一列0.5的数据加入到第0列,再用np.argmax按行索引判断最大值的位置,如果0.5是最大的就返回0,如果0.5是最小的就返回1,这样我们就把在0到1之间分布的数据按照0.5为标准划分0 1分布的数组

y_train_predict = mlp.predict(X_train)
a = np.ones(630)
b = a/2
c = np.insert(y_train_predict,0,b,axis=1)
y_train_predict = np.argmax(c,axis=1)
y_train_predict = y_train_predict.reshape(630,1)
print(y_train_predict)

再转化为二维数组格式,输出结果为:
和之前的predict_class结果基本一样
【关于新版tensorflow ‘Sequential‘ 类没有 ‘predict_classes‘属性的问题】_第3张图片
以上为个人在深度学习实战中遇到小问题的总结与思考,各位大佬有更好的解决办法欢迎提出!

你可能感兴趣的:(深度学习,tensorflow,人工智能,机器学习)