如何在训练期间切换tf.train.Optimizers?

时间:2017-10-20 14:04:25

标签: machine-learning tensorflow gradient-descent

我希望在一定数量的纪元之后从Adam切换到SGD。如何平滑地执行此操作以便将权重/渐变传递给新的优化程序?

1 个答案:

答案 0 :(得分:3)

只需定义两个优化器并在它们之间切换:

sgd_optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
adap_optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
...
for epoch in range(100):
  for (x, y) in zip(train_X, train_Y):
    optimizer = sgd_optimizer if epoch > 50 else adap_optimizer
    sess.run(optimizer, feed_dict={X: x, Y: y})

优化器仅封装了将渐变应用于张量的方法,并且可能只包含一些自己的变量。模型权重不存储在优化器中,因此您可以轻松切换它们。