2016-10-03 2 views
0

У меня есть стоимость, которая зависит от двух перечней переменных a и b.
Я хочу:Tensorflow control_dependencies не работает со списком

  1. высчитывает как градиенты стоимости на текущий момент,
  2. обновление потери w.r.t. первый список переменных (a)
  3. обновить потерю w.r.t. второй список переменных (b).

В таком порядке.

Для этого я пытался что-то вроде этого:

EDIT: После ответа @Yaroslav Булатова Я попытался следующие:

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?

ответ

1

Ваши grad_cost_wrt_a и grad_cost_wrt_b переменные списки, сделать что-то вроде grad_cost_wrt_a[0], grad_cost_wrt_b[0]

+0

Должен знать! жаль, что я пропустил это! Благодаря ! – jean

+0

На самом деле, как вы обрабатываете случай, когда a и b являются списком переменных? – jean

+0

Я отредактировал свой вопрос? Если я использую только зависимость управления от первых градиентов, переменная кортеж работает, как я хочу? – jean

Смежные вопросы