我正在尝试使用一个gpu上的训练代码和另一个上的eval代码运行CIFAR10教程.我知道我的计算机上有两个gpus,我可以通过运行这里的简单示例来测试它:https://www.tensorflow.org/how_tos/using_gpu/index.html
但是,使用a 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中的错误还是我错过了什么?
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))