在TensorFlow中提供了tf.train.ExponentialMovingAverage 来实现滑动平均模型,在采用随机梯度下降算法训练神经网络时,使用其可以提高模型在测试数据上的健壮性(robustness)。

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

shadow_variable=decay×shadow_variable+(1−decay)×variableshadow_variable=decay×shadow_variable+(1−decay)×variable

上述公式与之前介绍的一阶滞后滤波法的公式相比较,会发现有很多相似的地方,从名字上面也可以很好的理解这个简约不简单算法的原理:平滑、滤波,即使数据平滑变化,通过调整参数来调整变化的稳定性。

在滑动平滑模型中, decay 决定了模型更新的速度,越大越趋于稳定。实际运用中,decay 一般会设置为十分接近 1 的常数(0.999或0.9999)。为了使得模型在训练的初始阶段更新得更快,ExponentialMovingAverage 还提供了 num_updates 参数来动态设置 decay 的大小:

decay=min{decay,1+num_updates10+num_updates}
pre_y=inference(X,None,Weight1,biase1,Weight2,biase2)
# 定义存储训练轮数的变量,这个变量不需要计算滑动平均值,所以这个变量为不可训练变量
# 为什么要把它设为0,参见学习率指数衰减的公式,最开始的指数我们让它为0
# 而且在训练过程中,每一次train_step,global_step都会增加1,所以后面这个值会越来越大
global_step=tf.Variable(0,trainable=False)
#给定滑动平均衰减率和训练轮数的变量,初始化滑动平均类
#给定训练轮数的变量可以加快训练早期变量的更新速度。
variable_average=tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY,global_step)
#在所有神经网络参数的变量上使用滑动平均
variable_average_op=variable_average.apply(tf.trainable_variables())
#计算滑动平均之后的前向传播结果
#滑动平均不会改变变量本身的取值,而是会维护一个影子变量来记录其滑动平均值
#所以当需要使用这个滑动平均值时,需要明确调用average函数。
average_y=inference(X,variable_average,Weight1,biase1,Weight2,biase2)

TensorFlow入门:滑动平均模型相关推荐

  1. Tensorflow:滑动平均模型

    本文转载自:TensorFlow入门:滑动平均模型 在TensorFlow中提供了tf.train.ExponentialMovingAverage 来实现滑动平均模型,在采用随机梯度下降算法训练神经 ...

  2. tensorflow随笔-滑动平均模型

    随机梯度下降算法训练时,使用滑动平均模型 可以提高模型健壮性. 在Tensorflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型.在初始化Expone ...

  3. tensorflow 3.滑动平均模型

    # import tensorflow as tf #定义一个变量用于计算滑动平均,这个变量的初始值为0,注意这里手动指定了变量的类型为tf.float32, # 因为所有需要计算滑动平均的变量必须是 ...

  4. 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型

    本文是<TensorFlow从浅入深>系列之第5篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  5. tensorflow随机梯度下降算法使用滑动平均模型

    在采用随机梯度下降算法训练神经网络时,使用滑动平均模型可以提高最终模型在测试集数据上的表现.在Tensflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模 ...

  6. 浅谈tensorflow的指数衰减学习率、正则化、滑动平均模型

    指数衰减学习率使训练迭代更加有效: 学习率决定了每一次迭代训练过程优化神经网络数的幅度,学习率的正确选取对于训练的效率.和效果均有一定的影响,如果我们学习率设定过大,则会可能导致参数在极值两侧跳动,这 ...

  7. TensorFlow滑动平均模型

    指数加权平均算法的原理 TensorFlow中的滑动平均模型使用的是滑动平均(Moving Average)算法,又称为指数加权移动平均算法(exponenentially weighted aver ...

  8. Tensorflow笔记之滑动平均模型

    为了使模型在测试数据上更健壮的方法------滑动平均模型.在采用随机梯度下降算法训练神经网络时,使用滑动平均模型在很多应用中都可以在一定程度上提高最终模型在测试训练数据上的表现. 在Tensorfl ...

  9. Tensorflow详解(八)——滑动平均模型

    目录 1.目标: 2.python实现方法: 3.tensorflow计算步骤: 1.目标: 为了在采用随机梯度下降算法训练神经网络时提高最终模型在测试数据上的表现,Tensorflow提供了一种在变 ...

最新文章

  1. 这三个普通程序员,几个月就成功转型AI,他们的经验是...
  2. [转]用 jQuery 实现页面滚动(Scroll)效果的完美方法
  3. vue项目结构php写哪里,Vue-cli搭建项目后目录结构的分析(图文)
  4. codewars068 - Convert string to camel case
  5. ngx_lua 金山项目 黄雀
  6. Python基础之数据类型(一)
  7. 关于js中namespace命名空间模式
  8. HTTP深入浅出个人总结
  9. epic堡垒之夜显示服务器离线,堡垒之夜epic服务器进不去 | 手游网游页游攻略大全...
  10. MATLAB求解非线性方程组
  11. [Poi2011]Tree Rotations线段树合并
  12. 【C语言】《程序设计基础(C语言)》自编题解索引
  13. 鸿蒙系统上线 华为内部人员喷了,鸿蒙系统上线?华为人员表示:勿上当 山寨网站...
  14. c++tcp接收文件缓存多大合适_要是有人问我 TCP, 我能怎么扯
  15. Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.
  16. 亚马逊发布新流媒体音乐服务:最低每月4美元
  17. 星空连线html5,js canvas实现星空连线背景特效
  18. Latch up 闩锁效应
  19. 智能仓储物流技术知识点汇总(部分)
  20. 转行软件测试两个多月,感觉很迷茫,下一步该如何提高自己?

热门文章

  1. 网络通信TCP协议三次握手
  2. 图片转 base64,压缩图片体积
  3. nginx配置https后,重定向总是跳转到http
  4. 一个程序员的2018年公考/事业单位经历分享【原创】
  5. 网站界面设计应遵循的几个原则(转载)
  6. jvm虚拟机内存使用配置及优化
  7. 笔记-13-多线程 Thread方法 线程安全 生产者和消费者 死锁和阻塞
  8. 华为荣耀系列手机无法查看logcat
  9. 数据可视化:绘制图表(一)——柱状图
  10. 【Springboot-themeleaf】thymeleaf模板使用