【问题标题】:ValueError: Could not interpret optimizer identifier: <tensorflow.python.keras.optimizers.SGD object at 0x0000013887021208>ValueError:无法解释优化器标识符:<tensorflow.python.keras.optimizers.SGD object at 0x0000013887021208>
【发布时间】:2019-10-07 15:06:46
【问题描述】:

我尝试运行这段代码,但我遇到了这个错误,请任何人过去也遇到过同样的错误:

sgd = optimizers.SGD(lr = 0.01, decay = 1e-6, momentum = 0.9, nesterov = True)

编译模型

model.compile(optimizer = sgd, loss = OBJECTIVE_FUNCTION, metrics = LOSS_METRICS)
fit_history = model.fit_generator(
        train_generator,
        steps_per_epoch=STEPS_PER_EPOCH_TRAINING,
        epochs = NUM_EPOCHS,
        validation_data=validation_generator,
        validation_steps=STEPS_PER_EPOCH_VALIDATION,
        callbacks=[cb_checkpointer, cb_early_stopper]
)
model.load_weights("../working/best.hdf5")

现在我有这个错误:

File "", line 1, in runfile('C:/Users/ResNet50VF72.py', wdir='C:/Users/RESNET')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/RESNET/ResNet50VF72.py", line 110, in model.compile(optimizer = sgd, loss = OBJECTIVE_FUNCTION, metrics = LOSS_METRICS)
File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\training.py", line 96, in compile self.optimizer = optimizers.get(optimizer)
File "C:\ProgramData\Anaconda3\lib\site-packages\keras\optimizers.py", line 793, in get str(identifier))
ValueError: Could not interpret optimizer identifier : <tensorflow.python.keras.optimizers.SGD object at 0x0000013887021208>

【问题讨论】:

  • 尝试不带任何参数的sgd这样sgd = optimizers.SGD()
  • 感谢您的回答。我试试这个: sgd = optimizers.SGD() ###### 编译模型 ############ model.compile(optimizer = sgd, loss = OBJECTIVE_FUNCTION, metrics = LOSS_METRICS) """但我有同样的错误!
  • 您使用的 tf 版本是什么?

标签: tf.keras


【解决方案1】:

我在使用另一个优化器时遇到了同样的问题:

ValueError: Could not interpret optimizer identifier: <tensorflow.python.keras.optimizers.Adam object at 0x7f3fc4575ef0>

这是因为我使用 keras 而不是 tensorflow.keras 创建了我的模型,所以解决方案是从:

from keras.models import Sequential

from tensorflow.keras.models import Sequential

或者也可以只使用 keras 而不是 tensorflow.keras(我混合了新旧代码),似乎是两者的混合导致了问题(这不足为奇)。

【讨论】:

    【解决方案2】:

    你应该像这样导入:

    from keras.optimizers import gradient_descent_v2 
    

    并像这样设置你的超参数:

    opt = gradient_descent_v2.SGD(learning_rate=lr, decay=lr/epochs)
    

    参考: https://programmerah.com/keras-nightly-import-package-error-cannot-import-name-adam-from-keras-optimizers-29815/

    【讨论】:

      猜你喜欢
      • 2022-12-13
      • 2021-09-21
      • 1970-01-01
      • 2019-10-16
      • 2018-10-06
      • 2018-10-07
      • 2015-09-14
      • 2020-11-16
      • 2019-09-16
      相关资源
      最近更新 更多