我最初在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代码段?
发布于 2019-01-08 19:06:11
您可以在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将指数衰减应用于学习速率。
其他衰变:
inverse_time_decaypolynomial_decaylinear_cosine_decayexponential_decaycosine_decaycosine_decay_restartsnatural_exp_decaynoisy_linear_cosine_decayKeras在类似于下面的AdamOptimizer中实现了衰减,这与tensorflow中的衰变非常接近:
lr = self.lr * (1. / (1. + self.decay * self.iterations))发布于 2019-07-03 10:30:45
您可以在这里找到一些有用的提示,说明您想在这里做什么,https://machinelearningmastery.com/understand-the-dynamics-of-learning-rate-on-deep-learning-neural-networks/。
为了回答你的问题,我引用以下消息来源:
回调与优化算法是分开的,尽管它们调整了优化算法使用的学习速率。建议在使用学习进度计划回调时使用SGD。
在本文的基础上,您将发现如何使用keras.callbacks并希望成功地设置Adam优化器的学习速度。不过,请注意,这是不推荐的(我还没有试过)
https://stackoverflow.com/questions/54098077
复制相似问题