利用Docker配置基础Caffe环境
闲来无事【划掉!!!】,我听闻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的相关命令
查看(所有的)镜像:
12docker psdocker ps -a创建一个基于bash命令行的,新的Caffe容器:
1docker run -ti bvlc/caffe:cpu创建一个ipython命令行的,新的Caffe容器:
1docker run -ti bvlc/caffe:cpu ipython启动一个已有的容器:
1docker start [CONTAINER ID/CONTAINER NAME]进入一个正在运行中的容器:
1docker attach [CONTAINER ID/CONTAINER NAME]删除一个容器:
1docker rm [CONTAINER ID/CONTAINER NAME]重命名一个容器:
1docker rename [CONTAINER NAME] [NEWNAME]我们应当先利用
docker run
命令创建一个自己喜欢的Caffe容器,创建好了之后,我们就已经直接来到这个容器内部了。Caffe在这个时候已经配置好了。可以在Python命令行当中导入Caffe包,以验证环境配置的有效性。
1import caffe第四步,测试一个简单的LeNet网络
参考官方文档,来测试一下这个环境是不是真的配置好了。
http://caffe.berkeleyvision.org/gathered/examples/mnist.html
首先运行以下命令,从网上把mnist的相关训练数据和测试数据下载下来,然后将数据格式进行转换。
123cd $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_mode
从GPU
改成CPU
。当然,在文件里还可以修改迭代次数等参数,在此按下不表。当然啦,想要修改文件,得先下载vim……因为我们这个轻量级的容器肯定是不会预装vim的【好理直气壮】
12apt-get updateapt-get install vim最后跑一下脚本,卷积神经网络的识别结果就出来啦!迭代10000次,最后的准确率达到了0.991
12cd $CAFFE_ROOT./examples/mnist/train_lenet.sh
好玩不!我觉得挺好玩的!然后就这样玩了两个下午……上课的视频还没看,实习的简历还没投,让我去面壁思过一下【捂脸】