Tensorflow报CUBLAS_STATUS_ALLOC_FAILED错误,训练minibatch设置q_target时触发
TF训练报错排查建议
嗨,针对你遇到的这个TensorFlow训练突然报错的问题,先整理下你的环境信息和问题细节,再给你几个实际好用的排查方向:
环境配置详情
- 操作系统:Windows 10 64位
- Tensorflow版本:1.6.0
- CUDA版本:9.0
- CUDNN版本:7.0.5(适配CUDA 9.0)
- GPU:GeForce GTX 1070
- GPU驱动版本:385.54
- 内存:23.95GB
- CPU:Intel i7-3770k @3.50GHz
- Python版本:3.6.4
问题核心情况
你的代码上周还能正常运行,而且没改动过网络相关代码,导入和初始化环节也没问题,但一进入训练阶段就报错,错误触发在执行minibatch并设置q_target的步骤,涉及的代码片段是:
q_target = self.t...
具体排查方案
1. 检查依赖包版本异动
虽然你没碰网络代码,但可能无意中更新了numpy、scipy这类核心依赖——TF 1.6.0对numpy版本有严格限制(推荐1.13.x到1.14.x之间),版本不匹配很容易导致张量计算时出隐性错误。你可以跑下面的命令看看当前依赖版本:
pip list
如果发现关键依赖版本和上周不一样,回退到之前能正常运行的版本试试。
2. 排查训练数据是否异常
minibatch阶段出错,大概率和输入数据有关:
- 检查新的训练数据里有没有NaN值、无穷值,或者数据的维度、格式和上周的数据集不一致;
- 确认数据加载的逻辑有没有变(比如不小心改了数据增强的代码,或者数据集路径指向错了文件夹)。
3. 清理旧缓存和模型文件
如果训练时加载了之前的checkpoint文件,有可能文件已经损坏:
- 删除训练目录下的
.ckpt相关文件、TensorBoard日志文件夹这类缓存文件; - 从头开始训练,排除旧模型参数的干扰。
4. 检查环境的隐性变动
Windows系统更新、环境变量误改都可能影响CUDA的正常运行:
- 核对
CUDA_PATH、PATH这些环境变量是不是还指向CUDA 9.0的目录; - 重启电脑试试,TF1.x在Windows环境下偶尔会有隐性的服务冲突,重启往往能解决。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

