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
已与放置在 三个 不同位置的三个实现链接,即
- Source Code
tensorflow/python/tpu/tpu_embedding_v2_utils.py
- @tf_export("tpu.experimental.embedding.Adam")
class Adam(_Optimizer):
- Source Code
tensorflow/python/keras/optimizer_v1.py
class Adam(Optimizer):
- 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。
在训练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
已与放置在 三个 不同位置的三个实现链接,即
- Source Code
tensorflow/python/tpu/tpu_embedding_v2_utils.py
- @tf_export("tpu.experimental.embedding.Adam")
class Adam(_Optimizer):
- Source Code
tensorflow/python/keras/optimizer_v1.py
class Adam(Optimizer):
- 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。