Keras修改SGD优化器学习率时出现'Could not interpret optimizer identifier'错误求助
解决Keras中SGD优化器的'Could not interpret optimizer identifier'错误
嘿,这个错误我之前踩过坑,大概率是你混合导入了不同版本的Keras模块导致的,不是安装异常哦,咱们来掰扯清楚:
你看你的代码里,模型是从tensorflow.python.keras(TensorFlow自带的Keras实现)导入的,但优化器却从原生的keras包导入——这俩其实是相互独立的模块,模型识别不了来自另一个模块的优化器对象,就抛出了这个错误。
给你两个简单的修正方案,选一个就行:
方案一:统一用TensorFlow内置的Keras
把所有相关导入都换成tf.keras的版本,包括优化器:from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten, GlobalAveragePooling2D, Activation from tensorflow.keras.optimizers import SGD model = Sequential() model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,))) model.add(Activation('softmax')) # 这里记得补上之前缺失的闭合括号 # 编译时指定优化器,tf.keras里推荐用learning_rate参数 model.compile(optimizer=SGD(learning_rate=0.01), loss='categorical_crossentropy')方案二:统一用原生Keras
如果你更习惯用原生Keras,就把所有导入都换成原生的:from keras.models import Sequential from keras.layers import Dense, Flatten, GlobalAveragePooling2D, Activation from keras.optimizers import SGD model = Sequential() model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,))) model.add(Activation('softmax')) # 原生Keras的SGD用lr参数指定学习率 model.compile(optimizer=SGD(lr=0.01), loss='categorical_crossentropy')
另外提一句,你贴的代码里model.add(Activation('softmax')...这里少了个闭合的括号,编译的时候也会报错,记得补上哈!
内容的提问来源于stack exchange,提问作者Nehemia
相关产品推荐
相关产品推荐

