tensorflow學習筆記(4)-學習率
阿新 • • 發佈:2018-05-27
admin tde step glob inf 優化參數 會話 CA bubuko
tensorflow學習筆記(4)-學習率
首先學習率如下圖
所以在實際運用中我們會使用指數衰減的學習率
在tf中有這樣一個函數
tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)
首先看下它的數學表達式:decayed_learing_rate=learing_rate*decay_rate^(gloabl_steps/decay_steps)
如圖
- 第一個參數是學習率,
- /第二個參數是用來計算訓練論數的,每次加一
- 第三個參數通常設為常數
- 第四個參數是學習率下降的倍率
- 第五個參數設為True則指數部分會采用取整的方式
# -*- coding: utf-8 -*- """ Created on Sun May 27 11:19:46 2018 @author: Administrator """ #設算是函數loss=(w+1)^2令w初始值為常熟10,反向傳播求最優w,求最小loss對應的w的值 #使用指數衰減的學習率,在叠代初期有比較搞的下降速度,可以在比較小的訓練輪數下更有收斂度 import tensorflow as tf LEARNING_RATE_BASE=0.1 #最初學習率 LEARNING_RATE_DECAY=0.99#學習率衰減 LEARNING_RATE_STEP=1#餵入多少倫BATCH_SIZE後更新一次學習率,一般威威總樣本數/BATCH_SIZE #運行了幾輪BATCH_SIZE的計數器,初值給0,設為不被訓練 global_step=tf.Variable(0,trainable=False) #定義指數下降學習率 learning_rate=tf.train.exponential_decay(LEARNING_RATE_BASE,global_step, LEARNING_RATE_STEP,LEARNING_RATE_DECAY ,staircase=True) #定義待優化參數,初始值10 w=tf.Variable(tf.constant(5,dtype=tf.float32)) #定義損失函數 loss=tf.square(w+1) #定義反向傳播方法 train_step=tf.train.GradientDescentOptimizer(learning_rate).minimize( loss,global_step=global_step) #生成會話,訓練40論 with tf.Session() as sess: init_op=tf.global_variables_initializer() sess.run(init_op) for i in range(40): sess.run(train_step) #更新學習速率 learning_rate_val=sess.run(learning_rate) global_step_val=sess.run(global_step) w_val=sess.run(w) loss_val=sess.run(loss) print("在%s次訓練後 global_step為%f權重為%f,學習率為%f,損失為%f"%(i, global_step_val, w_val,learning_rate_val, loss_val))
運行結果如下,我們也可以改變學習率更改的速率或者其他參數來看對損失率的影響。
tensorflow學習筆記(4)-學習率