Caffe——模型解析

深度神經網絡是一種模塊化的模型,它由一系列作用在數據塊之上的內部連接層組合而 成。Caffe 基於自己的模型架構,通過逐層定義(layer-by-layer)的方式定義一個網絡(Nets)。 網絡從數據輸入層到損失層自下而上地定義整個模型。Caffe 使用 blobs 結構來存儲、交換和 處理網絡中正向和反向迭代時的數據和導數信息:blob 是 Caffe 的標準數組結構,它提供了一個統一的內存接口。Layer是Caffe模型和計算的基本單元,Net是一系列layers和其連接的集合。Blob詳細描述了信息是如何在layer和net中存儲和交換的。Solving(求解方法)單獨配置,以解耦模型的建立與優化的過程。

Caffe的核心模塊有三個,分別是Blobs、Layers和Nets。Blobs用來進行數據存儲、數據交互和處理,通過Blobs,統一制定了數據內存的接口。Layers是神經網絡的核心,定義了許多層級結構,它將Blobs視爲輸入輸出。Nets是一系列Layers的集合,並且這些層結構通過連接形成一個網圖。

1、Blobs

Blobs本質是一個N維向量,用來存儲數據信息,這些數據信息包括圖片、深度網絡進行前向傳輸時的數據和反向求梯度過程時的梯度數據等。對於圖像數據來說,Blobs通常是一個4維向量,其格式爲(Number,Channel,Height,Width),其中Channel表示圖像的通道數,若圖像是單通道的灰度圖,則Channel=1;若是3通道的RGB圖像,則Channel=3。Height和Width分別表示圖像的高度和寬度。至於Number則表示圖像批塊(Batch),批處理可以使神經網絡有更大的吞吐量。

2、Layers

Layers是神經網絡的核心,Caffe設計實現了許多層結構,包括卷積、池化、損失等層結構,利用這些層結構可以實現絕大部分的神經網絡模型。Layers將下層的數據輸出作爲輸入,進而通過內部運算輸出。

Layers層的定義和使用一般需要三個步驟:

(1)建立層,包括建立連接關係和初始化其中一些變量參數;

(2)前向傳輸過程,給定輸入並計算出相應的輸出;

(3)反向傳播過程,進行反向梯度的計算,並把梯度保存在層結構中。

3、Nets

Nets是由層Layers組成的,定義了輸入、輸出、網絡各層,並將各層連接成一個有向無環圖(DAG),由此定義了一個網絡。一個典型的網絡應該有數據輸入,並且以一個代價函數作爲輸出,針對不同的任務,例如分類和重構,應選擇不同的代價函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章