深度學習的訓練中,學習率的初始值對訓練的最終結果有著較大的影響,過大或過小的學習率可能使得網路無法收斂,或者收斂很慢,因此需要選擇合適的初值,並且要合理的降低學習率;
參考部落格:
下面主要介紹如下幾種常見的學習率衰減方式:
指數衰減
分段常數衰減
1、指數衰減
tf.train.exponential_decay(
learning_rate, # 初始學習率大小
global_step, # 設定記錄全域性步數
decay_steps, # 衰減週期,若staircase=true時,那麼decay_steps內,學習率不變,否則就是指數衰減
decay_rate, # 衰減係數
staircase=false, # 是否為離散型學習率,預設為false
name=none):
計算公式:
decayed_learning_rate = learning_rate * decay_rate ^ (global_step/decay_step)
若staircase=true,則(global_step/decay_step)會向下取整,也即是decay_step內學習率不變
使用例項:
import matplotlib.pyplot as plt
import tensorflow as tf
global_step = tf.variable(0, name='global_step', trainable=false)
y =
z =
epoch = 200
with tf.session() as sess:
sess.run(tf.global_variables_initializer())
for global_step in range(epoch):
# 階梯型衰減
learing_rate1 = tf.train.exponential_decay(
learning_rate=0.5, global_step=global_step, decay_steps=10, decay_rate=0.9, staircase=true)
# 標準指數型衰減
2、分段常數衰減
tf.train.piecewise_constant(
global_step, # 迭代次數
boundaries, # 表示階段的分割邊界
values, # 分段學習率取值
name=none):
計算方式:
# parameter
global_step = tf.variable(0, trainable=false)
boundaries = [100, 200]
values = [1.0, 0.5, 0.1]
# learning rate
learning_rate = tf.train.piecewise_constant(global_step, boundaries, values)
# explain
# 當 global_step=[1,100], learning_rate = 1.0;
# 當 global_step=[100,200], learning_rate = 0.5;
當 global_step=[200,~], learning_rate = 0.1;
使用例項:
import matplotlib.pyplot as plt
import tensorflow as tf
global_step = tf.variable(0, name='global_step', trainable=false)
boundaries = [10, 20, 30]
learing_rates = [0.1, 0.07, 0.025, 0.0125]
y =
n = 40
with tf.session() as sess:
sess.run(tf.global_variables_initializer())
for global_step in range(n):
learing_rate = tf.train.piecewise_constant(global_step, boundaries=boundaries, values=learing_rates)
lr = sess.run([learing_rate])
x = range(n)
plt.plot(x, y, 'r-', linewidth=2)
plt.title('piecewise_constant')
plt.show()
TensorFlow 學習率的設定
為了解決學習率不能過大不能過小的問題,tensorflow提供了靈活的學習率設定方法 指數衰減法 tensorflow.train.exponential decay learing rate,global step,decay steps,decay rate,staircase false,na...
TensorFlow深度學習框架
tensorflow支援python和c 兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。tensorflow 是乙個採用資料流圖 data flow gr...
深度學習框架Tensorflow
tensorflow分為cpu與gpu兩個版本,可以使用如下命令安裝tensorflow jupyter中的安裝 pip install tensorflow cpu版本 pip install tensorflow gpu gpu版本 安裝之後,在程式中就可以通過import匯入使用,按照管理,我...