Python调用predict()触发AttributeError:tuple对象无predict属性
解决方案:AttributeError: 'tuple' object has no attribute 'predict'
错误原因
你的train_model函数返回的是元组(nn_model, history),但你把这个元组直接赋值给了least_loss_model变量。当你调用least_loss_model.predict()时,实际是在对元组对象调用方法,而元组并没有predict属性,因此触发报错。你之前尝试predict_proba也无效,是因为操作对象本身就不是Keras模型。
修复步骤
- 解包返回的元组:接收
train_model的返回值时,分别获取模型和训练历史两个对象:least_loss_model, training_history = train_model(x_train, y_train, 0.2, 0.005, 128, 100) - 正常调用预测方法:此时
least_loss_model是正确的Keras模型实例,直接调用predict即可:predicted = least_loss_model.predict(x_test) print(predicted)
补充说明
你的模型最后一层用了sigmoid激活,predict方法已经会返回二分类的概率值,不需要额外使用predict_proba(Keras中部分模型才有这个方法,你的Sequential模型直接用predict就足够)。
内容的提问来源于stack exchange,提问作者Shree_ML
相关产品推荐
相关产品推荐

