Python 有没有办法在分布式Tensorflow中追加数据?
我使用分布式TensorFlow不是分发网络,而是分发工作 通过分布式TensorFlow,我们得到了分配工作的框架以及工人之间的状态通信。这种轻量级通信协议、内置恢复和特定任务的设备选择使我尝试使用分布式tensorFlow并行构建多个微观模型 所以在我的代码中,这就是我正在做的Python 有没有办法在分布式Tensorflow中追加数据?,python,tensorflow,distributed,Python,Tensorflow,Distributed,我使用分布式TensorFlow不是分发网络,而是分发工作 通过分布式TensorFlow,我们得到了分配工作的框架以及工人之间的状态通信。这种轻量级通信协议、内置恢复和特定任务的设备选择使我尝试使用分布式tensorFlow并行构建多个微观模型 所以在我的代码中,这就是我正在做的 def main(_): #some global data block a = np.arange(10).reshape((5, 2)) with tf.device(tf.train.
def main(_):
#some global data block
a = np.arange(10).reshape((5, 2))
with tf.device(tf.train.replica_device_setter(worker_device="/job:worker/task:%d" %server.server_def.task_index,cluster=server.server_def.cluster)):
#some ops to keep the cluster alive
var = tf.Variable(initial_value=10, name='var')
op = tf.assign_add(var,10)
xx = tf.placeholder("float")
yy = tf.reduce_sum(xx)
#start monitoring session
with tf.train.MonitoredTrainingSession(master=server.target,is_chief=is_chief) as mon_sess:
mon_sess.run(op)
#distribute data
inputs = a[:,server.server_def.task_index]
#start a local session in worker
sess = tf.Session()
sum_value = sess.run(yy,feed_dict={xx:inputs})
sess.close()
在每个工人的工作完成后,我想附加一些信息到
全局网络中的一个变量。(在上面的示例中,我们无法更新全局变量,如a
,因此我想使用mon_sess
来更新全局网络
我想继续添加一些张量(每个工人的o/p),让主管读写出来。
有办法做到这一点吗
如果您在上述方法中发现任何问题,请更新
谢谢,我厌倦了这一点,能够从本地工人信息中获取到全球网络的更新
import tensorflow as tf
import numpy as np
import os
import time
def main(server, log_dir, context):
#create a random array
a = np.arange(10).reshape((5, 2))
with tf.device(tf.train.replica_device_setter(worker_device="/job:worker/task:%d" %server.server_def.task_index,cluster=server.server_def.cluster)):
var = tf.Variable(initial_value=10, name='var')
op = tf.assign_add(var,10)
xx = tf.placeholder("float")
yy = tf.reduce_sum(xx)
concat_init = tf.Variable([0],dtype=tf.float32)
sum_holder = tf.placeholder(tf.float32)
concat_op = tf.concat([concat_init,sum_holder],0)
assign_op = tf.assign(concat_init,concat_op,validate_shape=False)
is_chief = server.server_def.task_index == 0
with tf.train.MonitoredTrainingSession(master=server.target,is_chief=is_chief) as mon_sess:
mon_sess.run(op)
print (a)
print ("reading my part")
inputs = a[:,server.server_def.task_index]
print(inputs)
sess = tf.Session()
sum_value = sess.run(yy,feed_dict={xx:inputs})
print(sum_value)
mon_sess.run(assign_op,feed_dict={sum_holder:[sum_value]})
if is_chief:
time.sleep(5)
worker_sums = mon_sess.run(assign_op,feed_dict={sum_holder:[0]})
print (worker_sums)
sess.close()
if is_chief:
while True:
pass