深度學習中幾種經常使用框架的介紹

深度學習中幾種經常使用框架的介紹

深度學習在今天之因此可以很是普及,很重要的一個緣由是因爲學術界和工業界貢獻的各類各樣的開源軟件,這些開源的軟件中集成了不少深度學習中用到的網絡細節,也使咱們的開發便捷了許多,下面咱們來介紹幾種深度學習中經常使用的框架,並將這幾種框架作個對比。javascript

1 Caffe

http://caffe.berkeleyvision.orgCaffe 框架在圖像、視頻領域的應用很是普遍,它的特色有如下幾點:java

依賴了大量的第三方庫

爲了讀取圖像,以及簡單的圖像處理,連接很重的 OpenCV 庫Boost 來實現一些 C++ 的高級特徵HD5/LMDB/LEVELDB 用來作數據的 IOProtoBuffer 使用隨處可見python

基於層的設計思路

Blob模塊:實現了Tensor的功能,保持數據和梯度Layer模塊:根據輸入計算輸出,同時保存權重/梯度Net模塊:由多個layer組成,實現前向或後向的計算Solver模塊:最優化模塊,利用梯度值更新權重git

image.png

Protocol Buffer技術

引入 protocol buffer技術,省去編寫大量描述性的 C++代碼,好比配置參數、屬性變量等等方便序列化,用戶能夠直接閱讀 prototxt文件,來了解網絡結構github

Prototxt.caffemodel 文件

Prototxt:用來描述網絡,經過 Google 的 protobuffer 編譯器直接讀取/序列化 C++ 的對象caffemodel:用來保存權重文件微信

Caffe的訓練:

  • 須要提早作數據準備,保存爲 LMDB/LevelDB等格式網絡

  • 不用編寫 C++代碼,直接編寫 .prototxt定義net對象框架

  • 直接編寫 .prototxt 定義 solver對象機器學習

  • 經過參數直接執行 caffe 命令進行訓練編輯器

下面分紅四步對其進行說明:第一步:數據準備階段xx/xx/xx.jpg label ## 每行都是這樣的格式經過tools/create_xxxx命令產生LMDB/LevelDB等格式的數據文件

image.png

第二步:編寫網絡文件規則簡單的,能夠直接用文本編輯器生成,網絡複雜的,利用python腳本生成。(值得注意的是net prototxt文件描述的是有向無環圖)

image.png

對於複雜的網絡來講,好比殘差網絡,手寫很容易出錯,或者一些層數較多的網絡,咱們均可以採用Python來編寫網絡結構文件

image.png

第三步:定義solver文件簡單手動編寫設置好須要的參數

image.png

第四步:訓練網絡

image.png

image.png

Caffe 還給咱們提供了 Model Zoo(網站:https://github.com/BVLC/caffe/wiki/Model-Z)裏面有不少已經訓練好的模型,像 AlexNet,VGG,GoogleNet 等等,咱們只需進入網站下載須要的模型便可拿來使用,很是方便。

2 Torch

http://torch.chTorch 能夠算得上是最靈活、最容易學習的深度學習框架了,也很適合初學者學習。該框架使用的是 Lua 語言,相似於 javascript 的動態語言,LuaJit 性能高於大多數的腳本語言,結合 C語言開發很是簡單。Torch 有如下三個主要特色:

  1. 靈活的框架:使用 Lua語言做爲控制應用層,完全的模塊化設計

  2. 友好的交互:快速學習深度學習中各個組件的功能

  3. 全程可控的訓練過程:適合實驗新的網絡類型

Torch 的交互式環境

所見即所得的交互式環境

image.png


基於」nn」軟件包生成各類網絡

image.png

訓練過程全程可控

image.png

GPU/CPU切換

  • require(‘cutorch’)

  • require(‘cunn’)

  • 切換tensor類型

image.png

開發本身定義的模塊

image.png

3 TensorFlow

https://www.tensorflow.orgTensorflow 能夠說是目前學者們最普遍應用的深度學習框架,它是一個用於數值計算的 Python庫,能夠描述一幅數據計算的數據流圖(data flow graph)。TensorFlow 最初由 Google 大腦小組(隸屬於 Google 機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可普遍用於其餘計算領域。它有如下幾點須要注意:

  • Google 研發主推

  • 基於 computation graphs 計算模型

  • Python/C++ 語言

  • TensorBoard 可視化工具

  • 多機多卡支持

它的編寫書寫以下:

image.png

同時它還支持使用 TensorBoard 可視化查看各類網絡的輸出和許多中間參數的變化過程。

image.png


小結

文章的最後,小編對以上三種框架作了一個總結

  • Torch 最適合初學者學習(但須要掌握 Lua語言)

  • TensorFlow 是目前的主流框架,應多多關注

  • Caffe 目前仍是產品化最多的庫

image.png


---------End---------
關注後回覆「w」,加我私人微信

推薦閱讀:閱讀是投資本身最有效的方式自律是一種覺醒


image.png

相關文章
相關標籤/搜索