Python 阻止TensorFlow访问GPU?

Python 阻止TensorFlow访问GPU?,python,tensorflow,Python,Tensorflow,有没有一种方法可以完全在CPU上运行TensorFlow。我机器上的所有内存都被运行TensorFlow的单独进程占用。我已尝试将每进程内存分数设置为0,但未成功。看看这个或这个 总结一下,您可以添加以下代码: import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1" import tensorflow as tf 每当您安装了GPU tensorflow并且不想使用任何GPU时,使用CUDA\u VISIBLE\u设备环境变量是一个很好的选择 您

有没有一种方法可以完全在CPU上运行TensorFlow。我机器上的所有内存都被运行TensorFlow的单独进程占用。我已尝试将每进程内存分数设置为0,但未成功。

看看这个或这个

总结一下,您可以添加以下代码:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
import tensorflow as tf
每当您安装了GPU tensorflow并且不想使用任何GPU时,使用
CUDA\u VISIBLE\u设备
环境变量是一个很好的选择

您可以选择
导出CUDA\u VISIBLE\u DEVICES=
或使用带有TensorFlow的非GPU安装的virtualenv


通过打开GPU限制为0的会话,您只能使用CPU:

sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
有关更多详细信息,请参阅

证明它对@Nicolas有效的证据:

用Python编写:

import tensorflow as tf
sess_cpu = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
import tensorflow as tf
sess_gpu = tf.Session()
然后在终端中:

nvidia-smi
nvidia-smi
您将看到如下内容:

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     24869    C   /.../python                 99MiB                     |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     25900    C   /.../python                                   5775MiB |
+-----------------------------------------------------------------------------+
然后重复该过程: 用Python编写:

import tensorflow as tf
sess_cpu = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
import tensorflow as tf
sess_gpu = tf.Session()
然后在终端中:

nvidia-smi
nvidia-smi
您将看到如下内容:

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     24869    C   /.../python                 99MiB                     |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     25900    C   /.../python                                   5775MiB |
+-----------------------------------------------------------------------------+

据我所知,目前还不清楚它是否有效。我的理解是,目标是避免内存分配。如果是这样的话,它会起作用的。如上所述,据我所知,它确实使用GPU,即使它不使用任何内存。我可能错了,但我相信问题在于如何纯粹在CPU上运行TensorFlow。@jasekp?你能澄清一下目标吗?如果目标类似于使用cpu与gpu上运行的另一个进程并行进行测试以进行培训,那么这应该可以实现。使用此方法后,我如何重新启用gpu?您是否找到Python脚本中打开/关闭TensorFlow gpu的解决方案?@GILO您可以在下一次运行脚本时更改gpu编号,例如=“0”或“0,1”