Tensorflow Adam 优化器与 Keras Adam 优化器的比较

6

我最初在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代码段?

2个回答

3

关于衰减,您可以在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))

谢谢,但问题是如何应用与Keras片段中完全相同的衰减。哪种类型的衰减是相同的?指数?线性?等等。 - chattrat423
Keras的衰减函数非常类似于inverse_time_decay。 - Amir

0

您可以在此处找到一些有用的提示,以完成您想要做的事情https://machinelearningmastery.com/understand-the-dynamics-of-learning-rate-on-deep-learning-neural-networks/

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

回调函数与优化算法独立运行,尽管它们会调整优化算法使用的学习率。建议使用 SGD 当使用学习率表回调时。

基于这篇文章,您将找到如何使用 keras.callbacks,并希望成功地设置 Adam keras 优化器的学习率,就像您所希望的那样。但请注意,这不被推荐(我还没有尝试过)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接