tf.train.exponential_decay()的理解与实践

本文详细介绍了使用TensorFlow实现的学习率衰减策略,包括每步衰减和按固定步数衰减两种方式,并通过代码实例展示了如何在训练过程中动态调整学习率,以提升模型训练效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

self.learning_rate = tf.train.exponential_decay(
            self.initial_learning_rate, 
            self.global_step, 
            self.decay_steps,
            self.decay_rate, 
            self.staircase = Ture, name='learning_rate')

采用了学习率衰减,主要是根据训练过程中训练步数来改变学习率,可以每步都改变,也可以每间隔steps来改变,上面的例子就是每经过decay_steps步,原始的学习率将变为decay_steps倍。具体详情请看下面的代码和结果图。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import yolo.config as cfg

class LearningRate(object):
    def __init__(self):
        self.init_learningrate = cfg.LEARNING_RATE
        self.decay_rate = cfg.DECAY_RATE
        self.global_steps = 1000
        self.decay_steps = cfg.DECAY_STEPS
        self.global_ = tf.Variable(tf.constant(0))
		#每decay_steps对学习率进行衰减
        self.learning_rate1 = tf.train.exponential_decay(
            self.init_learningrate, self.global_, self.decay_steps,
            self.decay_rate, staircase = True, name='learning_rate1')
            #每步都对学习率进行衰减
        self.learning_rate2 = tf.train.exponential_decay(
            self.init_learningrate, self.global_, self.decay_steps,
            self.decay_rate, staircase=False, name='learning_rate2')
T = []
F = []

def main():
    with tf.Session() as sess:
        a = LearningRate()
        for i in range(a.global_steps):
            F_c = sess.run(a.learning_rate2,feed_dict={a.global_:i})
            F.append(F_c)
            T_c = sess.run(a.learning_rate1,feed_dict={a.global_: i})
            T.append(T_c)
    plt.figure(1)
    plt.plot(range(a.global_steps),T,'r-')
    plt.plot(range(a.global_steps), F, 'b-')

    plt.show()

if __name__ == '__main__':
    main()

结果:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值