Caffe 深度學習框架介紹


轉自:http://suanfazu.com/t/caffe/281

 

Caffe是一個清晰而高效的深度學習框架,其作者是博士畢業於UC Berkeley的賈揚清,目前在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 sudo kill all Xorg

安裝了CUDA之后,依次按照Caffe官網安裝指南1.3K安裝BLAS、OpenCV、Boost即可。

Caffe跑跑MNIST試試

在Caffe安裝目錄之下,首先獲得MNIST數據集:

 

cd data/mnist sh get_mnist.sh

生成mnist-train-leveldb/ 和 mnist-test-leveldb/,把數據轉化成leveldb格式:

 

sh examples/mnist/create_mnist.sh

訓練網絡:

 

sh train_lenet.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM