CNN卷積神經網絡
1、初始化卷積網絡結構
cnn.layers = {
%input layer
struct('type', 'i')
%卷積層,卷積6個特徵輸出,卷積核尺寸爲<5,5>,卷積核爲{1,6}<5,5>。
struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5)
%子抽樣層,子抽樣比例,此爲1/2。
struct('type', 's', 'scale', 2)
%卷積層,卷積12個特徵輸出,卷積核尺寸爲<5,5>,卷積核爲{6,12}<5,5>。
struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5)
%子抽樣層,子抽樣比例,此爲1/2。
struct('type', 's', 'scale', 2)
};
2、初始化b=0,k{i}{j}(卷積核參數);感知層ffW、ffb。
3、正向計算各層輸出a{i}:
初始化a{1};
以convn(a,k,’valid’)正向卷積計算c層;
以scala=2,降採樣s層;
末端以ffv=f(a{n-1},ffW,…)計算輸出。
4、反向計算各層db、dk、dffW、dffb
5、修改各層b、k、ffW、ffb:
b = b – db;
k = k – dk;
ffW = ffW – dffW;
ffb = ffb - dffb;