python – 如何设置自适应学习率为GradientDescentOptimizer?

我使用TensorFlow来训练神经网络。这是我如何初始化GradientDescentOptimizer:

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

mse        = tf.reduce_mean(tf.square(out - out_))
train_step = tf.train.GradientDescentOptimizer(0.3).minimize(mse)

这里的事情是,我不知道如何为学习速率或衰减值设置更新规则。

如何在这里使用自适应学习率?

首先,tf.train.GradientDescentOptimizer旨在为所有步骤中的所有变量使用一个不变的学习速率。 TensorFlow还提供了开箱即用的自适应优化器,包括tf.train.AdagradOptimizertf.train.AdamOptimizer,并且这些可以用作插件替换。

但是,如果你想用其他方式控制学习速率,那么你可以利用一个事实,即tf.train.GradientDescentOptimizer constructor的learning_rate参数可以是一个Tensor对象。这允许您为每个步骤中的学习速率计算不同的值,例如:

learning_rate = tf.placeholder(tf.float32, shape=[])
# ...
train_step = tf.train.GradientDescentOptimizer(
    learning_rate=learning_rate).minimize(mse)

sess = tf.Session()

# Feed different values for learning rate to each training step.
sess.run(train_step, feed_dict={learning_rate: 0.1})
sess.run(train_step, feed_dict={learning_rate: 0.1})
sess.run(train_step, feed_dict={learning_rate: 0.01})
sess.run(train_step, feed_dict={learning_rate: 0.01})

或者,您可以创建一个保存学习速率的标量tf.Variable,并在每次要更改学习速率时分配它。

http://stackoverflow.com/questions/33919948/how-to-set-adaptive-learning-rate-for-gradientdescentoptimizer

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 如何设置自适应学习率为GradientDescentOptimizer?