TensorFlow 2.x如何切换CPU与GPU版本?
嘿,刚好我对TensorFlow 2.x的CPU/GPU切换很熟悉,给你几个靠谱的方法,亲测在2.2版本有效!
方法一:通过环境变量全局切换(最简单)
这是最直接的全局切换方式,在导入TensorFlow之前设置环境变量,让TensorFlow“看不到”GPU设备,自然就会使用CPU:
import os # 禁用所有GPU,强制使用CPU os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # 之后再导入TensorFlow import tensorflow as tf # 验证一下:查看当前使用的设备 print(tf.config.list_physical_devices())
如果想切回GPU版本,只需要去掉这个环境变量设置,或者把值改成GPU的编号(比如'0'对应第一块GPU)。
方法二:用
tf.device上下文管理器精细化控制 如果你不需要全局切换,只是想让某一段代码跑在CPU/GPU上,这个方法更灵活:
import tensorflow as tf # 指定这段代码跑在CPU上 with tf.device('/CPU:0'): # 示例:创建张量并计算 x = tf.constant([1, 2, 3]) y = tf.constant([4, 5, 6]) result = tf.add(x, y) print(result) # 这段代码会自动使用GPU(如果可用) with tf.device('/GPU:0'): a = tf.random.normal((1000, 1000)) b = tf.random.normal((1000, 1000)) matmul_result = tf.matmul(a, b) print(matmul_result.device)
这个方法的好处是可以针对不同代码块指定设备,适合混合使用CPU和GPU的场景。
额外注意事项
- TensorFlow 2.x开始,官方已经把GPU支持整合到主
tensorflow包中了,tensorflow-gpu这个包在2.10版本之后就被废弃了。你用的2.2版本虽然还存在tensorflow-gpu,但其实没必要同时装两个包——只装tensorflow,如果你的环境配置了合适的CUDA和cuDNN,它会自动启用GPU;没有的话就默认用CPU。 - 之前TensorFlow 1.x里用
tf.Session(config=...)的方法在2.x里已经失效了,因为2.x默认是即时执行(Eager Execution)模式,所以上面的两种方法才是2.x的正确姿势。
内容的提问来源于stack exchange,提问作者CyberPlayerOne




