TensorFlow(Keras后端)未在GPU运行问题求助
解决TensorFlow GPU版无法在GPU上运行的问题
先别急,咱们一步步来排查,大概率是环境配置或者运行时的小问题导致的。
1. 先确认TensorFlow是否能检测到GPU
首先在你的Python 2.7环境里跑这几行代码,直接验证TensorFlow对GPU的识别情况:
import tensorflow as tf print(tf.__version__) # 针对TensorFlow 1.x(适配Python2.7的版本),用这个检测GPU可用性 print(tf.test.is_gpu_available()) # 查看识别到的GPU设备详情 from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
如果输出里没有GPU相关信息,或者is_gpu_available()返回False,那说明TensorFlow根本没识别到GPU,这是核心问题,得先解决这个。
2. 核对CUDA和cuDNN版本与TensorFlow的兼容性
TensorFlow GPU版对CUDA、cuDNN的版本有严格要求,比如适配Python2.7的TensorFlow 1.15,需要搭配CUDA 10.0 + cuDNN 7.6左右。你可以对照自己安装的TensorFlow版本,确认对应的依赖版本是否匹配:
- 检查CUDA的环境变量是否正确配置:Linux/macOS要确保
CUDA_HOME、PATH(加入${CUDA_HOME}/bin)、LD_LIBRARY_PATH(加入${CUDA_HOME}/lib64)都已设置;Windows要把CUDA的bin和libnvvp目录添加到系统环境变量PATH里。 - 确认cuDNN的文件已正确放置:把cuDNN压缩包里的
bin、include、lib文件夹下的文件,复制到CUDA安装目录的对应子文件夹中。
3. 确保Keras使用TensorFlow GPU后端
有时候Keras可能默认走了CPU后端,你可以这么检查和设置:
- 找到Keras的配置文件:Linux/macOS在
~/.keras/keras.json,Windows在C:\Users\<你的用户名>\.keras\keras.json,确保里面的"backend"字段是"tensorflow",而不是"theano"或"cntk"。 - 也可以在训练代码开头强制指定后端:
import os os.environ['KERAS_BACKEND'] = 'tensorflow' import keras
4. 检查GPU是否被其他进程占用
如果GPU被其他程序(比如另一个TensorFlow训练进程、CUDA测试程序)占用,你的模型就没法正常使用GPU。可以用工具查看GPU状态:
- Linux/macOS直接在终端执行
nvidia-smi命令;Windows可以打开NVIDIA控制面板的任务管理器,或者在命令行执行nvidia-smi(需确保CUDA的bin目录在PATH里)。 - 如果有无关进程占用GPU,先关闭它们再重新运行训练脚本。
5. 查看完整的TensorFlow日志
你提供的日志只显示了CPU指令的片段,建议让TensorFlow输出更详细的GPU相关日志:
- Linux/macOS在运行脚本前执行:
export TF_CPP_MIN_LOG_LEVEL=0 - Windows在命令行执行:
set TF_CPP_MIN_LOG_LEVEL=0
然后运行训练脚本,查看是否有GPU初始化失败的提示,比如“找不到CUDA库”“版本不匹配”这类信息,这些细节能帮你精准定位问题。
6. 确认安装的是TensorFlow GPU版
别大意,有时候可能误装了CPU版的TensorFlow。你可以在Python环境里执行pip list,查看是否有tensorflow-gpu这个包(Python2.7适配的TF版本,GPU版包名是tensorflow-gpu,不是tensorflow),如果没有,重新安装对应版本的GPU版:pip install tensorflow-gpu==1.15
内容的提问来源于stack exchange,提问作者Raghav Rajvanshy




