【发布时间】:2016-10-03 12:54:38
【问题描述】:
我有一个成本,这取决于两个变量列表 a 和 b。
我想:
- 计算当前点成本的两个梯度,
- 更新损失 w.r.t.第一个变量列表 (
a) - 更新损失 w.r.t.第二个变量列表 (
b)。
按这个顺序。
为此,我尝试了这样的方法:
编辑:按照@Yaroslav Bulatov 的回答,我尝试了以下操作:
opt=tf.train.GradientDescentOptimizer(0.001)
grad_cost_wrt_a=opt.compute_gradients(cost,[a])
grad_cost_wrt_b=opt.compute_gradients(cost,[b])
with tf.control_dependencies(grad_cost_wrt_a[0]):
with tf.control_dependencies(grad_cost_wrt_b[0]):
update_wrt_a=opt.apply_gradients(grad_cost_wrt_a)
with tf.control_dependencies([update_wrt_a]):
update_wrt_b=opt.apply_gradients(grad_cost_wrt_b)
想知道这样做是否正确?如果 a 和 b 是变量列表。
然后能够做到:
sess.run([update_wrt_a,update_wrt_b],feed_dict={x: x_input, y: y_input})
首先这不起作用我得到: 无法将列表转换为张量或操作,但 control_dependencies 应该接收张量列表...
那么我真的需要所有这些 control_dependencies 吗?
【问题讨论】:
标签: python tensorflow deep-learning