matlab 簡單神經網路 sim 自主實現
阿新 • • 發佈:2019-01-30
function y = MyBPSim(net,Test_data,inputps) %Test_data,待分類的資料,每行表示一個特徵向量 IW = net.IW{1,1}; % net是訓練得到的網路,IW表示隱含層的權矩陣 % 維數 = 隱含層神經元個數 * 特徵數 LW = net.LW{2,1}; % LW表示隱含層權矩陣,維數 = 1 * 隱含層神經元個數 b1 = net.b{1}*ones(1,size(Test_data,2)); % 輸入層的閾值 b2 = net.b{2}*ones(1,size(Test_data,2)); % 隱含層的閾值 imp2 = mapminmax('apply',Test_data,net.inputs{1}.processSettings{1}); %imp2 = Test_data; %imp2 = mapminmax(Test_data,-1,1); n1 = (IW * imp2) + b1; % out1 = 2/(1 + exp(2 * n1)) - 1; % tansig函式的表示式,out1表示輸入層的輸出結果 % out1 = 1 ./ (1 + exp(-n1)); out1 = tansig(n1); out2 = (LW * out1) + b2; % purelin函式就是形如 y = x,所以直接可以得到out2 y = mapminmax('reverse',out2,net.outputs{2}.processSettings{1}); end
神經網路模型為:
在《matlab 神經網路43個案例分析中》有如下列表
隱含層用logsig 輸出層用purelin 效果比較好