Tensorflow多次运行和节点放置

时间:2016-11-21 03:39:09

标签: tensorflow tensorflow-serving

在这个Tensorflow Distributed Training代码示例中,sess.run([train_op, global_step])将被多次调用(在while循环中)。从执行DAG操作之前,Tensorflow首先需要将图形节点放置到某些设备(节点放置过程)。

在这种情况下,我想知道需要完成多少个节点放置过程。假设循环计数为N,Tensorflow sys是否仅执行节点放置?或执行节点放置 N次

1 个答案:

答案 0 :(得分:1)

节点的设备放置只发生一次。您可以使用tf.devicetf.train.replica_device_setter等指令控制设备展示位置。

由于tensorflow会按设备划分图形,添加recv并将节点发送到每个子图并执行其他设置,将这些节点替换为不同的设备是很昂贵的。但您仍然可以在调用session.run之间更改图表。

修改 设备为an attribute of a node,由this function设置,并在构建图形时设置。当您使用tf.device时,设备功能将被推送到堆栈,并且以下节点将调用堆栈中的设备功能以获取设备分配。它的实现可以在这里找到:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py#L2880

(TensorFlow使用延迟执行。)在评估图形时,根据设备分配,它将是partitioned,子图将被发送到不同的设备以执行。