Tensorflow滑动平均模型tf.train.ExponentialMovingAverage解析

语法:tf.train.ExponentialMovingAverage(decay,num_updates=None)

参数说明:

  • decay为衰减率。控制模型更新的速度,它的值越大模型越趋于稳定。实际应用中,decay一般会设置为十分接近1的常数(0.99或0.999)。
  • num_updates动态设置decay的大小。使得模型在训练的初始阶段更新得更快。

ExponentialMovingAverage 对每一个变量(variable)都会维护一个 影子变量(shadow variable)。影子变量的初始值就是这个变量的初始值,而每次运行变量更新时,影子变量的值会更新为:

实例代码演示:

import tensorflow as tf 

v1 = tf.Variable(0, dtype=tf.float32) #初始值设为0
#step模拟神经网络中的迭代轮数,来动态控制衰减率
step = tf.Variable(0, trainable=False) 
ema = tf.train.ExponentialMovingAverage(0.99, step)
#定义一个更新滑动平均的操作
maintain_averages_op = ema.apply([v1])

with tf.Session() as sess:   
    init_op = tf.global_variables_initializer()  #初始化
    sess.run(init_op)
    print(sess.run([v1, ema.average(v1)]))
    sess.run(tf.assign(v1,5))   #更新v1的值为5
    sess.run(maintain_averages_op) #滑动平均操作
    #通过ema.average(v1)获得滑动平均之后变量的取值
    print (sess.run([v1, ema.average(v1)])) 
    sess.run(tf.assign(step, 10000)) #更新step的值为10000
    sess.run(tf.assign(v1, 10))     #更新v1的值为10
    sess.run(maintain_averages_op) 
    print (sess.run([v1, ema.average(v1)]))
    #当前v1的值和step值保持不变,更新一次v1的滑动平均值
    sess.run(maintain_averages_op) 
    print(sess.run([v1, ema.average(v1)]))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值