退化學習率的用法舉例
三 執行結果0.11 0.0989519import tensorflow as tf global_step = tf.Variable(0, trainable=False) initial_learning_rate = 0.1 #初始學習率 learning_rate = tf.train.exponential_decay(initial_learning_rate, global_step, decay_steps=10,decay_rate=0.9) opt = tf.train.GradientDescentOptimizer(learning_rate) add_global = global_step.assign_add(1) with tf.Session() as sess: tf.global_variables_initializer().run() print(sess.run(learning_rate)) for i in range(20): g, rate = sess.run([add_global, learning_rate]) print(g,rate)
2 0.09791483 0.09791484 0.09587325 0.09486836 0.0938747 0.09289028 0.09289029 0.091916610 0.0911 0.089056712 0.088123413 0.087199814 0.086285815 0.085381516 0.084486617 0.083601118 0.08272519 0.081857920 0.0818579四 說明第1個數是迭代次數,第2個是輸出的學習率,可以看到學習率在逐漸變小,在第11次由原來的0.1變成了0.09.這是一種常用的訓練策略,在訓練神經網路時,通常在訓練剛開始使用較大的learning_rate,隨著訓練的進行,會慢慢減小learning_rate。在使用時,一定要把當前迭代次數global_step傳進去,否則不會有退化功能。