TensorFlow apply_gradients de forma remota

Estoy tratando de dividir la función de minimizar en dos máquinas. En una máquina, llamo "compute_gradients", en otra llamo "apply_gradients" con gradientes que se enviaron a través de la red. El problema es que llamar a apply_gradients (...). Run (feed_dict) no parece funcionar sin importar lo que haga. He intentado insertar marcadores de posición en lugar de los gradientes tensoriales para apply_gradients,

  variables = [W_conv1, b_conv1, W_conv2, b_conv2, W_fc1, b_fc1, W_fc2, b_fc2]
  loss = -tf.reduce_sum(y_ * tf.log(y_conv))
  optimizer = tf.train.AdamOptimizer(1e-4)
  correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
  accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
  compute_gradients = optimizer.compute_gradients(loss, variables)

  placeholder_gradients = []
  for grad_var in compute_gradients:
     placeholder_gradients.append((tf.placeholder('float', shape=grad_var[1].get_shape()) ,grad_var[1]))
  apply_gradients = optimizer.apply_gradients(placeholder_gradients)

luego, cuando recibo los gradientes que llamo

  feed_dict = {}
  for i, grad_var in enumerate(compute_gradients):
        feed_dict[placeholder_gradients[i][0]] = tf.convert_to_tensor(gradients[i])
  apply_gradients.run(feed_dict=feed_dict)

Sin embargo, cuando hago esto, me sale

ValueError: establecer un elemento de matriz con una secuencia.

Esto es solo lo último que he probado, también he probado la misma solución sin marcadores de posición, además de esperar para crear la operación apply_gradients hasta que reciba los degradados, lo que da como resultado errores de gráficos no coincidentes.

¿Alguna ayuda en qué dirección debo ir con esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta