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

Keras导入Adam/SGD优化器报错及模型编译识别失败问题求助

报错原因&解决方法

核心原因

两次报错均由Keras包来源混用、导入路径不匹配导致:

  1. 第一次报错是你使用的独立Keras版本对应优化器的导入路径发生了变更,旧路径找不到Adam类
  2. 第二次报错是你用独立Keras构建模型,却传入了tensorflow.keras下的优化器实例,两个不同来源的包互不兼容,无法识别

解决路径(二选一即可,禁止混用)

路径1:全量使用独立Keras构建整个项目

调整优化器的导入路径即可,不同版本对应导入方式二选一:

  • 版本较新的独立Keras使用以下导入:
from keras.optimizers import Adam, SGD, RMSprop

如果仍报错,说明你使用的版本优化器已移动到legacy目录下,改用以下导入:

from keras.optimizers.legacy import Adam, SGD, RMSprop

之后模型编译直接用导入的优化器即可:

model.compile(loss='sparse_categorical_crossentropy', optimizer=Adam(), metrics=['acc'])

路径2:全量使用TensorFlow内置的Keras构建整个项目

把所有Keras相关的导入都换成tensorflow.keras前缀,不要保留单独的keras导入,示例:

from sklearn.model_selection import train_test_split
# 所有keras导入统一替换前缀
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dropout, Flatten, Dense, Conv2D, MaxPooling2D, BatchNormalization
from tensorflow.keras.callbacks import TensorBoard, ModelCheckpoint
from tensorflow.keras.optimizers import Adam, SGD, RMSprop

# 后续建模、编译逻辑无需调整
model = Sequential(...)
model.compile(loss='sparse_categorical_crossentropy', optimizer=Adam(), metrics=['acc'])

避坑提示

  • 不要同时混用keras.xxx和tensorflow.keras.xxx的导入,两个包是独立维护的,接口互不兼容
  • 如果上述方法都无效,可以先卸载环境里的独立keras包,仅使用TensorFlow内置的keras,操作命令:
    pip uninstall keras

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 07:24:04