與大多數的機器學習演算法一樣,caffe的學習也是由loss function驅動的(或者叫error,cost,objective function)。損失函式的目標是,將引數(就是網路中的權值和偏置)對映到乙個能夠度量引數「不好程度」的標量中,因此,其目標就是讓這個標量最小化(其實就是調整引數,是的損失函式的值最小)。
在caffe中,通過前向傳播計算損失,每一層由一系列的輸入(bottom)blobs產生一系列的輸出(top),某些層的輸出可以用於損失函式,一類典型的多分類任務的損失函式是softmaxwithloss
函式,其定義如下:
layer
在softmaxwithloss
函式中,top blob是乙個標量值,它是整個mni-batch損失的平均值(由**標籤和真實標籤計算得到)
如果乙個網路由多個層可以產生損失(比如,乙個網路使用softmaxwithloss
對輸入資料分類,同時也使用euclideanloss
層重構網路), loss weights可以用來給定兩個損失的重要性.
按慣例 , caffe中字尾為loss的層均用於損失函式, 其他層單純的用於中間計算。但是,可以通過新增乙個loss_weight:
欄位將任意層定義為乙個loss。對於字尾為loss的層,該層的第乙個top blob的loss_weight預設為1,其餘層預設為0。因此上面的softmaxwithloss
層的定義等價於:
layer
但是,對於能反向傳播的層,可以給定乙個非0的loss_weight,例如,如果需要,正則化網路中某些層的中間值。對於有關聯損失的非孤立的輸出,其損失可以簡單通過所有blob的求和計算的出
caffe中整個網路的損失可以通過對整個權值損失求和得到,其偽**如下:
loss := 0
for layer in layers:
for top, loss_weight in layer.tops, layer.loss_weights:
loss += loss_weight * sum(top)
caffe層筆記系列Loss層
1.可選引數 1 ignore label int型變數,預設為空。如果指定值,則label等於ignore label的樣本將不參與loss計算,反向傳播時梯度直接置0。2 normalize bool型變數,即loss會除以參與計算的樣本總數,否則loss等於直接求和。3 normalizati...
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...