You need to enable JavaScript to run this app. Keras提示Could not interpret optimizer identifier: SGD报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Keras提示Could not interpret optimizer identifier: SGD报错如何解决?

问题根因

你当前的代码同时混用了独立安装的Keras库和TensorFlow内置的tf.keras库,两者虽然API外观相似但属于完全独立的命名空间,独立Keras的模型编译逻辑无法识别tf.keras下的优化器实例,因此抛出优化器识别错误。

修复方案

优先推荐统一使用tf.keras命名空间的方案,独立Keras包目前已停止维护,所有功能更新已合并到tf.keras中:

  • 把所有from keras.xxx格式的导入全部替换为from tensorflow.keras.xxx,补全缺失的层和模型类导入即可正常运行,修复后完整代码如下:
from tensorflow.keras.optimizers import SGD 
from tensorflow.keras.initializers import RandomUniform
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow import keras
import tensorflow as tf

init = RandomUniform(minval=0, maxval=1)
model = Sequential()
model.add(Dense(5, input_dim=2, activation='tanh', kernel_initializer=init))
model.add(Dense(5, activation='tanh', kernel_initializer=init))
model.add(Dense(5, activation='tanh', kernel_initializer=init))
model.add(Dense(5, activation='tanh', kernel_initializer=init))
model.add(Dense(5, activation='tanh', kernel_initializer=init))
model.add(Dense(1, activation='sigmoid', kernel_initializer=init))

opt = SGD(learning_rate = 0.01, momentum=0.9)
model.compile(loss='binary_crossentropy', optimizer= opt, metrics=['accuracy'])

tb = TensorBoard(histogram_freq=1, write_grads=True)

model.fit(trainX, trainy, validation_data=(testX, testy), epochs=500, verbose=0, callbacks=[tb])
  • 如果你需要继续使用独立Keras包,只需把所有tf.keras相关导入全部替换为独立Keras的导入即可,比如SGD的导入改回from keras.optimizers import SGD,同时确保Sequential、Dense等类也都从keras命名空间导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:27:00