TensorFlow分布式会话中的图像处理

时间:2017-04-06 13:49:20

标签: opencv session tensorflow distributed preprocessor

我正在使用我的本地计算机(Windows)和Ubuntu VM测试Tensorflow Distributed(https://www.tensorflow.org/deploy/distributed)。哪里, 我已按照此链接Distributed tensorflow replicated training example: grpc_tensorflow_server - No such file or directory设置了Tensorflow所谓的服务器,如下所示。

import tensorflow as tf
parameter_servers = ["10.0.3.15:2222"]
workers = ["10.0.3.15:2222","10.0.3.15:2223"]
cluster = tf.train.ClusterSpec({"local": parameter_servers, "worker": workers})
server = tf.train.Server(cluster, job_name="local", task_index=0)
server.join()

其中“10.0.3.15” - 是我的Ubuntu本地IP地址。 在windows主机中 - 我正在使用open cv进行一些简单的图像预处理,并将图形会话扩展到VM。我使用了以下代码。

  *import tensorflow as tf
  from OpenCVTest import *
  with tf.Session("grpc:// 10.0.3.15:2222") as sess:
  ### Open CV calling section ###
  img = cv2.imread('Data/ball.jpg')
  grey_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
  flat_img_array = img.flatten()
  x = tf.placeholder(tf.float32, shape=(flat_img_array[0],flat_img_array[1]))
  y = tf.multiply(x, x)
  sess.run(y)*

我可以看到我的会话正在我的Ubunu机器上运行。请参见下面的屏幕截图。

Test_result

[注意 - 在图像中您会注意到,在Windows控制台中,我正在调用会话,而Ubuntu终端正在侦听同一会话。 ]

但我观察到的奇怪的是,对于OpenCV预处理操作(grey_img = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)),它正在利用本地OpenCV包。我假设当我在任何其他服务器上运行会话时,它应该在该服务器上执行所有操作。在我的情况下,当我在Ubuntu VM上运行会话时,它应该运行已经使用tf.Session(“grpc:// 10.0.3.15:2222”)定义的所有操作,其中也应该在该ubuntu VM上运行利用VM的本地软件包,但这种情况并没有发生。 我对sess.run(y)的理解是否正确?当我们以分布式方式运行会话时。它是否只通过gRPC将图形计算负载扩展到另一台机器? 我总结一下这样的问题 - “我计划在将值提供给张量之前进行大量的预处理,我希望以分布式方式进行。什么是更好的方法来遵循?我最初的理解是我可以分配张量流,但通过这个测试,我想我可能无法做到。“ 任何想法都会有实际帮助。 谢谢。

0 个答案:

没有答案