http://blog.csdn.net/uestc_c2_403/article/details/72235334

tf.train.ExponentialMovingAverage(decay, steps)

tf.train.ExponentialMovingAverage这个函数用于更新参数,就是采用滑动平均的方法更新参数。这个函数初始化需要提供一个衰减速率(decay),用于控制模型的更新速度。这个函数还会维护一个影子变量(也就是更新参数后的参数值),这个影子变量的初始值就是这个变量的初始值,影子变量值的更新方式如下:

shadow_variable = decay * shadow_variable + (1-decay) * variable

shadow_variable是影子变量,variable表示待更新的变量,也就是变量被赋予的值,decay为衰减速率。decay一般设为接近于1的数(0.99,0.999)。decay越大模型越稳定,因为decay越大,参数更新的速度就越慢,趋于稳定。

tf.train.ExponentialMovingAverage这个函数还提供了自己动更新decay的计算方式:

decay= min(decay,(1+steps)/(10+steps))

steps是迭代的次数,可以自己设定。

比如:

[python] view plain copy
  1. import tensorflow as tf;
  2. import numpy as np;
  3. import matplotlib.pyplot as plt;
  4. v1 = tf.Variable(0, dtype=tf.float32)
  5. step = tf.Variable(tf.constant(0))
  6. ema = tf.train.ExponentialMovingAverage(0.99, step)
  7. maintain_average = ema.apply([v1])
  8. with tf.Session() as sess:
  9. init = tf.initialize_all_variables()
  10. sess.run(init)
  11. print sess.run([v1, ema.average(v1)]) #初始的值都为0
  12. sess.run(tf.assign(v1, 5)) #把v1变为5
  13. sess.run(maintain_average)
  14. print sess.run([v1, ema.average(v1)]) # decay=min(0.99, 1/10)=0.1, v1=0.1*0+0.9*5=4.5
  15. sess.run(tf.assign(step, 10000)) # steps=10000
  16. sess.run(tf.assign(v1, 10)) # v1=10
  17. sess.run(maintain_average)
  18. print sess.run([v1, ema.average(v1)]) # decay=min(0.99,(1+10000)/(10+10000))=0.99, v1=0.99*4.5+0.01*10=4.555
  19. sess.run(maintain_average)
  20. print sess.run([v1, ema.average(v1)]) #decay=min(0.99,<span style="font-family:Arial, Helvetica, sans-serif;">(1+10000)/(10+10000)</span><span style="font-family:Arial, Helvetica, sans-serif;">)=0.99, v1=0.99*4.555+0.01*10=4.6</span>

输出:

[0.0, 0.0]
[5.0, 4.5]
[10.0, 4.5549998]
[10.0, 4.6094499]

解释:每次更新完以后,影子变量的值更新,varible的值就是你设定的值。如果在下一次运行这个函数的时候你不在指定新的值,那就不变,影子变量更新。如果指定,那就variable改变,影子变量也改变

tf.train.ExponentialMovingAverage相关推荐

  1. tensorflow tf.train.ExponentialMovingAverage().variables_to_restore()函数 (用于加载模型时将影子变量直接映射到变量本身)

    variables_to_restore函数,是TensorFlow为滑动平均值提供.之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮.我们也知道,其实在TensorFlow中,变量的滑动 ...

  2. tensorflow tf.train.ExponentialMovingAverage() (滑动平均模型)(移动平均法 Moving average,MA)(用于平滑数据波动对预测结果的影响)

    tf.train.ExponentialMovingAverage 函数定义 tensorflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型,他使用指 ...

  3. 【TensorFlow】TensorFlow函数精讲之tf.train.ExponentialMovingAverage()

    tf.train.ExponentialMovingAverage来实现滑动平均模型. 格式: tf.train.ExponentialMovingAverage(decay,num_step) 参数 ...

  4. TensorFlow学习--指数移动平均/tf.train.ExponentialMovingAverage

    时间序列模型 时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.处理与时间相关数据的方法叫做时间序列模型. 当一个平稳序列 ...

  5. 滑动平均 tf.train.ExponentialMovingAverage

    滑动平均用来估计变量的局部平均值,使得变量的更新与一段时间内的历史取值有关,得到的值在图像上更加平缓光滑,抖动性更小,不会因为某次的异常取值而使得滑动平均值波动很大.在训练过程快结束时,模型早已经训练 ...

  6. tensorflow || 滑动平均的理解--tf.train.ExponentialMovingAverage

    1 滑动平均的理解 滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变 ...

  7. TFRecord tf.train.Feature

    一.定义 事先将数据编码为二进制的TFRecord文件,配合TF自带的多线程API,读取效率最高,且跨平台,适合规范化存储复杂的数据.上图为TFRecord的pb格式定义,可发现每个TFRecord由 ...

  8. tf.train.Saver函数的用法之保存全部变量和模型

    用于保存模型,以后再用就可以直接导入模型进行计算,方便. 例如: [python] view plaincopy import tensorflow as tf; import numpy as np ...

  9. tf.train.MomentumOptimizer()优化器

    tf.train.MomentumOptimizer(learning_rate,momentum,use_locking=False,use_nesterov=False,name='Momentu ...

最新文章

  1. Unable to complete the scan for annotations for web application
  2. 【数理知识】《积分变换与场论》王振老师-第2章-拉普拉斯变换
  3. C# asp.net mvc 配置多个route 参数
  4. iphone开发我的新浪微博客户端-用户登录准备篇(1.1)
  5. (24)System Verilog多个线程间通信(信箱)
  6. 【ASP.NET Web API教程】2 创建各种Web API
  7. 【Luogu3371】【模板】单源最短路径(SPFA)
  8. 《学习之道》第四章学习方法16学会做标记,而不是只划线
  9. 今天,是我的新生吗?
  10. 【费用预测】基于matlab粒子群算法优化ELM神经网络预测费用【含Matlab源码 1378期】
  11. 算法设计与分析第二版源码
  12. js脚本页面自动刷新
  13. python模拟登陆微博_超详细的Python实现微博模拟登陆,小白都能懂
  14. 强网杯2022 crypto 复现
  15. 免费注册个体户营业执照出证教程
  16. Pyton 类和对象
  17. 【数学建模】数学建模(一)——数学模型概述
  18. SAP中科目货币及本位币记账控制测试
  19. 机械革命z3pro笔记本U盘重装win10系统教学
  20. c语言 落后_编程会不会没落、C语言会不会没落?

热门文章

  1. counterfactual
  2. Awesome-XJTLU 项目宣传
  3. UNITY 打包时提示sdk tools 或 sdk build tools版本低时可以直接点update 按钮进行更新...
  4. 刷前端面经笔记(十二)
  5. 生成器和生成器表达式
  6. mybatis中自建的类型别名
  7. (转)IOS学习笔记-2015-03-29 int、long、long long取值范围
  8. Centos6.5_x86_64 编译安装Subversion-1.8.5
  9. 95cloud云主机管理系统 使用手册 图片去网站看吧
  10. Silverlight如何与JS相互调用