實作團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也是個純量.
參考用範例:
ref: