首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有一种方法可以在分布式Tensorflow中追加数据?

有没有一种方法可以在分布式Tensorflow中追加数据?
EN

Stack Overflow用户
提问于 2018-08-15 22:07:18
回答 1查看 144关注 0票数 0

我使用分布式TensorFlow不是为了分发网络,而是为了分发工作。

使用分布式TensorFlow,我们得到了一个框架来分配工作,并在工作者之间进行状态通信。这种轻量级的通信协议,内置的恢复和特定任务的设备选择,使我尝试并使用分布式tensorFlow来并行构建多个微模型。

所以在我的代码中,这就是我要做的。

代码语言:javascript
运行
复制
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),并让chief读写它。有没有办法做到这一点?

如果你在上面的方法中发现任何问题,请更新。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 01:33:55

我对此感到厌烦,并能够将本地员工的信息更新到全球网络

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51860307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档