Tensorflow.Keras Adam 优化器实例化

Tensorflow.Keras Adam Optimizer Instantiation

在训练CNN时,我发现loss减少得更快 当优化器设置为 optimizer instance

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), 
       ....... 

然后当优化器设置为String(优化器名称)

`model.compile(optimizer='adam', .......)

由于默认learning_rate=0.001,为什么它们的工作方式不同,它们之间有什么区别?

技术上应该没有任何区别。如果按照源文件here中的adam字符串参数,你会看到

all_classes = {
     'adam': adam_v2.Adam,
      ...
}

adam_v2.Adam 已与放置在 三个 不同位置的三个实现链接,即

  1. Source Code tensorflow/python/tpu/tpu_embedding_v2_utils.py
- @tf_export("tpu.experimental.embedding.Adam")
class Adam(_Optimizer):
  1. Source Code tensorflow/python/keras/optimizer_v1.py
class Adam(Optimizer):
  1. Source Code tensorflow/python/keras/optimizer_v2/adam.py
@keras_export('keras.optimizers.Adam')
class Adam(optimizer_v2.OptimizerV2):

现在,检查 tf.keras.optimizers.Adam, click view source on GitHub button, you would redirect to here 的源代码 - 即上面的数字 3