Caffe(http://caffe.berkeleyvision.org/)是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清(http://daggerfs.com/),他眼下在Google工作。

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

Caffe::set_mode(Caffe::GPU);

Caffe的优势

1.     上手快:模型与对应优化都是以文本形式而非代码形式给出。

Caffe给出了模型的定义、最优化设置以及预训练的权重。方便马上上手。

2.     速度快:可以执行最优秀的模型与海量的数据。

Caffe与cuDNN结合使用。測试AlexNet模型,在K40上处理每张图片仅仅须要1.17ms.

3.     模块化:方便扩展到新的任务和设置上。

能够使用Caffe提供的各层类型来定义自己的模型。

4.     开放性:公开的代码和參考模型用于再现。

5.     社区好:能够通过BSD-2參与开发与讨论。

Caffe的网络定义

Caffe中的网络都是有向无环图的集合。能够直接定义:

name:"dummy-net"
layers {name: "data" …}
layers {name: "conv" …}
layers {name: "pool" …}
layers {name: "loss" …}

数据及其导数以blobs的形式在层间流动。

Caffe的各层定义

Caffe层的定义由2部分组成:层属性与层參数,比如

name:"conv1"
type:CONVOLUTION
bottom:"data"
top:"conv1"
convolution_param{
num_output:20
kernel_size:5
stride:1
weight_filler{
type: "xavier"
}
}

这段配置文件的前4行是层属性,定义了层名称、层类型以及层连接结构(输入blob和输出blob);而后半部分是各种层參数。

Blob

Blob是用以存储数据的4维数组,比如

对于数据:Number*Channel*Height*Width

对于卷积权重:Output*Input*Height*Width

对于卷积偏置:Output*1*1*1

训练网络

网络參数的定义也很方便,能够任意设置对应參数。

甚至调用GPU运算仅仅须要写一句话:

solver_mode:GPU

Caffe的安装与配置

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

在sudo vi/etc/modprobe.d/blacklist.conf
添加一行 :blacklist nouveau
sudoapt-get --purge remove xserver-xorg-video-nouveau #把官方驱动彻底卸载:
sudoapt-get --purge remove nvidia-*#清除之前安装的不论什么NVIDIA驱动
sudo service lightdm stop#进命令行,关闭Xserver
sudokill all Xorg

安装了CUDA之后。依次依照官网提示(http://caffe.berkeleyvision.org/installation.html)安装BLAS、OpenCV、Boost就可以。

Caffe跑跑MNIST试试

在Caffe安装文件夹之下。首先获得MNIST数据集:

#cddata/mnist
#sh get_mnist.sh

生成mnist-train-leveldb/ 和 mnist-test-leveldb/,把数据转化成leveldb格式:

# cdexamples/lenet
#sh create_mnist.sh

训练网络:

</pre><pre name="code" class="cpp">#sh train_lenet.sh

欢迎參与讨论并关注本博客微博以及知乎个人主页兴许内容继续更新哦~

转载请您尊重作者的劳动。完整保留上述文字以及文章链接,谢谢您的支持。

Caffe——清晰高效的深度学习(Deep Learning)框架的更多相关文章

  1. (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

    特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

  2. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  3. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  4. 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

    ##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...

  5. 机器学习(Machine Learning)&amp;深度学习(Deep Learning)资料

    机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008 ...

  6. 机器学习——深度学习(Deep Learning)

    Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,近期研究了机器学习中一些深度学习的相关知识,本文给出一些非常实用的资料和心得. Key W ...

  7. 【重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

    [重磅干货整理]机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总 .

  8. 转:浅谈深度学习(Deep Learning)的基本思想和方法

    浅谈深度学习(Deep Learning)的基本思想和方法  参考:http://blog.csdn.net/xianlingmao/article/details/8478562 深度学习(Deep ...

  9. (转)深度学习(Deep Learning, DL)的相关资料总结

    from:http://blog.sciencenet.cn/blog-830496-679604.html 深度学习(Deep Learning,DL)的相关资料总结 有人认为DL是人工智能的一场革 ...

随机推荐

  1. 往文件内写入内容(java)

    新建个工具类,并标记成静态的,方便调用. package util; import java.io.File;import java.io.FileOutputStream; public class ...

  2. 动态调用链接库(dll) 续

    20141118 最近一周做了一个关于仓库管理,拣货任务分配的模块,其中涉及到刷卡自动打印领取任务的功能点. 技术点: C#调用C++.delphi的动态链接库.动态链接库的调用方法不同.效果也不相同 ...

  3. js中时钟表盘

    1.js时钟表盘 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  4. Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些。

    Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些.  常见Web应用安全问题安全性问题的列表: 1.跨站脚本攻击(CSS or XSS, Cross Si ...

  5. System.err与System.out的区别

    大多数操作系统都有三个标准文件描述符:标准输入,标准输出,标准出错. 三个操作系统的文件描述符映射到编程语言的标准库中,往往加了一层包装,但是名字通常还是叫标准输入,标准输出,标准出错. 在其它语言中 ...

  6. 在iframe内页面完全加载完后,关闭父页面生成的div遮罩层

    遮罩层div为iframe父页面生成,需在iframe内页面完全加载完后,关闭遮罩层 alertMsgClose() :函数为关闭遮罩层函数 此段代码在iframe页面内: <script> ...

  7. eclipse中添加maven

    收藏一下,一篇很好的例子 maven相关插件:链接:http://pan.baidu.com/s/1i3Ks95j 密码:7pgh eclipse:链接:http://pan.baidu.com/s/ ...

  8. 你的宽带ip地址被100.64了吗?

    你的宽带ip地址被100.64了吗?   最近需要用外网的时候发现,宿舍路由wan口的ip变成了100.64.X.X,本以为是一个外网的ip,可事实上并不是,并且从外网无法直接访问.   首先,我们都 ...

  9. day14-二分法、匿名函数、内置函数以及面向过程编程

    目录 二分法 匿名函数 内置函数 面向过程编程 二分法 二分法查找适用于数据量较大时,但是数据需要先排好顺序.主要思想是:(设查找的数组区间为array[low, high]) (1)确定该区间的中间 ...

  10. Deployd的使用

    deployd一个生成后台数据的软件,可以创建json格式的数据,也可以对数据进行增删改查等操作,甚至可以验证登录,简直就是自学好帮手呀,不用后台搞定后台,就用deployd 下载:链接: https ...