以编程方式获取Tensorflow op的设备位置

以编程方式获取Tensorflow op的设备位置,tensorflow,Tensorflow,我想写一个断言,确保图形中的某些操作将在特定设备上运行。如何以编程方式确定op的设备位置,以便编写这样的断言?您可以使用 with tf.device('/gpu:0'): 在定义操作之前(有关详细信息,请参阅) 编辑: 每个可用的gpu都有自己的索引:'/gpu:0'、'/gpu:1'、'/gpu:2'等。这样,您可以将特定操作绑定到特定的gpu。导入tensorflow时,它会打印出可用的GPU以及分配的索引 (例如,它打印:创建TensorFlow设备(/gpu:0)->(设备:0,名称

我想写一个断言,确保图形中的某些操作将在特定设备上运行。如何以编程方式确定op的设备位置,以便编写这样的断言?

您可以使用

with tf.device('/gpu:0'):
在定义操作之前(有关详细信息,请参阅)

编辑:

每个可用的gpu都有自己的索引:'/gpu:0'、'/gpu:1'、'/gpu:2'等。这样,您可以将特定操作绑定到特定的gpu。导入tensorflow时,它会打印出可用的GPU以及分配的索引


(例如,它打印:创建TensorFlow设备(/gpu:0)->(设备:0,名称:GeForce GTX 1070,pci总线id:…)

,这将确保不会意外地在cpu而不是gpu上运行。问题是它无法确保您使用的是预期的gpu。例如,这不会让您在显示gpu上训练模型。@sudo nim在给定的链接中,在第一段中,它向您展示了如何分配不同的gpu。我编辑了我的答案以使其更清晰。这很有帮助,唯一的问题是我仍然需要检查日志以查看设备映射是什么。如果我在另一台具有不同设备映射的机器上运行代码,或者nvidia设置发生了更改,这将不会自动捕获它。@sudo nim您可以在运行时使用