这个故事说来话长,我从双十一买了电脑之后就一直在折腾双系统,眼看双十二都快要到了,我的双系统还是没有搞成,索性就搞一搞windows吧
CUDA 8.0 & cudnn 5.1 提取码:viv3
windows10 安装 tensorflow
添加清华镜像源
|
|
- 安装CUDA 8.0
- 装cudnn 5.1
- 装anaconda python 3.6,务必配置好系统变量
- win+r 输入cmd,建立虚拟机环境:
conda create -n tensorflow_gpu python=3.6 - 进入虚拟机:
activate tensorflow_gpu - 在虚拟机中安装anaconda:
conda install anaconda - 安装gpu版本tensorflow:
conda install tensorflow-gpu
出现问题是我一开始装的anaconda python 3.7,创建虚拟机用的命令是conda create -n tensorflow_gpu python=3.7,可能是python版本太新导致tensorflow找不到对应依赖。当时没有理解虚拟机的意义,我把anaconda python 3.7卸载掉重装了anaconda python 3.6。
windows10 安装 caffe
安装caffe实在是太艰难了,从Ubuntu艰难到Windows,在Windows上,我用的VS2015,不想用版本太旧的VS2013
以下主要罗列一下,我遇到坑:
- 直接从
https://github.com/Microsoft/caffe下载了caffe-master的.zip包,默认是用VS2013编译的,如这篇博客里面,https://www.2cto.com/kf/201612/575865.html,https://blog.csdn.net/u012005313/article/details/77351727,里面没有可以直接修改vs版本的文件;虽然有博客介绍了怎么去修改其他文件搞定这个问题https://blog.csdn.net/hanzy88/article/details/79183631,但是我害怕牵一发动全身,没有参考;另外,据说还有更简单的方法,但是没有尝试,https://www.jianshu.com/p/d6d5276e0a0c - 把上面的
.zip压缩包删了,安装Git,git clone https://github.com/BVLC/caffe.git - 下载cmake,把
./bin配置到环境变量中 cd caffe,git checkout windowsnotepad++打开
caffe/scripts/下面的build_win.cmd文件
基本参数配置
cudnn包含路径
注:
(1)MSVC_VERSION 根据你VS项目版本来,14对应VS2015的项目,12对应VS2013的项目
(2)只使用CPU的将CPU_ONLY改为1
(3)PYTHON_VERSION根据你本机版本来,我是2.7所以是2,3.5就是3
(4)CUDA_ARCH_NAME是CUDA的架构名称,可选值有:Kepler,Fermi,Maxwell,Pascal,Manual,All,Auto,Auto是自动检测最优值
(5)WITH_NINJA要设为0,你不会用到ninja编译器来进行编译
(6)改完后去scripts\build中把CMakeCache.txt文件删掉。因为这里面记录的是用Ninja来编译的,不删除的话不能用VS来编译
(7)在多个 GPU 上运行 Caffe 需要使用NVIDIA NCCL执行
scripts/build_win.cmd,报错。报错信息主要是说v140没有对应python 3.6的配置方案。这里涉及到VS版本和python版本的对应关系是v140+python2.7或者v140+python3.5,因为前面已经把tensorflow装到了python 3.6里,这次不能删除再装过python 3.5。因此,我采用了虚拟机方案
(1)conda create -n py35 python=3.5
(2)activate py35
(3)conda install anaconda再次
scripts/build_win.cmd,报错。一个名为“libraries_v140_x64_py27_1.1.0.tar.bz2”的依赖包无法下载成功。
(1) 可以从https://github.com/willyd/caffe-builder/releases下载
(2) 直接点下载没有成功过,可以右键把链接地址复制到迅雷里面挂着下载还挺快的。
(3) 然后把依赖包放在对应的依赖目录里面,这个报错信息会提示,一般就在C:\Users\username\.caffe\dependencies\download
(4) 手动修改caffe/camkae下面WindowsDownloadPrebuiltDependencies.cmake文件
再次执行
scripts/build_win.cmd,cmake应该就将Caffe.sln工程编译好了
进入
caffe/build,用VS2015打开caffe.sln,右键ALL_BUILD,点击生成
编译完成:
由于本人的powershell设置有点问题导致不能直接运行
.\examples\mnist\create_mnist.ps1,
因此把ps1脚本里的命令单独拆分出来运行。123.\build\examples\mnist\Release\convert_mnist_data.exe .\examples\mnist\train-images.idx3-ubyte ` .\examples\mnist\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb.\build\examples\mnist\Release\convert_mnist_data.exe .\examples\mnist\t10k-images.idx3-ubyte \` .\examples\mnist\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb

同样的问题,训练用train_mnist.ps1,我也把运行命令抽出来跑(不过,应该可以写到.bat命令里面)
.\build\tools\Release\caffe.exe train --solver=.\examples\mnist\lenet_solver.prototxt
可以看到使用GPUs: 0,最终训练完成,达到精度0.99,耗时约半分钟
另外,实验表明,单独写一个bat文件作为入口同样可行
在Windows上搜索
Anaconda Navigator,进入之后把root切换到py35,点击spyder下面Launch,进去后敲入以下代码:
报错,WTF!!!
Google了一下,https://stackoverflow.com/questions/37666241/importing-caffe-results-in-importerror-no-module-named-google-protobuf-interna 安装prototxt
成功导入caffe