Caffe:Layer的相關學習
Layer
Layer是所有層的基類,在Layer的基礎上衍生出來的有5種Layers:
- data_layer
- neuron_layer
- loss_layer
- common_layer
- vision_layer
它們都有對應的[.hpp .cpp]檔案宣告和實現了各個類的介面。下面一個一個地講這5個Layer。
data_layer
先看data_layer.hpp中標頭檔案呼叫情況:
1 |
#include "boost/scoped_ptr.hpp" |
不難看出data_layer主要包含與資料有關的檔案。在官方文件中指出data是caffe資料的入口是網路的最低層,並且支援多種格式,在這之中又有5種LayerType:
DATA
MEMORY_DATA
HDF5_DATA
HDF5_OUTPUT
- 
IMAGE_DATA
其實還有兩種WINDOW_DATA
, DUMMY_DATA
用於測試和預留的介面,這裡暫時不管。
DATA
1 |
template <typename Dtype> |
用於LevelDB或LMDB資料格式的輸入的型別,輸入引數有source
, batch_size
, (rand_skip
), (backend
)。後兩個是可選。
MEMORY_DATA
1 |
template <typename Dtype> |
這種型別可以直接從記憶體讀取資料使用時需要呼叫MemoryDataLayer::Reset
,輸入引數有batch_size
,channels
, height
, width
。
HDF5_DATA
1 |
template <typename Dtype> |
HDF5資料格式輸入的型別,輸入引數有source
, batch_size
。
HDF5_OUTPUT
1 |
template <typename Dtype> |
HDF5資料格式輸出的型別,輸入引數有file_name
。
IMAGE_DATA
1 |
template <typename Dtype> |
影象格式資料輸入的型別,輸入引數有source
, batch_size
, (rand_skip
), (shuffle
), (new_height
), (new_width
)。
neuron_layer
先看neuron_layer.hpp中標頭檔案呼叫情況
1 |
#include "caffe/blob.hpp" |
同樣是資料的操作層,neuron_layer實現裡大量啟用函式,主要是元素級別的操作,具有相同的bottom
,top
size。
Caffe中實現了大量啟用函式GPU和CPU的都有很多。它們的父類都是NeuronLayer
1 |
template <typename Dtype> |
這部分目前沒什麼需要深究的地方值得注意的是一般的引數設定格式如下(以ReLU為例):
1 |
layers { |
loss_layer
Loss層計算網路誤差,loss_layer.hpp標頭檔案呼叫情況:
1 |
#include "caffe/blob.hpp" |
可以看見呼叫了neuron_layers.hpp
,估計是需要呼叫裡面的函式計算Loss,一般來說Loss放在最後一層。caffe實現了大量loss function,它們的父類都是LossLayer
。
1 |
template <typename Dtype> |
common_layer
先看common_layer.hpp標頭檔案呼叫:
1 |
#include "caffe/blob.hpp" |
用到了前面提到的data_layers.hpp
, loss_layers.hpp
, neuron_layers.hpp
說明這一層肯定開始有複雜的操作了。
這一層主要進行的是vision_layer
的連線
宣告瞭9個型別的common_layer,部分有GPU實現:
InnerProductLayer
SplitLayer
FlattenLayer
ConcatLayer
SilenceLayer
- (Elementwise Operations) 這裡面是我們常說的啟用函式層Activation Layers。
EltwiseLayer
SoftmaxLayer
ArgMaxLayer
MVNLayer
InnerProductLayer
常常用來作為全連線層,設定格式為:
1 |
layers { |
SplitLayer
用於一輸入對多輸出的場合(對blob)
FlattenLayer
將n * c * h * w變成向量的格式n * ( c * h * w ) * 1 * 1
ConcatLayer
用於多輸入一輸出的場合。
1 |
layers { |
SilenceLayer
用於一輸入對多輸出的場合(對layer)
(Elementwise Operations)
EltwiseLayer
, SoftmaxLayer
, ArgMaxLayer
, MVNLayer
vision_layer
標頭檔案包含前面所有檔案,也就是說包含了最複雜的操作。
1 |
#include "caffe/blob.hpp" |
它主要是實現Convolution和Pooling操作。主要有以下幾個類。
1 |
template <typename Dtype> |
ConvolutionLayer
最常用的卷積操作,設定格式如下
1 |
layers { |
Im2colLayer
與MATLAB裡面的im2col類似,即image-to-column transformation,轉換後方便卷積計算
LRNLayer
全稱local response normalization layer,在Hinton論文中有詳細介紹ImageNet Classification with Deep Convolutional Neural Networks 。
PoolingLayer
即Pooling操作,格式:
1 |
layers { |
相關文章
- arm相關學習
- 【caffe2從頭學】:2.學習caffe2
- 深度學習相關理論深度學習
- 深度學習相關論文深度學習
- 《深度學習:21天實戰Caffe》深度學習
- three.js學習3_相機相關JS
- 強化學習相關資料強化學習
- View工作流程-相關學習View
- caffe整體框架的學習的部落格,這個部落格山寨了一個caffe框架框架
- 學習PHP中的URL相關操作函式PHP函式
- 最近學習了限流相關的演算法演算法
- (7)caffe總結之Blob,Layer and Net以及對應配置檔案的編寫
- tensorflow相關函式學習總結函式
- GC相關知識簡單學習GC
- 圖學習相關論文快訊
- 網路、HTTP相關學習總結HTTP
- JVM相關知識整理和學習JVM
- Android效能優化相關的學習記錄(1)Android優化
- 計網學習筆記六 Network Layer Overview筆記View
- 計網學習筆記二 Link Layer Service筆記
- 跟阿銘學Linux-相關學習連結Linux
- FastAPI 學習之路(二十)介面文件配置相關ASTAPI
- [Docker 系列]docker 學習 四,映象相關原理Docker
- 【Docker 系列】docker 學習 四,映象相關原理Docker
- 優化學習率相關演算法優化演算法
- MySQL 5.7 學習心得之安全相關特性MySql
- 【linux】Linux程式相關知識學習整理Linux
- (十五) 學習筆記: Python程式(Process)相關筆記Python
- 如何系統的學習伺服器相關知識?伺服器
- Python學習系列之一: python相關環境的搭建Python
- 深度學習 Caffe 記憶體管理機制理解深度學習記憶體
- 深度學習---之caffe如何加入Leaky_relu層深度學習
- Java技術相關學習路線,學習Java後薪資如何?Java
- OceanBase學習之路10|C 相關 API 介紹API
- Flutter學習(六) 動畫以及動效相關Flutter動畫
- ThreeJS學習6_幾何體相關(BufferGeometry)JS
- Linux 相關學習內容(不定期更新)Linux
- 學習 java 做自動化測試相關Java
- Spring-boot整合AOP及AOP相關學習Springboot