日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tf.train.ExponentialMovingAverage

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tf.train.ExponentialMovingAverage 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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
  • import?tensorflow?as?tf;??
  • import?numpy?as?np;??
  • import?matplotlib.pyplot?as?plt;??
  • ??
  • v1?=?tf.Variable(0,?dtype=tf.float32)??
  • step?=?tf.Variable(tf.constant(0))??
  • ??
  • ema?=?tf.train.ExponentialMovingAverage(0.99,?step)??
  • maintain_average?=?ema.apply([v1])??
  • ??
  • with?tf.Session()?as?sess:??
  • ????init?=?tf.initialize_all_variables()??
  • ????sess.run(init)??
  • ??
  • ????print?sess.run([v1,?ema.average(v1)])?#初始的值都為0??
  • ??
  • ????sess.run(tf.assign(v1,?5))?#把v1變為5??
  • ????sess.run(maintain_average)??
  • ????print?sess.run([v1,?ema.average(v1)])?#?decay=min(0.99,?1/10)=0.1,?v1=0.1*0+0.9*5=4.5??
  • ??
  • ????sess.run(tf.assign(step,?10000))?#?steps=10000??
  • ????sess.run(tf.assign(v1,?10))?#?v1=10??
  • ????sess.run(maintain_average)??
  • ????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??
  • ??
  • ????sess.run(maintain_average)??
  • ????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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。