You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras二分类模型报错:'History'对象无'predict'属性求助

解决Keras中AttributeError: 'History' object has no attribute 'predict'的问题

问题根源

你在代码中犯了一个关键错误:将model.fit()的返回值重新赋值给了model变量。model.fit()方法返回的是History对象(用于记录训练过程的损失、精度等指标),而非训练后的模型本身。这会导致原本的Sequential模型实例被覆盖,后续调用model.predict()时,实际是在History对象上调用该方法,而History没有predict属性,因此触发报错。

修正方案

只需要避免用model变量接收fit()的返回值即可,改用其他变量名(比如history)存储训练历史,或者直接调用model.fit()不赋值。

修正后的完整代码

#hyperparameters
hidden_units=100
learning_rate=0.01
hidden_layer_act='tanh'
output_layer_act='sigmoid'
no_epochs=100

#model
model = Sequential()
model.add(Dense(hidden_units, input_dim=len(X_train.columns), activation=hidden_layer_act))
model.add(Dense(hidden_units, activation=hidden_layer_act))
model.add(Dense(1, activation=output_layer_act))
#model.summary()
sgd=optimizers.SGD(lr=learning_rate)
model.compile(loss='binary_crossentropy',optimizer=sgd, metrics=['accuracy'])
es = EarlyStopping(monitor='val_accuracy', 
                                   mode='max', # don't minimize the accuracy!
                                   patience=10,
                                   restore_best_weights=True)
# 修改点:用history变量接收训练历史,而非覆盖model
history = model.fit(X_train,
                  y_train, 
                  epochs=no_epochs,
                  callbacks=[es],
                  batch_size=5, 
                  verbose=1,
                  shuffle=True)
y_pred = model.predict(X_test) 

额外说明

  • 如果你不需要查看训练历史,也可以直接调用model.fit(...)不赋值,效果相同。
  • History对象可以用来绘制训练曲线,比如history.history['accuracy']可以获取训练集精度变化,history.history['val_accuracy']获取验证集精度变化。

内容的提问来源于stack exchange,提问作者drashti bhatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:30:51