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參數使之在訓練初期更新比較快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM