首页 文章

Keras中的“无法解释优化程序标识符”错误

提问于
浏览
4

当我尝试修改Keras中SGD优化器的学习速率参数时出现此错误 . 我的代码中是否遗漏了某些内容,或者我的Keras安装不正确?

这是我的代码:

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D, Activation
import keras
from keras.optimizers import SGD

model = Sequential()
model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,)))
model.add(Activation('softmax'))
model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01), metrics= ['accuracy'])*

这是错误信息:

回溯(最近一次调用最后一次):文件“C:\ TensorFlow \ Keras \ ResNet-50 \ test_sgd.py”,第10行,在model.compile中(loss ='mean_squared_error',optimizer = SGD(lr = 0.01), metrics = ['accuracy'])文件“C:\ Users \ nsugiant \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ keras_impl \ keras \ models.py”,第787行,in编译** kwargs)文件“C:\ Users \ nsugiant \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ keras_impl \ keras \ engine \ training.py”,第632行,编译self.optimizer = optimizers.get(optimizer)文件“C:\ Users \ nsugiant \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ keras_impl \ keras \ optimizers.py”,第788行,在get raise ValueError('无法解释优化器标识符:',标识符)ValueError:('无法解释优化器标识符:',)

4 回答

  • 0

    我最近遇到了类似的问题 .

    原因是您使用tensorflow.python.keras api用于模型和图层以及keras.optimizers用于SGD . 它们是张量流和纯keras的两种不同的keras版本 . 他们无法一起工作 . 您必须将所有内容更改为一个版本 . 然后它应该工作 . :)

    希望这可以帮助 .

  • 9

    尝试将导入行更改为

    from keras.models import Sequential
    from keras.layers import Dense, ...
    

    你的进口对我来说有点奇怪 . 也许你可以详细说明一下 .

  • 0

    请给

    optimizer = 'sgd' / 'RMSprop'
    
  • 0

    我在这里有点迟了,你的问题是你在代码中错过了Tensorflow keras和keras API . 优化器和模型应来自相同的层定义 . 使用Keras API完成以下所有操作:

    from keras.models import Sequential
    from keras.layers import Dense, Dropout, LSTM, BatchNormalization
    from keras.callbacks import TensorBoard
    from keras.callbacks import ModelCheckpoint
    from keras.optimizers import adam
    
    # Set Model
    model = Sequential()
    model.add(LSTM(128, input_shape=(train_x.shape[1:]), return_sequences=True))
    model.add(Dropout(0.2))
    model.add(BatchNormalization())
    
    # Set Optimizer
    opt = adam(lr=0.001, decay=1e-6)
    
    # Compile model
    model.compile(
        loss='sparse_categorical_crossentropy',
        optimizer=opt,
        metrics=['accuracy']
    )
    

    我在这个例子中使用过adam . 请按照上面的代码使用相关的优化器 .

    希望这可以帮助 .

相关问题