分享

tensorflow之学习率自衰减的实现

 legionDataLib 2017-06-01

在训练神经网络时,需要设置学习率(learning rate)控制参数的更新速度,学习速率设置过小,会极大降低收敛速度,增加训练时间;学习率太大,可能导致参数在最优解两侧来回振荡。

tensorflow提供了一个灵活的学习率设置方法,指数衰减函数tf.train.exponential_decay(),它的计算实现如下:

   decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)

其中decay_rate是衰减系数(取值小于1,比如0.1), global_steps是当前迭代次数,decay_steps是总的迭代次数,learning_rate是初始学习率。

下面给出一个小demo:

...

current_iter = tf.Variable(0)

loss = ...

learning_rate = tf.train.exponential_decay(0.03

                                           current_iter, 

                                                                           decay_steps=total_iters,

                                           decay_rate=0.03)

train_step = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss,global_step=current_iter)

...

with tf.Session() as sess: 

   init = tf.global_variables_initializer()

   sess.run(init)

   for i in range(total_iters):

       current_iter = i

       ...

注意在minimize()里面一定要加上global_step=current_iter,这样学习速率才会跟着迭代,不然学习速率会一直保持初始值。












    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多