Python 如何迫使tensorflow在发现GPU后忘记它?

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")

我有一个基于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")

# 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的布尔值