我想从Adam https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer to SGD https://www.tensorflow.org/api_docs/python/tf/train/GradientDescentOptimizer经过一定数量的 epoch 后。如何顺利地完成此操作,以便将权重/梯度传递给新的优化器?
只需定义两个优化器并在它们之间切换:
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})
优化器仅封装将梯度应用于张量的方式,并且可能仅保存一些自己的变量。模型权重不存储在优化器中,因此您可以轻松切换它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)