Google Colab运行Keras代码报错keras.optimizers无Adam属性如何解决
报错修复方案
错误原因
- 该报错由Keras版本迭代导致的模块结构变更、以及代码包导入逻辑不规范触发
- Google Colab会自动更新环境依赖版本,旧版本Keras的
keras.optimizers.Adam接口在新版本中已调整 - 代码同时导入独立Keras包的
optimizers和TensorFlow内置Keras的Adam,属于两类Keras包混用,会触发兼容冲突,这也是之前代码可运行、更新后报错的核心原因
修复方案
优先推荐使用TensorFlow内置Keras的方案,适配Colab最新环境,稳定性更高:
方案1:统一使用TensorFlow内置Keras
替换原有导入逻辑,全部调用tf.keras下的模块,同时注意新版本中优化器的学习率参数已从lr调整为标准名learning_rate,修改后代码如下:
# 统一使用tf.keras的相关模块,替换原有导入 from tensorflow.keras import optimizers from tensorflow.keras.models import Model from tensorflow.keras.callbacks import EarlyStopping # 其他原有导入保留 for i in range(5): print(i) model_mix = Model(inputs=[visible, visible1], outputs=x) # 使用tf.keras的Adam优化器,参数lr替换为标准名learning_rate adam = optimizers.Adam(learning_rate=0.01, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False) monitor = EarlyStopping(monitor='val_loss', min_delta=1e-3, patience=6, verbose=2, mode='auto') model_mix.compile(loss="mean_squared_error", optimizer=adam) model_mix.fit( [x_text_train, x_img_train], y_text_train, callbacks=[checkpointer_cnn,monitor], validation_data=([x_text_test, x_img_test], y_text_test), epochs=1000)
方案2:指定兼容旧版本独立Keras
如果业务逻辑必须使用独立Keras包,可在Colab代码最开头先执行以下命令安装兼容旧版本,安装完成后重启运行时再执行原有代码即可:
!pip install keras==2.10.0
注意事项
- 不要混用独立Keras包和TensorFlow内置的
tf.keras包,两者版本和接口逻辑不通用,混用极易触发各类兼容问题 - 优先使用官方标注的标准参数名,避免废弃参数触发的警告或运行错误
内容的提问来源于stack exchange,提问作者farheen fatima
相关产品推荐
相关产品推荐

