我正在尝试使用一个gpu上的训练代码和另一个上的eval代码运行CIFAR10教程。我知道我的计算机上有两个gpus,我可以通过运行这里的简单示例来测试它:https://www.tensorflow.org/how_tos/using_gpu/index.html
但是,使用with device('/gpu:0')
对CIFAR示例中的大多数变量都不起作用。我在gpu与cpu上尝试了很多不同变量的组合,或者在一个或另一个上尝试了所有变量。某些变量总是出现相同的错误,如下所示:
Cannot assign a device to node 'shuffle_batch/random_shuffle_queue': Could not satisfy explicit device specification '/gpu:0'
这可能是Tensor Flow中的错误还是我错过了什么?
答案 0 :(得分:9)
Could not satisfy explicit device specification
表示您没有相应的设备。你的机器上是否真的有一个支持CUDA的GPU?
UPDATE:正如下面的讨论中所述,如果特定操作(在这种情况下,RandomShuffleQueue
)无法在GPU上执行,则会引发此错误,因为它只有CPU实现。
如果您对TensorFlow选择适合您的设备(特别是在没有GPU实施时可以退回CPU)感觉不错,请考虑按照this article在配置中设置allow_soft_placement
:
sess = tf.Session(config=tf.ConfigProto(
allow_soft_placement=True, log_device_placement=True))