首先,
tf.train.GradientDescentOptimizer旨在对所有步骤中的所有变量使用恒定的学习率。TensorFlow还提供了开箱即用的自适应优化器,包括
tf.train.AdagradOptimizer和
tf.train.AdamOptimizer,这些可以用作即插即用的替代品。
但是,如果您希望通过原始的梯度下降来控制学习速率,则可以利用以下事实:构造函数的
learning_rate参数可以是一个对象。这使您可以在每个步骤中为学习率计算一个不同的值,例如:
tf.train.GradientDescentOptimizer
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保存学习率的标量,并在每次要更改学习率时分配它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)