caffe backward之梯度計算

2021-08-22 13:05:22 字數 1912 閱讀 4294

傳送門: 傳送門

backward是利用代價函式求取關於網路中每個引數梯度的過程,為後面更新網路引數做準備。求取梯度的過程也是乙個矩陣運算的過程,後面會有詳細介紹,本身求取梯度的過程並不是很複雜,而且網路中的各層求取梯度的過程都是相似的。下面就按照backward的執行順序,從最後一層向前介紹caffe的backward的過程。

softmax with loss layer:

按理說每一層應該都要求一層梯度,其中包括對權值,對輸入資料,對偏置分別求取梯度。但是在softmax with loss layer這一層求取梯度的一些過程被省去了,首先這一次只是乙個啟用函式層,沒有權值和偏置引數,然後我們只需要對輸入資料求取梯度,softmax with loss layer的輸入資料其實表示的是原始輸入資料相對於各個標籤的打分,而對於代價函式對這個輸入的梯度已經有專門的迭代演算法來求解。參考:

caffe中的程式對應如下:

for (int i = 0; i < outer_num_; ++i)

} else

}

}

// scale gradient

dtype loss_weight = top[0]->cpu_diff()[0] /

get_normalizer(normalization_, count);

caffe_scal(prob_.count(), loss_weight, bottom_diff);

inner product layer:

這是一層全連線層,包含權值,偏置引數,所以在這一層我們要求3個梯度值,第一是對偏置求取梯度,第二是對權值求取梯度,第三是對輸入資料求取梯度,其中對輸入資料求取的梯度和前面類似會反向傳播到前一層。

relu layer:

這一層是inner product layer的啟用函式層,caffe把每層網路的加權求和和啟用函式分成兩層網路來對待,在這層函式裡面由於沒有權值和偏置,所以我們也只是需要對輸入資料求取梯度即可。而由於啟用函式採用的是relu函式,所以對輸入求取梯度也比較簡單,我們利用的結果就是softmax with loss layer層求取的梯度結果進行鏈式求導的,程式如下:

if (propagate_down[0])

}

inner product layer:

這一層和前面說的類似,也是乙個全連線層,要分別對權值,偏置,輸入分別求取梯度,其中對輸入引數的梯度會反向傳播到前一層。

pooling layer:

下取樣層根據下取樣方式的不同,求取梯度的方式也不同,對於pooling層,只需要對輸入引數求梯度即可,poling層是沒有權值和偏置引數的。然後再把梯度反向傳播給前一層。在lenet中,pooling層採用的下取樣方法是poolingparameter_poolmethod_max,即在pooling核區域選取乙個最大值作為下取樣的畫素值。那麼對於輸入求取梯度就很容易了,即對輸入的梯度其實就是輸出梯度中對應位置的梯度。關於這個位置資訊是在forward過程中儲存起來的。

convlution layer:

卷積層包含權值引數,偏置引數,所有對卷積層的梯度計算包含計算對權值的梯度,對偏置的梯度,對輸入引數的梯度,同樣對輸入引數的梯度也會反向傳播到前一層中。

pooling layer:

這一層和上面類似,這裡不再介紹。

convolution layer:

該層是對原始輸入資料做第一次卷積,所以這裡只對權值引數和偏置引數計算梯度,而輸入引數就不用計算梯度了,因為這已經是第一層,輸入是原始畫素了,所以也就不需要進行反向傳播了。該層的輸入是28x28的原始畫素,輸出是20個24x24的卷積後的影象,卷積核的大小是5x5。

因果推斷 因果關係之梯

關聯 第一層級 通過觀察尋找規律。如果觀察到某一事件改變了觀察到另一事件的可能性,我們便說這一事件與另一事件相關聯。基於被動觀察做出 典型問題是 如果我觀察到 會怎樣?當今的人工智慧仍處於第一層級,強人工智慧的目標是製造出擁有人類智慧型的機器,讓它們能與人類交流並指導人類的探索方向。而深度學習只是讓...

梯式計畫模型

方案是為了解決乙個問題而存在的,因此所有的方案都有其原因,那我們今天的話題也不例外。作為軟體工程的一部分,計畫在整個過程中占有舉足輕重的地位,可以用一句官僚的話來說就是,它是一場戰爭的排頭兵,直接影響了任務的成敗。讀過 軟體估算 這本書的朋友應該還記得這句話 估算和計畫是兩個相關的話題,但估算不是計...

字梯遊戲求解

在字梯遊戲中,每乙個詞都是通過將字梯中的前乙個詞改變乙個字母形成的。例如,我們可以通過一系列的單字母替換將zero轉換成five zero,hero,here,hire,fire,five。這是乙個無權最短路徑問題,其中每個詞是乙個頂點,如果兩個頂點可以通過乙個字母的替換相互轉化的話,在這兩個頂點之...