繁体   English   中英

Tensorflow Adam优化器与Keras Adam优化器

[英]Tensorflow Adam optimizer vs Keras Adam optimizer

我最初在Keras开发了一个分类器,我的优化器非常容易应用衰减。

adam = keras.optimizers.Adam(decay=0.001)

最近我试图将整个代码更改为纯Tensorflow,并且无法弄清楚如何正确地将相同的衰减机制应用于我的优化器。

optimizer = tf.train.AdamOptimizer()
train_op = optimizer.minimize(loss=loss,global_step=tf.train.get_global_step())

如何将我的Keras代码段中显示的相同学习率衰减应用于我的Tensorflow片段?

你可以在tensorflow中找到关于衰变的体面文档:

...
global_step = tf.Variable(0, trainable=False)
starter_learning_rate = 0.1
learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step,
                                           100000, 0.96, staircase=True)

learning_step = ( tf.train.GradientDescentOptimizer(learning_rate)
    .minimize(...my loss..., global_step=global_step)
)

tf.train.exponential_decay将指数衰减应用于学习率。

其他衰变:

Keras在AdamOptimizer中实现了类似于下面的衰减,这与tensorflow中的inverse_time_decay非常接近:

lr = self.lr * (1. / (1. + self.decay * self.iterations))

你可以在这里找到一些你想做的有用的提示https://machinelearningmastery.com/understand-the-dynamics-of-learning-rate-on-deep-learning-neural-networks/

为了回答你的问题,我引用了这个来源:

回调与优化算法分开操作,尽管它们调整优化算法使用的学习速率。 建议在使用学习速率计划回调时使用SGD

在本文的基础上,您将找到如何使用keras.callbacks,并希望成功地设置Adam keras优化器的学习速率,如您所愿。 虽然,请注意,不建议这样做(我还没有尝试过)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM