Tensorflow control_dependencies不适用于列表

时间:2016-10-03 12:54:38

标签: python tensorflow deep-learning

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

  1. 计算当前点的成本梯度,
  2. 更新损失w.r.t.第一个变量列表(a
  3. 更新损失w.r.t.第二个变量列表(b)。
  4. 按顺序。

    要做到这一点,我尝试过这样的事情:

    编辑:关注@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})
    

    首先这不起作用我得到: 无法将列表转换为Tensor或Operation,但control_dependencies应该收到张量列表......

    那么奖金问题我真的需要所有那些control_dependencies吗?

1 个答案:

答案 0 :(得分:1)

您的grad_cost_wrt_agrad_cost_wrt_b个变量是列表,请执行grad_cost_wrt_a[0], grad_cost_wrt_b[0]

之类的操作