Deep Learning的训练工具~caffe

来源:互联网 发布:淘宝图片如何ps 编辑:程序博客网 时间:2024/05/21 18:23

1. Deep Learning工具—— Theano 

Theanodeep learningPython库,要求首先熟悉Python语言和numpy,建议读者先看Theano basic tutorial,然后按照Getting Started 下载相关数据并用gradient descent的方法进行学习。  


2、Torch 是很多机器学习和人工智能项目的核心

Facebook 也在研究关于深度学习的技术,同时也已经做了很多相关工作,包括其开源的用于机器学习的Torch7 计算框架。Torch 是很多机器学习和人工智能项目的核心,不管是在学校研究或者是类似 Google、Twitter 和因特尔这样的公司。


3、Caffe是一个清晰而高效的深度学习框架

本文详细介绍了caffe的优势、架构,网络定义、各层定义,Caffe的安装与配置,解读了Caffe实现的图像分类模型AlexNet,并演示了CIFAR-10在caffe上进行训练与学习。

Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清,目前在Google工作。

Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换:

 1)Caffe的安装与配置

Caffe需要预先安装一些依赖项,首先是CUDA驱动。不论是CentOS还是Ubuntu都预装了开源的nouveau显卡驱动(SUSE没有这种问题),如果不禁用,则CUDA驱动不能正确安装。以Ubuntu为例,介绍一下这里的处理方法,当然也有其他处理方法。

1Caffe的主版本只支持Linux,所以要下载专门的Caffe For Windows VS2012 完整版,带第三方库的,网上能搜到的

该版本需要的环境如下

1Windows 64-bit

2MS Visual Studio 2012

3CUDA toolkit 6.5    注:我win7 系统安装7.0以上的版本不兼容

4Other dependencies which you can directly download from here.

2:下载VS2012CUDA

1)VS2012,这个在百度云上一搜就能找到(似乎不区分64位还是32位的),以前用VS2010感觉还不错,除了出错时候堆栈乱七八糟外。VS2012的界面我觉得是瞎折腾。

2)CUDA 6.5下载地址https://developer.nvidia.com/cuda-downloads(这个好像是7.0以上版本)。虽然我的机器没有GPU,我想最多跑的慢点吧

安装时,费了老劲了。(如果出现 不兼容,直接 跳 过,继续安装)      无需配置



搭建过程如下:

1:用VS2012打开\build\MSVC目录下的MainBuilder.sln工程文件,选择”x64”

直接进行编译,我这编译了好20分钟左右时间,类似这样的提示错误:

error MSB3073: 命令“set origin_dir=í%

error MSB3073: cd ../../

error MSB3073: "./scripts/GeneratePB.bat"

error MSB3073: cd %origin_dir%

error MSB3073: :VCEnd”已退出,代码为255。

查看错误位置,是预编译的命令错误(

查看“生成事件->预先生成事件->命令行”,暂时先不执行该命令,所以在“在生成中使用”选择“否”。

 2、在解决方案管理器里面展开MainCaller,会看到里面有一个MainCaller.cpp的文件,

点击它,在代码里面加上#include"../../examples/cifar10/convert_cifar_data.cpp"


3、编译,可能会出现错误:未识别的标识符snprintf,你需要打开caffe for Windows\examples\cifar10\convert_cifar_data.cpp,然后找到snprintf,在前面加上下划线,或者直接双击错误,会弹出这个cpp,其中有3处都需要加下划线,保存,再编译

如果运行成功,会出现下面的界面:


       在bin文件夹里出现convert_cifar_data.exe。然后 就可以进行格式转换。binary→leveldb

  可以在bin文件夹下新建一个input文件夹和output文件夹。将cifar10.binary文件放在input文件夹中,这样转换时就不用写路径了。

  cmd进入bin文件夹

  执行后,在output文件夹下有cifar_train_leveldb和cifar_test_leveldb两个文件夹。里面是转化好的leveldb格式数据。

  当然,也可以写一个bat文件处理,方便以后再次使用。

并且在这个文件夹下会有MainCaller.exe文件,如下图

把MainCaller.exe 更名为:convert_cifar_data.exe

4、cifar10数据 准备

  60000张32*32 彩色图片 共10类

  50000张训练

  10000张测试



 1)下载cifar10数据集 ,这是binary格式的,所以我们要把它转换成leveldb格式。

       在bin文件夹里出现convert_cifar_data.exe。然后 就可以进行格式转换。binary→leveldb

 2)可以在bin文件夹下新建一个input文件夹和ouput文件夹,将cifar10.binary文件放在input文件夹中,这样转换时就不用写路径了。如下图:



 3)cmd进入bin文件夹,输入命令:convert_cifar_data.exe input output 

注:caffe,我放到D:\Caffe_windows\Caffe For Windows VS2012 完整版,带第三方库               -------------------这个目录下面



  执行后,在output文件夹下有cifar_train_leveldb和cifar_test_leveldb两个文件夹。里面是转化好的leveldb格式数据。



 4) 下面求数据图像的均值

  编译../../tools/comput_image_mean.cpp



  编译成功后。接下来求mean

  cmd进入bin。

        输入:MainCaller.exe output/cifar-train-leveldb mean.binaryproto


 

 执行后,在bin文件夹下出现一个mean.binaryproto文件,这就是所需的均值文件。

   5、 训练cifar网络

 1)在.../examples/cifar10文件夹里已经有网络的配置文件,我们只需要将cifar_train_leveldb和cifar_test_leveldb两个文件夹还有mean.binaryproto文件拷到cifar10文件夹下。

 2)修改cifar10_quick_train.prototxt中的    source: "cifar-train-leveldb"    mean_file: "mean.binaryproto" 和

              cifar10_quick_test.prototxt中的source:   "cifar-test-leveldb"  mean_file: "mean.binaryproto"就可以了

如下图,去掉红框的内容:




 2)后面再训练就类似于MNIST的训练。写一个train_quick.bat,此文件放到    .......\examples\cifar10这个目录下面,内容如下:

copy ..\\..\\bin\\MainCaller.exe ..\\..\\bin\\train_net.exeSET GLOG_logtostderr=1"../../bin/train_net.exe" cifar10_quick_solver.prototxt  pause


   3)先编译一遍 train_net.cpp


4)运行train_quick.bat,出现了这个错误 


(1)  因为我的电脑Intel(r) HD Graphics 4600 不支持CUDA,但是可以走CPU模式,往下看:


(2)  切换到CPU模式

由于服务器没有安装显卡,只能使用CPU训练。切换到CPU模式非常简单

只需要在.....\examples\cifar10 文件夹下面的  cifar10_quick_solver.prototxt  文件最后的内容  中修改一行:

# solver mode: CPU or GPU
solver_mode: GPU

修改为

# solver mode: CPU or GPU
solver_mode: CPU

(3) 再次运行批处理命令  train_quick.bat  ,如下图:





其中每100次迭代次数显示一次训练时lr(learning rate),loss(训练损失函数),每500次测试一次,输出score 0(准确率)score 1(测试损失函数


大约运行半个小时间左右,生成下面两个文件:







2 0