闲来无事【划掉!!!】,我听闻Caffe在配置起来超级麻烦,又是编译有问题,又是依赖解决不了,十分棘手。我马上联想起了方便轻量的Docker。为何不利用Docker在自己的笔记本电脑上搭建Caffe来玩玩呢?

  • 第一步,配置Docker For Windows

    首先我们需要配置好属于自己的轻量级虚拟化环境!

    在Docker官网上下载属于自己系统的版本,https://www.docker.com/products/overview

    我的系统是Windows 10 Professional,Docker For Windows正好适合我。如果是Windows 10之前的版本,需要下载Docker Toolbox来安装Docker环境。

    在这里插一句嘴说一下Docker Toolbox,它里面集成了一个叫Kitematic的图形化管理界面,界面很友好。如果不想用命令行来操作Docker,可以用这个玩意儿来管理,效果是一样的。

    下载并安装好Docker后,如果你的Hyper-V功能没有开启,Docker会自动帮你开启,并立即重启电脑。Docker For Windows利用了Hyper-V来承载Docker Engine,如果Docker遇到了卡死等重大问题,可以把Hyper-V和下面的镜像卸载重装【大误】……可以在Hyper-V管理器上查看MobyLinuxVM的状态,来确定问题的来源。

    个人感觉Docker For Windows不是很稳定,有时候确实需要重启Docker/Hyper-V来解决一部分问题。

  • 第二步,安装Caffe的Docker镜像

    根据官方给出的教程,https://github.com/BVLC/caffe/tree/master/docker

    执行以下命令就可以下载并安装对应版本的Docker镜像啦。

    CPU 版本可以利用以下命令安装:

    docker run -ti bvlc/caffe:cpu caffe --version

    GPU 版本需要CUDA 8.0和相应驱动的支持,还需要配置好nvidia-docker

    nvidia-docker run -ti bvlc/caffe:gpu caffe --version

    忽略libdc1394的相关错误即可。

    我安装的是CPU版本,下载镜像和安装比较快,大概需要20分钟左右。下载的时候网络一定要稳定,不然下到一半会卡死,再也走不动。

  • 第三步,熟悉Docker的相关命令

    查看(所有的)镜像:

    1
    2
    docker ps
    docker ps -a

    创建一个基于bash命令行的,新的Caffe容器:

    1
    docker run -ti bvlc/caffe:cpu

    创建一个ipython命令行的,新的Caffe容器:

    1
    docker run -ti bvlc/caffe:cpu ipython

    启动一个已有的容器:

    1
    docker start [CONTAINER ID/CONTAINER NAME]

    进入一个正在运行中的容器:

    1
    docker attach [CONTAINER ID/CONTAINER NAME]

    删除一个容器:

    1
    docker rm [CONTAINER ID/CONTAINER NAME]

    重命名一个容器:

    1
    docker rename [CONTAINER NAME] [NEWNAME]

    我们应当先利用docker run命令创建一个自己喜欢的Caffe容器,创建好了之后,我们就已经直接来到这个容器内部了。Caffe在这个时候已经配置好了。

    可以在Python命令行当中导入Caffe包,以验证环境配置的有效性。

    1
    import caffe
  • 第四步,测试一个简单的LeNet网络

    参考官方文档,来测试一下这个环境是不是真的配置好了。

    http://caffe.berkeleyvision.org/gathered/examples/mnist.html

    首先运行以下命令,从网上把mnist的相关训练数据和测试数据下载下来,然后将数据格式进行转换。

    1
    2
    3
    cd $CAFFE_ROOT
    ./data/mnist/get_mnist.sh
    ./examples/mnist/create_mnist.sh

    容器里面应该是有wget命令的,如果没有,可以用apt-get命令自行解决一下shell脚本的依赖。

    卷积神经网络的具体实现,都已经写好了放在示例文件夹当中了。具体路径是

    1
    $CAFFE_ROOT/examples/mnist/*.prototxt

    如果只用CPU来跑的话,需要修改lenet_solver.prototxt,将solver_modeGPU改成CPU。当然,在文件里还可以修改迭代次数等参数,在此按下不表。

    当然啦,想要修改文件,得先下载vim……因为我们这个轻量级的容器肯定是不会预装vim的【好理直气壮】

    1
    2
    apt-get update
    apt-get install vim

    最后跑一下脚本,卷积神经网络的识别结果就出来啦!迭代10000次,最后的准确率达到了0.991

    1
    2
    cd $CAFFE_ROOT
    ./examples/mnist/train_lenet.sh

好玩不!我觉得挺好玩的!然后就这样玩了两个下午……上课的视频还没看,实习的简历还没投,让我去面壁思过一下【捂脸】