tensorflow 下的滑动平均模型 —— tf train ExponentialMovingAverage

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

在采用随机梯度下降算法训练神经网络时,使用 tf.train.ExponentialMovingAverage 滑动平均操作的意义在于提高模型在测试数据上的健壮性(robustness)

tensorflow 下的  tf.train.ExponentialMovingAverage  需要提供一个衰减率(decay)。该衰减率用于控制模型更新的速度。该衰减率用于控制模型更新的速度,ExponentialMovingAverage 对每一个(待更新训练学习的)变量(variable)都会维护一个影子变量(shadow variable)。影子变量的初始值就是这个变量的初始值,

import tensorflow as tfv1 =tf.Variable(dtype=tf.float32, initial_value=0.)decay = .99num_updates = tf.Variable(0, trainable=False)ema = tf.train.ExponentialMovingAverage(decay=decay, num_updates=num_updates)update_var_list = [v1]      # 定义更新变量列表ema_apply = ema.apply(update_var_list)with tf.Session() as sess:    sess.run(tf.global_variables_initializer())    print(sess.run([v1, ema.average(v1)]))                                                             # [0.0, 0.0](此时 num_updates = 0 ⇒ decay = .1, ),shadow_variable = variable = 0.    sess.run(tf.assign(v1, 5))    sess.run(ema_apply)    print(sess.run([v1, ema.average(v1)]))                                                # 此时,num_updates = 0 ⇒ decay =.1,  v1 = 5;                                                # shadow_variable = 0.1 * 0 + 0.9 * 5 = 4.5 ⇒ variable    sess.run(tf.assign(num_updates, 10000))    sess.run(tf.assign(v1, 10))    sess.run(ema_apply)    print(sess.run([v1, ema.average(v1)]))                                                # decay = .99,                                                # shadow_variable = 0.99 * 4.5 + .01*10 ⇒ 4.555    sess.run(ema_apply)    print(sess.run([v1, ema.average(v1)]))                                                # decay = .99                                                # shadow_variable = .99*4.555 + .01*10 = 4.609  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值