1. 程式人生 > >深層神經網路——滑動平均模型

深層神經網路——滑動平均模型

在採用隨機梯度下降演算法訓練神經網路時,使用滑動平均模型在很多應用中都可以在一定程度上提高最終模型在測試資料上的表笑。
在Tensorflow中提供了tf.train.ExponentialMovingAverage來實現滑動平均模型。在初始化ExponentialMovingAverage 時,需要提供一個衰減率(decay)。這個衰減率會用於控制模型的更新速度。ExponentialMovingAverage對每一個變數會維護一個影子變數(shadow variable),這個影子變數的初始值就是相應變數的初始值,而每次執行變數更新時,影子變數的值會被更新為:
這裡寫圖片描述
其中shadow_variable是影子變數,variable是待更新的變數,decay是衰減率。從公式中可以看到,decay決定了模型更新的速度,decay越大模型越穩定。在實際應用中,decay一般被設定為非常接近1的數(0.99、0.999),為了使得模型在訓練前期可以更新的更快,ExponentialMovingAverage提供了num_updates引數來動態設定decay的大小。如果ExponentialMovingAverage初始化時提供了num_dates引數,那麼每次使用的衰減率將會是:
這裡寫圖片描述


tf.Varialbe():trainable: 如果為True(預設也為Ture),這個變數就會被新增到圖的集合GraphKeys.TRAINABLE_VARIABLES.中去 ,這個collection被作為優化器類的預設列表。
程式碼:
這裡寫圖片描述
這裡寫圖片描述