tensorflow之学习率自衰减的实现

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

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

decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)
其中decay_rate是衰减系数, decay_steps是衰减速度,learning_rate是初始学习率。


下面给出一个小demo:

...
current_epoch = tf.Variable(0)
loss = ...
learning_rate = tf.train.exponential_decay(0.03,
                                           current_epoch,
                                           decay_steps=num_epochs,
                                           decay_rate=0.03)
train_step = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss, global_step=current_epoch)
...
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    for i in range(num_epochs):
        current_epoch = i
        ...
主要修改的部分在于上面加粗部分,注意在minimize()里面一定要加上
global_step=current_epoch
这样学习速率才会跟着迭代,不然学习速率会一直保持初始值。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值