已安装CUDA v10.1,TensorFlow仍无法使用GPU运行求助
解决Keras在TensorFlow 2.0中优先使用CPU而非GPU的问题
我之前也踩过这个坑,明明TensorFlow能识别到GPU,可模型就是死磕CPU跑,折腾了好一阵才找到几个有效的解决方向,你可以挨个试试:
1. 确认用的是TensorFlow内置的Keras
TensorFlow 2.0之后,官方已经把Keras整合进来了,如果你还是单独安装Keras包并用import keras导入,很可能会出现兼容性问题,强制跑在CPU上。
- 改个导入方式就行:换成
from tensorflow import keras或者import tensorflow as tf,之后所有模型构建、编译都用tf.keras开头的API。
2. 手动指定GPU设备运行
有时候自动设备分配会抽风,咱们手动指定GPU运行更稳妥,有两种简单方式:
- 方式一:用上下文管理器包裹训练代码
把你的模型构建、训练代码都放在这个上下文里,强制让它用GPU:with tf.device('/device:GPU:0'): # 这里放你的模型定义、编译、训练代码 model = tf.keras.Sequential([...]) model.compile(optimizer='adam', loss='categorical_crossentropy') model.fit(x_train, y_train, epochs=10) - 方式二:开启GPU内存增长并设置可见设备
在代码最开头加这段,既能让TensorFlow按需使用GPU内存,也能明确指定用GPU:physical_devices = tf.config.list_physical_devices('GPU') if physical_devices: tf.config.set_visible_devices(physical_devices[0], 'GPU') tf.config.experimental.set_memory_growth(physical_devices[0], True)
3. 重点检查CUDA版本匹配!
你装的是CUDA 10.1,但TensorFlow 2.0.0只支持CUDA 10.0!这很可能是核心问题!版本不匹配的话,就算能识别到GPU,也没法正常调用。
- 解决方案:卸载CUDA 10.1,安装CUDA 10.0,再搭配对应版本的cuDNN(7.4.1及以上),装完重启电脑再测试。
4. 准确验证GPU是否在工作
Windows任务管理器的GPU监控有时候不太准,你可以用更靠谱的方式确认:
- 运行代码验证:
print(tf.test.is_gpu_available()) print(tf.config.list_logical_devices('GPU')) - 用NVIDIA官方工具:打开命令行输入
nvidia-smi,查看训练过程中GPU的显存占用和利用率,这个比任务管理器准确多了。
5. 清理环境残留冲突
就算你卸载了tensorflow只留tensorflow-gpu,可能还有残留的配置或者缓存导致环境混乱:
- 步骤:
- 完全卸载两个包:
pip uninstall tensorflow tensorflow-gpu -y - 清理pip缓存:
pip cache purge - 重新安装指定版本:
pip install tensorflow-gpu==2.0.0 - 一定要重启Jupyter Notebook!内核不会自动加载新环境的。
- 完全卸载两个包:
内容的提问来源于stack exchange,提问作者SHELENDRA VASHISHTHA




