1. 程式人生 > >tensorflow-正則化與指數衰減率

tensorflow-正則化與指數衰減率

指數衰減率
先用較大的學習率快速迭代,得到一個較優的解。然後,指數衰減法生效,隨著迭代的繼續逐步減少學習率,這樣,可以得到更穩定的解。
decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)
decay_rate衰減係數
decay_steps衰減速度
當staircase為True,則global_step/decay_steps為整數(學習率下降階梯),否則為浮點數(學習率下降平滑)。

globalStep=tf.Variable(0)
learningRate=tf.train.exponential_decay(0.1,globalStep,100,0.96,staircase=True)
learningStep=tf.train.GradientDescentOptimizer(learningRate).minimize(losss,global_step=globalStep)

正則化
正則化可避免過擬合,模型的複雜程度,由神經網路的所有引數決定,w和b,一般是由權重w決定。
1.L1正則化
L1:
tensorflow-正則化與指數衰減率
L2:
tensorflow-正則化與指數衰減率
L1使引數變得稀疏,很多引數會為0,這樣,可以達到類似特徵提取的作用。L1不可導。
L2公式可導,所以對其優化更簡潔,但其沒有稀疏作用。
可將2個正則化一起使用
tensorflow-正則化與指數衰減率

#L2
loss=tf.reduce_mean(tf.square(y_-y)+tf.contrib.layers.l2_regularizer(lambda)(w)
#lambda為正則化權重,即:R(w)*lambda
#L1
loss=tf.reduce_mean(tf.square(y_-y)+tf.contrib.layers.l1_regularizer(lambda)(w)