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

AttributeError:'NoneType'对象无fit_generator属性问题求助

解决Keras中'NoneType' object has no attribute 'fit_generator'错误

嘿,我一眼就揪出你代码里的问题根源了!这个错误的本质其实特别简单——你不小心把model变量给覆盖成None了。

问题核心原因

看你代码里的这一行:

model = model.compile(optimizer=adam(lr=0.0005), loss="mae")

Keras的compile()方法不会返回模型对象(实际返回None),当你把它的返回值重新赋值给model时,原来创建的Sequential模型实例就被覆盖成None了。这就导致后面调用model.fit_generator()甚至model.fit()时,本质是在对None调用方法,自然会抛出AttributeError。

快速解决方案

只需要把那行代码改成直接调用compile,不要赋值回model:

model.compile(optimizer=adam(lr=0.0005), loss="mae")

这样model变量依然指向你创建的Sequential模型,后续的fit_generator、summary、predict等方法就能正常工作了。

额外优化建议

除了这个核心问题,还有几个小细节可以让你的代码更规范:

  • 你重复导入了不少库(比如keras.models.Sequential、matplotlib.pyplot),可以清理掉重复的导入语句,让代码更整洁。
  • 新版本Keras中,优化器推荐使用大写的Adam(而非小写adam),修改导入和调用方式:
    from keras.optimizers import Adam
    # 编译时改为
    model.compile(optimizer=Adam(lr=0.0005), loss="mae")
    

修正后的关键代码段示例:

# Define model
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
from keras.callbacks import ModelCheckpoint

model = Sequential()
model.add(Dense(10, activation='relu'))
model.add(Dense(1))
cb = [ModelCheckpoint("model.hdf5", save_best_only=True, period=3)]

# Compile and fit model
model.compile(optimizer=Adam(lr=0.0005), loss="mae")  # 不要赋值回model
history = model.fit_generator(train_gen, steps_per_epoch=1000, epochs=30, verbose=0, callbacks=cb, validation_data=valid_gen, validation_steps=200)
model.summary()

这样修改后,你的模型训练流程就能正常运行了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:57:43