官术网_书友最值得收藏!

  • Python 深度學習
  • 呂云翔 劉卓然 關捷雄等編著
  • 918字
  • 2021-04-14 11:54:16

2.1 Caffe

2.1.1 Caffe簡介

Caffe(Convolutional Architecture for Fast Feature Embedding)是一種常用的、可讀性高的、快速深度學習框架,主要應用在視頻、圖像處理等方面。

Caffe也是第一個主流的工業級深度學習工具,專精于圖像處理。它有很多擴展,但是一些遺留的架構問題不夠靈活,且對遞歸網絡和語言建模的支持很差。對于基于層的網絡結構,Caffe的擴展性不好,用戶如果想要增加層,需要自己來實現。

2.1.2 Caffe的特點

Caffe的基本工作流程是建立在神經網絡的一個簡單假設,所有的計算都是用層的形式表示的,網絡層所做的事情就是輸入數據,然后輸出計算結果。例如,卷積就是輸入一幅圖像,然后與這一層的參數(filter)做卷積,最終輸出卷積結果。每層需要兩種函數計算:一種是forward,從輸入計算到輸出;另一種是backward,從上層gradient來計算相對于輸入層的gradient。這兩個函數實現之后,就可以把許多層連接成一個網絡,接著輸入數據(圖像、語音或其他原始數據),然后計算需要的輸出(如識別的標簽)。在訓練時,可根據已有的標簽計算loss和gradient,然后用gradient更新網絡中的參數。

Caffe是一個清晰而高效的深度學習框架,它基于純粹的C++/CUDA架構,支持命令行、Python和MATLAB接口,可以在CPU和GPU直接無縫切換。它的模型與優化都是通過配置文件來設置的,無須代碼。Caffe設計之初就做到了盡可能的模塊化,允許對數據格式、網絡層和損失函數進行擴展。Caffe的模型定義是用Protocol Buffer(協議緩沖區)語言寫進配置文件,以任意有向無環圖的形式。Caffe會根據網絡需要正確占用內存,通過一個函數調用實現CPU和GPU之間的切換。Caffe每一個單一的模塊都對應一個測試,使得測試的覆蓋非常方便,同時提供Python和MATLAB接口,用這兩種語法進行調用都是可行的。

2.1.3 Caffe層及其網絡

Caffe是一種對新手非常友好的深度學習框架模型,它的相應優化都以文本形式而非代碼形式給出。它的網絡都是有向無環圖的集合,可以直接定義,如圖2.1所示。

數據及其導數以blobs的形式在層間流動,Caffe層的定義由兩部分組成:層屬性與層參數,如圖2.2所示。

圖2.1 caffe網絡定義

圖2.2 Caffe層定義

圖2.2的前4行代碼是層屬性,定義了層名稱、層類型以及層連接結構(輸入blob和輸出blob);而后半部分是各種層參數。Blob是用以存儲數據的4維數組,例如,對于數據Number*Channel*Height*Width,對于卷積權重Output*Input*Height*Width,對于卷積偏置Output*1*1*1。

在Caffe模型中,網絡參數的定義也非常方便,可以隨意像圖2.3所示那樣設置相應參數。

圖2.3 Caffe參數配置

主站蜘蛛池模板: 湖州市| 营口市| 定州市| 家居| 澜沧| 岚皋县| 建平县| 自治县| 龙山县| 四平市| 攀枝花市| 天津市| 丽江市| 原平市| 青阳县| 谢通门县| 克什克腾旗| 隆林| 建阳市| 开平市| 丁青县| 兴安盟| 朝阳区| 宁河县| 鸡东县| 淮滨县| 藁城市| 青河县| 阿克| 木兰县| 武夷山市| 犍为县| 昔阳县| 南宫市| 渭源县| 雷波县| 司法| 武汉市| 西平县| 嵊州市| 庆城县|