目录

1.目标:

2.python实现方法:

3.tensorflow计算步骤:


1.目标:

为了采用随机梯度下降算法训练神经网络时提高最终模型在测试数据上的表现,Tensorflow提供了一种在变量上使用滑动平均的方法——滑动平均模型

滑动平均算法会对每一个变量的影子变量(shadow_variable)进行维护,这个影子变量的初始值就是相应变量的初始值;当变量发送变化,影子变量的值会进行更新,更新公式——

从公式可以看出,decay决定了滑动平均模型的更新速度,一般会设成非常接近1的数(如0.99或0.999),decay值越大模型越趋于稳。

2.python实现方法:

import numpy as npimport matplotlib.pyplot as pltdef movingaverage(Decay=0.99):#Decay=0.99shadow_list=[]shadow_variable=y[0]for variable in y:shadow_variable=Decay*shadow_variable+(1-Decay)*variableshadow_list.append(shadow_variable)return shadow_listif __name__=='__main__':x = np.array(range(100), dtype=np.float32)bias = np.random.uniform(-100, 100, size=(100))y = x * x + biasy_average=movingaverage()#print(y_average)plt.figure(figsize=(80,40),dpi=80)plt.subplot(121)plt.plot(x,y)plt.subplot(122)plt.plot(x,y_average)plt.show()

效果图:

3.tensorflow计算步骤:

3.1.通过tf.train.ExponentialMovingAverage()函数创建一个滑动平均类,同时需要向函数提供一个衰减率(Decay)参数,用于控制模型的更新速度;

num_updates参数来限制Decay的大小,如果初始化时提供了num_updates参数,那么每次使用的衰减率decay值将由下式决定:

Args:decay: 衰减率,Float类型.num_updates: Optional count of number of updates applied to variables.zero_debias: If `True`, zero debias moving-averages that are initialized with tensors.name: String. Optional prefix name to use for the name of ops added in  `apply()`.

averages_class = tf.train.ExponentialMovingAverage(0.99,training_step)

3.2.通过apply(self,var_list)函数——ExponentialMovingAverage类函数——提供要进行滑动平均计算的变量,其中var_list参数是一个传递进来的参数列表

averages_op = averages_class.apply(tf.trainable_variables())

3.3.average()函数——ExponentialMovingAverage类函数——执行影子变量的计算,使用时,对其传入需要进行计算的变量即可。

averages_class.average(weights1)

3.4.训练模型时,每过一遍数据既需要通过反向传播来更新神经网络中的参数又需要更新每一个参数的滑动平均值

方法1:train_op = tf.group(train_step,averages_op)

方法2:with tf.control_dependencies([train_step,averages_op]):
                          train_op = tf.no_op(name="train")

Tensorflow详解(八)——滑动平均模型相关推荐

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

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

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

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

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

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

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

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

  5. TensorFlow滑动平均模型

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

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

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

  7. TensorFlow入门:滑动平均模型

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

  8. Tensorflow:滑动平均模型

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

  9. GrabCut算法详解:从GMM模型说起

    GrabCut算法详解:从GMM模型说起 最近正在学习CG,争取有时间就看点论文写写代码. GrabCut在OpenCv里面是有内置函数的,不过我还是用C++纯手工实现了一边原汁原味的论文,githu ...

  10. 【深度学习】详解Resampling和softmax模型集成

    [深度学习]详解Resampling和softmax模型集成 文章目录 1 图像重采样1.1 次级采样(sub-sampling)1.2 高斯金字塔(Gaussian pyramids)1.3 上采样 ...

最新文章

  1. dropout层的作用_循环神经网络的 Dropout
  2. Python 之协程
  3. ArrayList分析
  4. GameMaker Studio 中的组合技(Combo)设置
  5. 漫画科普:天线的原理?
  6. Elasticsearch数据库
  7. Flask项目中应用七牛云存储
  8. Scrapy 爬虫框架初体验三 —— 工程优化及其完善
  9. delphi BLE 后台
  10. Django:数据进行md5加密
  11. 字节流自带缓存,而字节流不带
  12. python代理IP的使用
  13. 系统垃圾清理 bat文件
  14. ASN.1入门(超详细)
  15. 【办公-excel】两个时间相减
  16. c# 指定打开某个路径下的CMD_这招太厉害了,不用鼠标也可以打开指定文件
  17. 设备驱动中的并发控制
  18. 中国最低调的河,长约1000公里,却养育了上亿人口
  19. SpringBoot基础的依赖说明
  20. 《你的生命有什么可能》---- 读书笔记

热门文章

  1. 基于Java(SSH)+ Oracle 实现的(Web)视频教学平台【100010405】
  2. 跳伞能否应对直升机失事
  3. 微信多媒体录音文件下载 问题 ! invalid media_id hint
  4. 时间和空间复杂度计算
  5. 贝叶斯 概率 似然函数
  6. 用for循环求1~10所有偶数的和并显示奇数偶数
  7. elastic8 9200无法访问
  8. 使用Docker简化离线Python部署
  9. ORACLE GOLDENGATE 监控脚本
  10. 力扣-309最佳买卖股票时机含冷冻期(dp)