9

我正在尝试使用一个 gpu 上的训练代码和另一个 gpu 上的 eval 代码运行 CIFAR10 教程。我确定我的计算机上有两个 gpus,我可以通过在此处运行简单示例来测试它:https ://www.tensorflow.org/how_tos/using_gpu/index.html

但是,with device('/gpu:0')对于 CIFAR 示例中的大多数变量,使用 a 不起作用。我在 gpu 与 cpu 上尝试了很多不同变量的组合,或者在一个或另一个上尝试了所有变量。某些变量总是出现相同的错误,如下所示:

Cannot assign a device to node 'shuffle_batch/random_shuffle_queue': Could not satisfy explicit device specification '/gpu:0'

这可能是张量流中的错误还是我遗漏了什么?

4

1 回答 1

9

Could not satisfy explicit device specification表示您没有相应的设备。你的机器上真的有支持 CUDA 的 GPU 吗?

更新:正如在下面的讨论中证明的那样,如果特定操作(在本例中为RandomShuffleQueue)无法在 GPU 上执行,也会引发此错误,因为它只有一个 CPU 实现。

如果您对 TensorFlow 为您选择设备感到满意(特别是在没有可用的 GPU 实现时回退到 CPU),请考虑allow_soft_placement在您的配置中进行设置,如本文所述

sess = tf.Session(config=tf.ConfigProto(
    allow_soft_placement=True, log_device_placement=True))
于 2015-12-03T20:52:53.080 回答