Caffe原始碼解析6 Neuron Layer

2022-07-05 16:42:12 字數 2037 閱讀 5916

neuronlayer,顧名思義這裡就是神經元,啟用函式的相應層。我們知道在blob進入啟用函式之前和之後他的size是不會變的,而且啟用值也就是輸出 \(y\) 只依賴於相應的輸入 \(x\)。在caffe裡面所有的layer的實現都放在src資料夾下的layer資料夾中,基本上很多文章裡應用到的layer型別它都有cpu和cuda的實現。

在caffe裡面neuronlayer比較多,在此羅列了一下

caffe裡面的neuron種模擬較多方便人們使用,這裡我們著重關注幾個主要的neuro_layer

relulayer

目前在啟用層的函式中使用relu是非常普遍的,一般我們在看資料或者講義中總是提到的是sigmoid函式,它比sigmoid有更快的收斂性,因為sigmoid在收斂的時候越靠近目標點收斂的速度會越慢,也是其函式的曲線形狀決定的。而relulayer則相對收斂更快,具體可以看krizhevsky 12年的那篇imagenet cnn文章有更詳細的介紹。

其計算的公式是:

\[y = \max(0, x)

\]如果有負斜率式子變為:

\[y = \max(0, x) + \nu \min(0, x)

\]反向傳播的公式

\[ \frac = \left\

\nu \frac & \mathrm \; x \le 0 \\

\frac & \mathrm \; x > 0

\end \right.

\]其在cafffe中的forward和backward函式為

template void relulayer::forward_cpu(const vector*>& bottom,

const vector*>& top)

}template void relulayer::backward_cpu(const vector*>& top,

const vector& propagate_down,

const vector*>& bottom)

}}

sigmoidlayer

sigmoid函式,也稱為階躍函式,函式曲線是乙個優美的s形。目前使用sigmoid函式已經不多了,大多使用relu來代替,其對應的啟用函式為:

\[y = (1 + \exp(-x))^

\]其反向傳播時

\[\frac

= \frac y (1 - y)\]

其相應的forward和backward的函式為

template void sigmoidlayer::forward_cpu(const vector*>& bottom,

const vector*>& top)

}template void sigmoidlayer::backward_cpu(const vector*>& top,

const vector& propagate_down,

const vector*>& bottom)

}}

dropoutlayer

dropoutlayer現在是非常常用的一種網路層,只用在訓練階段,一般用在網路的全連線層中,可以減少網路的過擬合問題。其思想是在訓練過程中隨機的將一部分輸入x之置為0。

\[y_} = \left\

\frac & \mbox u > p \\

0 & \mbox

\end \right.

\]其forward_cpu和backward_cpu為:

template void dropoutlayer::forward_cpu(const vector*>& bottom,

const vector*>& top)

} else

}template void dropoutlayer::backward_cpu(const vector*>& top,

const vector& propagate_down,

const vector*>& bottom)

} else

}}

caffe原始碼解析

目錄目錄 簡單介紹 主要函式readprotofromtextfile 函式 writeprotototextfile 函式 readprotofrombinaryfile 函式 writeprototobinaryfile 函式 readimagetocvmat 函式 matchext 函式 cv...

caffe原始碼解析 一

用si載入 後 首先從caffe layer的實現看起,不同框架下最大的差異就在於層的實現也決定了層的靈活性 layer可以看成是乙個基類,下面存在data layer,activation neuron layers,vision layer,common layers,loss layer,各個...

Caffe原始碼解析5 Conv Layer

vision layer裡面主要是包括了一些關於一些視覺上的操作,比如卷積 反卷積 池化等等。這裡的類跟data layer一樣好很多種繼承關係。主要包括了這幾個類,其中cudnn分別是cuda版本,這裡先不討論,在這裡先討論convolutionlayer 其繼承自layer,是乙個卷積以及反卷積...