有人可以在tensorflow教程中解释日志设备的位置吗?

时间:2017-04-07 06:17:05

标签: tensorflow

Link for the tf tutorial

# Creates a graph.
with tf.device('/cpu:0'):
  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
  c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print sess.run(c)

在上面的示例中,cpu:0已分配给执行过程。 使用log_device_placement 为true。所以这是上面提到的代码的解决方案

Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Tesla K40c, pci bus
id: 0000:05:00.0
b: /job:localhost/replica:0/task:0/cpu:0
a: /job:localhost/replica:0/task:0/cpu:0
MatMul: /job:localhost/replica:0/task:0/gpu:0
[[ 22.  28.]
 [ 49.  64.]]  

现在这里占位符a,b和在会话内运行的matmul操作c在设备日志cpu:o中但在日志设备描述中 为什么只有MatMul在gpu中执行:0 ?

1 个答案:

答案 0 :(得分:1)

这似乎是文档中的错误,在这种情况下,MatMul操作将放在CPU上。

确实,运行代码示例会显示:

MatMul: (MatMul): /job:localhost/replica:0/task:0/cpu:0
b: (Const): /job:localhost/replica:0/task:0/cpu:0
a: (Const): /job:localhost/replica:0/task:0/cpu:0
random_normal/RandomStandardNormal: (RandomStandardNormal): /job:localhost/replica:0/task:0/gpu:0

将显示以下展示位置:

c = tf.matmul(a, b)

我认为文档错误是with tf.device('/cpu:0')语句应该在var index = 0; for (var i = 0, i < asset_MasterDataGrid.Columns.Count; i++) if (((DataColumn)asset_MasterDataGrid).ColumnName == "Serial Num") { index = i; break; } 范围之外。