使用多个优化器时optimizier.apply_gradients()的行为

时间:2017-03-11 06:22:17

标签: optimization tensorflow

我想用两次失败训练神经网络。我将两个tf.train.Adamoptimizer()定义为optim1optim2,以优化两个损失loss1loss2

在我的网络中,部分图层(比如设置 S )会导致两种损失。现在,如果我需要使用两个优化器训练整个网络end2end。我可以简单地做吗

gradient_1 = tf.gradients(loss_1, vars_1)
train_op_1 = optim1.apply_gradients(zip(gradient_1, vars_1))

gradient_2 = tf.gradients(loss_2, vars_2)
train_op_2 = optim1.apply_gradients(zip(gradient_2, vars_2))

sess.run([train_op_1, train_op_2])

来自两个优化器的两个渐变是否属于 S 会自动累积吗?或者每次应用apply_gradients时,渐变都将归零。如果是后者,我目前的实施是错误的。我可能需要将新的损失loss = loss1 + loss2定义为https://github.com/jg8610/multi-task-part-1-notebook/blob/master/Multi-Task%20Learning%20Tensorflow%20Part%201.ipynb建议。 但是,如果我想分别对gradient_1 and gradient_2执行更多操作,那么该解决方案就不是很灵活。

有什么好建议吗?谢谢!

0 个答案:

没有答案