搭建沙雕工作站——Win10上面装Caffe

这个故事说来话长,我从双十一买了电脑之后就一直在折腾双系统,眼看双十二都快要到了,我的双系统还是没有搞成,索性就搞一搞windows吧

CUDA 8.0 & cudnn 5.1 提取码:viv3

windows10 安装 tensorflow

添加清华镜像源

1
2
3
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
  1. 安装CUDA 8.0
  2. 装cudnn 5.1
  3. 装anaconda python 3.6,务必配置好系统变量
  4. win+r 输入cmd,建立虚拟机环境:conda create -n tensorflow_gpu python=3.6
  5. 进入虚拟机:activate tensorflow_gpu
  6. 在虚拟机中安装anaconda:conda install anaconda
  7. 安装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

以下主要罗列一下,我遇到坑:

  1. 直接从https://github.com/Microsoft/caffe下载了caffe-master的.zip包,默认是用VS2013编译的,如这篇博客里面,https://www.2cto.com/kf/201612/575865.htmlhttps://blog.csdn.net/u012005313/article/details/77351727 ,里面没有可以直接修改vs版本的文件;虽然有博客介绍了怎么去修改其他文件搞定这个问题https://blog.csdn.net/hanzy88/article/details/79183631,但是我害怕牵一发动全身,没有参考;另外,据说还有更简单的方法,但是没有尝试,https://www.jianshu.com/p/d6d5276e0a0c
  2. 把上面的.zip压缩包删了,安装Git,git clone https://github.com/BVLC/caffe.git
  3. 下载cmake,把./bin配置到环境变量中
  4. cd caffe, git checkout windows
  5. notepad++打开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

  6. 执行 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

  7. 再次 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文件

  8. 再次执行 scripts/build_win.cmd,cmake应该就将Caffe.sln工程编译好了

  9. 进入caffe/build,用VS2015打开caffe.sln,右键ALL_BUILD,点击生成

    编译完成:

  10. 由于本人的powershell设置有点问题导致不能直接运行.\examples\mnist\create_mnist.ps1
    因此把ps1脚本里的命令单独拆分出来运行。

    1
    2
    3
    .\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

  1. 同样的问题,训练用train_mnist.ps1,我也把运行命令抽出来跑(不过,应该可以写到.bat命令里面)
    .\build\tools\Release\caffe.exe train --solver=.\examples\mnist\lenet_solver.prototxt

    可以看到使用GPUs: 0,最终训练完成,达到精度0.99,耗时约半分钟

    另外,实验表明,单独写一个bat文件作为入口同样可行

  2. 在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