win10使用tensorflow和tensorflow-gpu时踩过的坑

最初要使用tensorflow-gpu是因为要使用inception-resnet-v2,这个模型在cpu上跑,速度实在是太慢,两天跑1000个batch的样子,实在难受。于是搬出了我四年前的电脑(NIVIDA 840M)来准备用GPU跑。遇到了一些坑,一一解决了,记录一下。


first

最开始的时候,以为安装了tensorflow就可以直接有gpu就调gpu了,后来发现没那么简单,还是会用cpu的,必须装tensorflow-gpu版本。网上说两个并存会有麻烦,所以建议删了cpu版本再来装gpu版本。


error:CUDA driver version is insufficient for CUDA runtime version

原因

这个的原因是CUDA的驱动程序版本跟CUDA的运行时版本不匹配!看了一下,主要是我直接 conda install tensorflow-gpu来安装的,相应的cudnn和cudatoolkit都会自动下载最新版的,而这些最新版的不一定和自己的gpu匹配,导致错误。

解决

cuda的驱动程序版本即为NVIDIA GPU的驱动程序版本。

这个驱动版本可以通过nvidia-smi来查看,一般windows上这个好像没有直接加入环境变量,直接运行是不行的,一般是在C:\Program Files\NVIDIA Corporation\NVSMI,将其加入环境变量或是直接在目录下运行即可。

用gpu跑tensorflow 用gpu跑scenic_tensorflow


上图中红线圈出的部分即为自己的driver版本。

接着找到nvidia 驱动和cuda runtime 版本对应关系

运行时版本 驱动版本
CUDA 9.1 387.xx
CUDA 9.0 384.xx
CUDA 8.0 375.xx (GA2)
CUDA 8.0 367.4x
CUDA 7.5 352.xx
CUDA 7.0 346.xx

像我的就是8.0,

或者可以直接看 控制面板->搜索 NVIDIA->NVIDIA控制面板->帮助->系统信息,就可以看到支持的CUDA版本了。

用gpu跑tensorflow 用gpu跑scenic_OOM_02


然后就是删掉原来装的错误版本cudnn和cudatoolkit,重新安装对应版本:pip/conda install cudatoolkit=8.0


error:NewRandomAccessFile failed to Create/Open

在生成TFrecord文件时出现了这个错误。这个应该是图片的路径有问题,我的是有中文。


error:ResourceExhaustedError: OOM when allocating tensor with shape[128,149,149,32]

[128,149,149,32]的第一个参数表示batch_size的大小,第二三个参数表示图像尺寸,第四个参数表示卷积核个数。
这里出现这种错误的原因时超出内存了,因此可以适当减小batch_size的大小即可解决。


tensorbord 0.0.0.0:6006,网页中打不开

……应该用localhost:6006或者127.0.0.1:6006


tensorboard可视化,no scalar, no image

解决方法:方法一:将cmd的默认路径cd到log文件的上一层,即cd /d E:\MyTensorBoard,之后等号后面直接键入log文件名即可,不需写全路径,即 tensorboard --logdir=logs。方法二:双斜杠,即tensorboard --logdir=E://MyTensorBoard//logs

tensorboard 无法访问此网站

加参数 : --host 127.0.0.1