tensorflow学习率定义的两种方式

在模型的训练过程中,一般有俩种方法来对学习率进行更改,一种是学习率指数衰减,还有一种是自定义一个迭代区间,在不同区间内,赋予不同的学习率

1,指定不同的区间给定不同的学利率
使用tf.piecewise_constant(global_step,qvjian,value)
qvjian:为指定学习率所在区间
value:为在qvjian中的学习率
这里注意,qvjian的值比value少一个,因为区间是从0开始算的,而在代码中没有体现,所以会少一个
既然已经定义了区间,定义了区间内的学习率,那么需要一个指针来确定现在训练到哪一步,也就是位于哪个区间内,因此需要指定一个指针global_step。
代码如下:

import tensorflow as tf
qvjian = [2,5]
value = [0.01,0.005,0.001]
#因为要根据迭代次数指定区间,和value,这里定义一个variable
global_step = tf.Variable(0,trainable=False)
#初始化变量
init = tf.global_variables_initializer()
with tf.Session() as sess:
	sess.run(init)
	#假设训练10次
	for global_step in range(10):
		lr = tf.train.piecewise_constant(global_step,qvjian,value)
		lr_ = sess.run(lr)
		print(global_step,lr_)
#结果为:
0 0.01
1 0.01
2 0.01
3 0.005
4 0.005
5 0.005
6 0.001
7 0.001
8 0.001
9 0.001

2.设定学习率指数衰减
tf.trian.exponential_decay(
learning_rata:
global_step:
decay_steps:
decay_rata:
staircase=False:
name = None
)
参数解释:
learnIng_rate:初始学习率
global_step:和tf.train.piecewise_constant()中一样为step指针
decay_steps:衰减步数,为一个定值,每多少步进行一次衰减
decay_rata:衰减率,也为一个定值
最后输出的学习率
decayed_learning_rata = learning_rata * decay_rata ^ (global_step / decay_steps)

代码示例:

learning_rata = 0.1
decay_steps = 60
decay_rata = 0.8
#方便画图,
X,Y = list(),list()
for global_step in range(1000):
	decayed_learning_rata = learning_rata * decay_rata **(global_step/decay_steps)
	X.append(global_step)
	Y.append(decayed_learning_rata)
plt.plot(X,Y,'b')
plt.ylabel('learning_rata学习率')
plt.xlabel('global_step')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值