在训练神经网络时,需要设置学习率(learning rate)控制参数的更新速度,学习速率设置过小,会极大降低收敛速度,增加训练时间;学习率太大,可能导致参数在最优解两侧来回振荡。
optimizer = tf.train.GradientDescentOptimizer(0.1)
建议初学,学习率设置为0.1
并不是学习率设置越大,训练效果越好,很有可能是反效果
学习率的指数下降:
import 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=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(1): _, rate = sess.run([add_global, learning_rate]) print(rate)