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,将其加入环境变量或是直接在目录下运行即可。
上图中红线圈出的部分即为自己的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版本了。
然后就是删掉原来装的错误版本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