Windows 10环境下TensorFlow如何快速切换CPU与GPU运行?
快速切换TensorFlow 1.x(Windows环境)CPU/GPU运行模式的方法
针对你的Windows 10 + Python 3.5 + TensorFlow-gpu 1.0.0的配置,我整理了几个亲测有效的切换方案,解决你之前设置CUDA_VISIBLE_DEVICES无效的问题:
1. 全局强制使用CPU(最直接的方法)
如果你想全程用CPU跑代码,可以在创建Session时通过配置禁用GPU设备:
import tensorflow as tf # 配置TensorFlow不使用任何GPU config = tf.ConfigProto(device_count={'GPU': 0}) # 初始化会话 sess = tf.Session(config=config) # 验证设备(可选) from tensorflow.python.client import device_lib print("当前可用设备:") print(device_lib.list_local_devices())
运行后如果输出里只有CPU相关设备,就说明切换成功了。
2. 正确设置CUDA_VISIBLE_DEVICES(Windows下的关键时机)
你之前设置后无效,大概率是导入TensorFlow之后才设置的环境变量——TensorFlow在导入时就会初始化GPU设备,后续再改环境变量就不起作用了。正确的姿势是:
import os # 必须在导入TensorFlow之前设置! # '-1'表示隐藏所有GPU,强制用CPU;如果要指定某块GPU,填对应的编号(比如'0') os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # 之后再导入TensorFlow import tensorflow as tf # 验证设备 from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
Windows系统完全支持这个环境变量,只要时机对,就能生效。
3. 精细化控制单段代码的运行设备
如果只是部分代码需要切换CPU/GPU,可以用tf.device()上下文管理器指定:
import tensorflow as tf # 这段代码强制在CPU上运行 with tf.device('/cpu:0'): x = tf.constant([1.0, 2.0, 3.0]) y = tf.constant([4.0, 5.0, 6.0]) cpu_result = tf.multiply(x, y) # 这段代码优先在GPU上运行(如果GPU可用) with tf.device('/gpu:0'): a = tf.constant([7.0, 8.0, 9.0]) b = tf.constant([10.0, 11.0, 12.0]) gpu_result = tf.add(a, b) sess = tf.Session() print("CPU运算结果:", sess.run(cpu_result)) print("GPU运算结果:", sess.run(gpu_result))
这种方式适合处理一些GPU不支持的操作,或者想手动分配计算任务的场景。
额外注意事项
- 你的TensorFlow版本是1.0.0,属于TF1.x分支,TF2.x的
tf.config系列API在这个版本里不存在,所以上面的方法都是专门适配TF1.x的。 - 如果切换后还是有问题,可以检查CUDA和cuDNN的版本是否和TF1.0.0完全匹配——你当前的CUDA8.0 + cuDNN5.1是完全符合TF1.0.0的要求的,所以配置本身没问题。
内容的提问来源于stack exchange,提问作者David Skarbrevik
相关产品推荐
相关产品推荐

