Python 如何迫使tensorflow在发现GPU后忘记它?
我有一个基于tensorflow的代码,我在各种计算机上运行,有些使用CPU,有些同时使用CPU和GPU 如果机器上有GPU,我想让用户选择使用CPU 该代码可以正常工作:Python 如何迫使tensorflow在发现GPU后忘记它?,python,tensorflow,Python,Tensorflow,我有一个基于tensorflow的代码,我在各种计算机上运行,有些使用CPU,有些同时使用CPU和GPU 如果机器上有GPU,我想让用户选择使用CPU 该代码可以正常工作: import os import tensorflow as tf os.environ['CUDA_VISIBLE_DEVICES'] = '-1' if tf.test.gpu_device_name(): print('GPU found') else: print("No GPU found")
import os
import tensorflow as tf
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
if tf.test.gpu_device_name():
print('GPU found')
else:
print("No GPU found")
# No GPU found
但是,我想先检查GPU是否可用,然后禁用它
我试过:
import tensorflow as tf
if tf.test.gpu_device_name():
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
if tf.test.gpu_device_name():
print('GPU found')
# GPU found
但它不起作用。一旦我使用了tf.test.gpu\u device\u name()
,它总是记得系统有一个gpu
我还尝试了deltf
,importlib.reload(tf)
,但没有成功唯一有效的方法是退出解释器并运行上面的第一个脚本
一旦找到GPU,我如何让代码“忘记”它?我不明白为什么需要让TensorFlow忘记它。你有GPU,但这并不意味着你必须使用GPU 您可以使用来指定基础设备 例如:
# Place tensors on the CPU
with tf.device('/CPU:0'):
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)
因此,即使您有GPU,该程序仍将使用CPU。请不要人为地用语言和框架“标记”您的标题。这就是实际标签的用途。很抱歉我只留下了
tensorflow
作为标签,可以吗?如果它自然适合标题,那就好了。这是个问题,比如“(python)我如何做foo?”或者“为什么这会给出AttributeError[python][django]”。(真正的Python标记很好。它已经被编辑回来了。);不要写像“(语言)问题?”或“语言:问题?”这样的标题,而是写像“问题?”这样的标题,并添加语言[如python]作为标记。好的,谢谢,对不起,有没有办法将CPU设置为解释器中所有tensorflow调用的“全局”设备?嗯,如果您修改脚本,应该很容易实现。我的一个小问题是,我的整个类和方法都在其中,它们到处都在使用tensorflow。我希望用户在创建类的实例时能够设置布尔值。设置所有tensorflow方法是使用GPU还是CPU的布尔值