清晰高效的深度學習(Deep Learning)框架:Caffe

jopen 10年前發布 | 189K 次閱讀 Caffe 機器學習

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

muam6v.png

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

訓練網絡:

#sh train_lenet.sh

nuf6nr.png
歡迎參與討論并關注
本博客 微博
以及 知乎個人主頁 后續內容繼續更新哦~

轉載請您尊重作者的勞動,完整保留 上述文字 以及 文章鏈接 ,謝謝您的支持!

原文  http://blog.csdn.net/ycheng_sjtu/article/details/39693655

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!