标签:decay global 笔记 学习 rate learning tf TensorFlow 衰减
跑实验的时候出现时间过长的情况,如下图的情况:
猜测原因可能是参数设置的问题,所以将batch_size由原来的的64调整为32,运行时间确实缩小了一倍:
举例子(个人理解):
iteraions = 100000,batch_size=32,dataset = 890
decay_steps=10000
learning_rate=0.1
decay_rate=0.9
作用:每次经过10000次迭代,学习率变为原来的0.9
dataset /batch_size=13
i = 1-100000(总训练次数)
j = 1 - 13
作用:从dataset中随机取32张图片,一共取13次
decay_steps/13=76
作用:每次经过76次迭代,学习率更新一次,变为原来的0.9
下述具体细节参考博客:https://www.cnblogs.com/baby-lily/p/10962574.html
在TensorFlow的优化器中, 都要设置学习率。学习率是在精度和速度之间找到一个平衡:
学习率太大,训练的速度会有提升,但是结果的精度不够,而且还可能导致不能收敛出现震荡的情况。
学习率太小,精度会有所提升,但是训练的速度慢,耗费较多的时间。
因而我们可以使用退化学习率,又称为衰减学习率。它的作用是在训练的过程中,对学习率的值进行衰减,训练到达一定程度后,使用小的学习率来提高精度。
在TensorFlow中学习率衰减的方法:tf.train.exponential_decay()
附代码:
import tensorflow as tf
import numpy as np
global_step = tf.Variable(0, trainable=False)
initial_learning_rate = 0.1
learning_rate = tf.train.exponential_decay(initial_learning_rate,
global_step=global_step,
decay_steps=10,
decay_rate=0.5)
opt = tf.train.GradientDescentOptimizer(learning_rate)
add_global = global_step.assign_add(1)
with tf.Session() as sess:
tf.global_variables_initializer().run()
print(sess.run(learning_rate))
for i in range(50):
g, rate = sess.run([add_global, learning_rate])
print(g, rate)
参数如下:
learning_rate, 初始的学习率的值
global_step, 迭代步数变量
decay_steps, 带迭代多少次进行衰减
decay_rate, 迭代decay_steps次衰减的值
staircase=False, 默认为False,为True则不衰减
标签:decay,global,笔记,学习,rate,learning,tf,TensorFlow,衰减 来源: https://blog.csdn.net/demo_jie/article/details/112383778
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。