zoukankan      html  css  js  c++  java
  • tensorflow笔记之滑动平均模型

    tensorflow使用tf.train.ExponentialMovingAverage实现滑动平均模型,在使用随机梯度下降方法训练神经网络时候,使用这个模型可以增强模型的鲁棒性(robust),可以在一定程度上提高模型在测试数据集上的表现。

    滑动平均模型为每个变量维护一个影子变量,其初始值是变量的初始值,每次变量更新时,影子变量的值会更新为:

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

    其中shadow_variable为影子变量,variable为初始变量,decay为衰减率。

    decay决定了模型更新的速度,decay越大,模型跟新越慢,越稳定。实际工作中,decay一般设置为非常接近1的数(0.99或0.999之类),为了在训练初期加快更新速度,可以提供num_steps参数,提供这个参数后,decay的取值变为:

    min(decay, (1+num_step)/(10+num_step))

    num_step表示实际的训练步数。

    如果提供了num_steps那么在num_step还比较小的时候,min()会取到右边比较小的部分,也就是有一个比较小的decay,这个时候模型更新会很快,当step增大时,模型更新速度会逐渐降低。

    在应用滑动平均模型后,并不会改变变量的值,但是会维护一个影子变量来记录其滑动平均值,获取变量的滑动平均值实际上就是获取变量的影子变量的值,影子变量的值是当前值和更新后的值之间的一个值,相当与限制参数的更新速度,让更新比较缓慢,比较稳妥,但是在训练初期会导致更新比较慢,所以才有提供num_steps参数使之在训练初期更新比较快。

  • 相关阅读:
    sql 在日期范围内搜索
    js 处理日期时间字符串显示的方法
    matlab练习程序(并行计算)
    C++程序运行时间
    matlab练习程序(KNN,K最邻近分类法)
    多媒体指令(像素处理)
    ubuntu启动/重启/停止apache
    matlab练习程序(matlab调用c/c++)
    我的vim设置
    matlab练习程序(c/c++调用matlab<engine>)
  • 原文地址:https://www.cnblogs.com/buxizhizhoum/p/8301284.html
Copyright © 2011-2022 走看看