總結1. 損失函式層 loss layers 型別:
softmaxwithloss //softmax+損失函式(softmax with loss) caffe中多類分類問題
contrastiveloss //對比損失函式(contrastive loss)
euclideanloss //歐式距離損失函式(euclidean loss) 是線性回歸常用的損失函式。
infogainloss //資訊增益損失函式(informationgain loss) 在文字處理中用到的損失函式。
accuracy //用來計算輸出和目標的正確率+ 計算top_k,事實上這不是乙個loss,而且沒有backward這一步。
sigmoidcrossentropyloss //sigmoid交叉熵損失函式(sigmoid cross entropy loss) 也就是logistic regression使用的損失函式。
hingeloss //鉸鏈損失函式(hinge loss) 主要用在svm分類器中.
---如果類別之間是互斥的,適合用softmax;如果類別之間允許重疊,應該選擇k個logistic分類器。
總結2. 啟用層 activation / neuron layers 型別(輸入輸出大小相同,所以忽略大小的設定)
relu //rectified-linear and leaky-relu。max(0,x)(bottom:上層conv/fc,top:上層conv/fc)
sigmoid //使用 sigmoid(x)函式計算每個輸入資料的輸出,一般自己取名encode1neuron。(bottom:上層conv/fc,top:自己)
tanh //the tanh 層使用 tanh(x)函式計算每個輸入資料x的輸出。(bottom:in,top:out)
absval //the absval 層使用 abs(x)函式計算每個輸入資料 x 的輸出。(bottom:in,top:out)
power //the power 層使用函式(shift + scale * x) ^ power 計算每個輸入資料 x 的輸出。(bottom:in,top:out)
bnll //the bnll 層使用函式 log(1 + exp(x))計算每個輸入資料 x 的輸出。(bottom:in,top:out)
總結3. 資料層 可以高效的從記憶體讀取資料,若對讀寫效率要求不高也可以從硬碟上的 hdft 檔案或者普通的檔案讀取。
常見的資料預處理操作(減均值,尺度變換,隨機裁剪或者映象)可以能過設定引數transformationparameter 來實現。(具體引數可查caffe.proto或文件)
data //必填(source,batch_size),可選(rand_skip backend[default leveldb]) 高效率的資料庫
memorydata //必填(batch_size, channels, height, width: 指定直接從記憶體中讀取的輸入資料塊的尺寸),需用c++/python指定資料來源
hdf5output //必填(file_name: 寫入檔案的路徑)hdf5 output 層執行了乙個與資料讀取相反的操作, 它將資料寫進硬碟。
imagedata //必填(source: text 檔案的路徑名,該 text 檔案的每一行儲存一張的路徑名和對應的標籤;batch_size: 打包成 batch 的數量)
//可選(rand_skip,shuffle [default false]洗牌,new_height, new_width: 根據設定的值,輸入的將會被調整成給定的尺寸)
windowdata //
dummydata //主要用來開發和除錯, 詳細介紹見 dummydataparameter。(caffe.proto)
總結4. 視覺層 視覺層的輸入與輸出均為影象。乙個典型的影象通常為單通道的灰度圖或三通道的 rbg彩色圖。而通道數不限,類似結構的資料均可理解為影象。
convolution //top:自己,bottom:"上層data/上層pool/上層norm/上層conv"(就是不能接啟用層(如relu),直接忽略,接conv)
pooling //top:自己,bottom: "上層conv"
lrn //top:自己,bottom: "上層是什麼接什麼(一般接在pool後)"
im2col //im2col 是乙個輔助操作, 用來實現影象到「列向量」的轉換(早期)
總結5. 普通層
innerproduct //內積/全連線層,num_output (c_o): 層的輸出節點數或者理解為濾波器的個數
split
//split層 是乙個可以將輸入的 blob **(複製)成多個輸出 blob 的功能層, 通常當乙個 blob 需要給多個層作輸入資料時該層會被使用。
flatten //flatten 層用來將尺寸為 n * c * h * w 的輸入 blob 轉換成乙個尺寸為 n * (c*h*w)的輸出 blob。
reshape //reshape 層在不改變資料的情況下改變輸入 blob 的維度,和 flatten 操作一樣,處理過程只在輸入 blob 上進行,沒有進行資料的拷貝。
concat //鏈結 concat 層用來將多個輸入 blob 鏈結成乙個 blob 輸出
slice //切片 slice 層按照給定維度(num 或者 channel)和切分位置的索引將乙個輸入 blob 分成多個blob 輸出。
eltwise //逐個元素操作 elementwise operations
argmax //argmax
softmax //softmax
mvn //mean-variance normalization
batchnorm //在cnn 後增加,位於神經元非線性變換前,基本上大多數網路結構都能很自然地融合進去。
//它不是網路本身本質上的內容修改,而是為了將conv層的輸出做normalization以使得下一層的更新能夠更快,更準確。
-------具體的定義和使用方法參考caffe官方文件
-------具體引數可查caffe.proto
Caffe學習筆記 Caffe模型
乙個完整的深度學習系統最核心的兩個方面是資料和模型。深度學習模型通常由三部分引數組成 可學習引數 learnable parameter 又稱可訓練引數 神經網路權係數 權重,其數值由模型初始化引數 誤差反向傳播過程控制,一般不可人工干預。結構引數 archetecture parameter 包括...
Caffe學習筆記
個人覺得這個大神對caffe的研究比較深入詳細!目錄 ubuntu14.04安裝caffe 僅cpu ubuntu14.04安裝cuda ubuntu14.04安裝caffe gpu ubuntu14.04 cudnn安裝 caffe cuda7.0下 caffe學習 blobs,layers,an...
caffe學習筆記160824
使用anaconda2 安裝caffe,在試圖繪製網路模型時 在繪製之前,需要先安裝兩個庫 安裝 raphviz sudo apt get install graphviz 注意,這裡用的是apt get來安裝,而不是pip.2 安裝pydot sudo pip install pydot 用的是p...