Tensorflow 如何完成这个非常简单的分布式培训示例?

Tensorflow 如何完成这个非常简单的分布式培训示例?,tensorflow,Tensorflow,我使用的是tensorflow版本0.12.1及以下版本 我想做的是在每个工人的计数中添加1 我的目标是打印>1的结果,但我只得到1 将tensorflow导入为tf FLAGS=tf.app.FLAGS.FLAGS tf.app.flags.DEFINE_字符串('job_name','','') tf.app.flags.DEFINE_字符串('ps_hosts','','') tf.app.flags.DEFINE_字符串('worker_hosts','','') tf.app.flag

我使用的是tensorflow版本0.12.1及以下版本

我想做的是在每个工人的
计数中添加1

我的目标是打印>
1
的结果,但我只得到
1

将tensorflow导入为tf
FLAGS=tf.app.FLAGS.FLAGS
tf.app.flags.DEFINE_字符串('job_name','','')
tf.app.flags.DEFINE_字符串('ps_hosts','','')
tf.app.flags.DEFINE_字符串('worker_hosts','','')
tf.app.flags.DEFINE_integer('task_index',0',)
ps_hosts=FLAGS.ps_hosts.split(','))
worker_hosts=FLAGS.worker_hosts.split(','))
cluster_spec=tf.train.ClusterSpec({'ps':ps_hosts,'worker':worker_hosts})
服务器=tf.train.server(
{'ps':ps_hosts,'worker':worker_hosts},
job\u name=FLAGS.job\u name,
任务索引=标志。任务索引)
如果FLAGS.job_name==“ps”:
server.join()
带tf.装置(tf.train.replica\u装置\u setter(
worker\u device=“/job:worker/task:%d”%FLAGS.task\u索引,
集群=集群(规范):
count=tf.变量(0)
计数=tf.add(计数,tf.constant(1))
init=tf.global_variables_initializer()
sv=tf.train.Supervisor(is_主管=(FLAGS.task_索引==0),
logdir=“./checkpoint/”,
init_op=init,
摘要_op=无,
saver=无,
全局步骤=无,
保存(型号(秒=60)
将sv.managed_会话(server.target)作为sess:
sess.run(初始化)
步骤=1
当步骤=2时:
打印(“!!!!!”)
步骤+=1
打印(“完成!”)
sv.stop()

问题实际上独立于分布式执行,并源于以下两行:

  count = tf.Variable(0)
  count = tf.add(count,tf.constant(1))
op是一个纯函数式op,它在每次运行时用输出创建一个新的张量,而不是修改输入。如果希望该值增加,并且该增加在工人中可见,则必须改用该方法,如下所示:

  count = tf.Variable(0)
  increment_count = count.assign_add(1)
然后在训练循环内调用
sess.run(increment\u count)
以增加
count
变量的值