Pytorch Taoyuan- LeNet 實作團02- Neurons

吳政龍
3 min readJun 16, 2019

--

實作團01順利完成,從MNIST dataset processing的過程中,可以知道pytorch dataloader和自己從byte format file一步一步解的差異,相信日後在遇到野生的dataset時,更能有想法來處理這些raw data.

本次的目標是要能寫出 Linear neuron, Convolutional neuron 以及Pooling neuron的正向傳遞( feed forward)功能.

關於 neuron,權重(weight),偏差(bias),啟動/活化/刺激/激活…函數(activation function)

關於convolutional neuron的原理,可以參照這篇:

裡頭有關於正向傳播的方法.

而Pooling的原理,可以參看Marcel的部落格[1],或是要hardcore一點看Lenet的論文來實作[2],或是其他方法都可以.

而Linear neuron,網路上的資料很多很多,可以自己慢慢找.

建議實作的順序:

Linear ->Pooling-> Conv.

要注意的是,Linear的weights和bias都是純量,activation function是tanh

Pooling則可以有weight,是個純量,也可以沒有weight,就單純求平均,而bias也是個純量,且Pooling沒有activation function .

Conv的weights是個矩陣,根據kernel size來制定,而且在LeNet上,有Padding這個項目,所以得實現這個padding這個功能.bias也是個純量.

參考用範例:

https://github.com/ZhengLungWu/Pytorch-Taoyuan-LeNet-implement/blob/master/Pytorch%20Taoyuan-LeNet02.ipynb

ref:

[1]https://hemingwang.blogspot.com/2019/04/lenet-lab.html

[2]http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

--

--

No responses yet