1. 程式人生 > >caffe源碼 全連接層

caffe源碼 全連接層

blog pac 連接 class 代碼 aid caf 傳遞 you

圖示全連接層

技術分享

  • 如上圖所示,該全鏈接層輸入n * 4,輸出為n * 2,n為batch
  • 該層有兩個參數W和B,W為系數,B為偏置項
  • 該層的函數為F(x) = W*x + B,則W為4 * 2的矩陣,B 為 1 * 2 的矩陣

從公式理解全連接層

假設第N層為全連接層,輸入為Xn,輸出為Xn+1,其他與該層無關的信息可以忽略

  • 該層公式有Xn+1 = Fn(Xn) = W * Xn + B

前向傳播

  • 已知Xn,Xn+1 = W * Xn + B, 為前向傳播

反向傳播

反響傳播這裏需要求兩個梯度,loss 對 W的梯度 和 loss 對 B 的梯度,

  • loss 對 W 的梯度
    • 具體公式如下:技術分享
  • loss 對 B 的梯度
    • 具體公式如下:技術分享
  • 上面兩個梯度都用到了loss 對 該層輸出的梯度,所以在這層應該把loss 對該層輸入的梯度傳遞到上一層。
    • 具體公式如下:技術分享

caffe中innerproduct的代碼

前向傳播

這一步在代碼裏面分為兩步:

  • Xn+1 = W * Xn,如下圖:
    • 技術分享
  • Xn+1 = Xn+1 + B,如下圖:
    • 技術分享
  • 和上面推導的一樣

反向傳播

這裏需要求三個梯度,loss 對 W的梯度 ,loss 對 B的梯度, loss 對 Xn的梯度

  • loss 對 W 的梯度
    • 公式:技術分享
    • 代碼: 技術分享
    • 以上公式和推導的公式有點區別,後面加多loss 對W 的梯度,實現的是累積梯度
  • loss 對 B 的梯度
    • 公式:技術分享
    • 代碼:技術分享
    • 以上公式和推導的公式有點區別,後面加多loss 對B 的梯度,實現的是累積梯度
  • loss 對 Xn 的梯度,:
    • 公式: 技術分享
    • 代碼:技術分享
    • 公式和推導的並無區別

caffe源碼 全連接層