Tensorflow框架 學習率的設定

2021-09-28 17:51:55 字數 3254 閱讀 5377

深度學習的訓練中,學習率的初始值對訓練的最終結果有著較大的影響,過大或過小的學習率可能使得網路無法收斂,或者收斂很慢,因此需要選擇合適的初值,並且要合理的降低學習率;

參考部落格:

下面主要介紹如下幾種常見的學習率衰減方式:

指數衰減

分段常數衰減

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匯入使用,按照管理,我...