老卫带你学---Could not satisfy explicit device specification '/device:GPU:0' because no devices matching

44 篇文章 0 订阅
17 篇文章 0 订阅

tf源码里debug代码时遇到了下面的错误:

tensorflow.python.framework.errors.InvalidArgumentError: Cannot assign a device to node 'box_encodings': Could not satisfy explicit device specification '/device:GPU:0' because no supported kernel for GPU devices is available

原因是tf里的一个bug,解决方法是设置配置里面的allow_soft_placement=True,当运行在出现不允许在GPU运行的时候,可以切换到CPU运行。

一个例子:


  
  
  1. import tensorflow as tf
  2. def main():
  3. with tf.device( "/cpu:0"):
  4. a = tf.Variable( 1)
  5. b = tf.Variable( 2)
  6. c = a + b
  7. init_var = tf.global_variables_initializer()
  8. with tf.Session() as sess:
  9. sess.run(init_var)
  10. sumResult = sess.run(c)
  11. print(sumResult)
  12. with tf.device( "/gpu:0"):
  13. a = tf.Variable( 1)
  14. b = tf.Variable( 2)
  15. c = a + b
  16. init_var = tf.global_variables_initializer()
  17. with tf.Session() as sess:
  18. sess.run(init_var)
  19. sumResult = sess.run(c)
  20. print(sumResult)
  21. if __name__ == '__main__':
  22. main()

运行上面的代码,就会遇到Could not satisfy explicit device specification '/gpu:0' 的问题,通过设置allow_soft_placement=True来解决该问题:

    config = tf.ConfigProto(allow_soft_placement=True)

    with tf.Session(config=config) as sess:

解决后的完整代码如下:


  
  
  1. import tensorflow as tf
  2. def main():
  3. with tf.device( "/cpu:0"):
  4. a = tf.Variable( 1)
  5. b = tf.Variable( 2)
  6. c = a + b
  7. init_var = tf.global_variables_initializer()
  8. with tf.Session() as sess:
  9. sess.run(init_var)
  10. sumResult = sess.run(c)
  11. print(sumResult)
  12. with tf.device( "/gpu:0"):
  13. a = tf.Variable( 1)
  14. b = tf.Variable( 2)
  15. c = a + b
  16. init_var = tf.global_variables_initializer()
  17. config = tf.ConfigProto(allow_soft_placement= True)
  18. with tf.Session(config=config) as sess:
  19. sess.run(init_var)
  20. sumResult = sess.run(c)
  21. print(sumResult)
  22. if __name__ == '__main__':
  23. main()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值