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

Keras CNN模型报错:'History'对象无'predict'属性的解决方法

解决AttributeError: 'History' object has no attribute 'predict'错误

这个问题的根源很简单——你不小心把模型训练的历史记录对象覆盖了原本的模型实例!

看你代码里的这一行:

model = model.fit( X , Y , epochs=50, batch_size=10 , validation_split= 0.25 , verbose=1, shuffle=True)

Keras的model.fit()方法返回的是一个History对象,它只用来存储训练过程中的损失、指标变化等日志信息,并没有predict()方法。你把这个对象赋值给了原本存储模型的model变量,自然在调用model.predict(X_test)时会报错。

修复方法

只需要把fit()的结果存到另一个变量里,不要覆盖原始的模型:

# 不要覆盖model变量,用history来存储训练日志
history = model.fit( X , Y , epochs=50, batch_size=10 , validation_split= 0.25 , verbose=1, shuffle=True)

修改后的完整代码示例

# 构建模型(你的原有代码不变)
model.add(Conv1D(4,kernel_size=3, activation='relu', input_shape=(tablon_vectores_train.shape[1], tablon_vectores_train.shape[2]) #,padding='same' ) )
model.add(MaxPooling1D(pool_size=4))
model.add(Conv1D(6,kernel_size=2, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(15, activation='relu'))
model.add(Dense(1) )
model.compile(loss='mean_squared_error', optimizer='adam',metrics=['mse'])

# 关键修改:用history变量接收fit的返回值,保留model作为模型实例
history = model.fit( X , Y , epochs=50, batch_size=10 , validation_split= 0.25 , verbose=1, shuffle=True)

# 现在可以正常调用predict了
predict = model.predict(X_test)

额外说明

训练完成后,你依然可以通过history变量查看训练过程的细节,比如:

  • history.history['loss']:获取训练集每一轮的损失值
  • history.history['val_loss']:获取验证集每一轮的损失值
  • history.history['mse']:获取训练集每一轮的MSE指标

这样既保留了训练日志的查看能力,又能正常使用模型进行预测啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:42