【问题标题】:Tensorflow control_dependencies not working with listTensorflow control_dependencies 不适用于列表
【发布时间】:2016-10-03 12:54:38
【问题描述】:

我有一个成本,这取决于两个变量列表 ab
我想:

  1. 计算当前点成本的两个梯度,
  2. 更新损失 w.r.t.第一个变量列表 (a)
  3. 更新损失 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


    【解决方案1】:

    您的 grad_cost_wrt_agrad_cost_wrt_b 变量是列表,请执行 grad_cost_wrt_a[0], grad_cost_wrt_b[0] 之类的操作

    【讨论】:

    • 应该知道!对不起,我错过了!谢谢!
    • 实际上你如何处理a和b是变量列表的情况?
    • 我编辑了我的问题?如果我只对第一个渐变使用控制依赖,变量元组会像我想要的那样工作吗?
    • 我不得不将第一个 control_dependency 拆分成两个链式依赖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2020-10-31
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多