BP神经网络实例(matlab)
- 输入数据:
183组应用数据(input.mat),随机列重排后取:
训练样本个数:160 (input_test.mat)
测试样本个数:23 (input_train.mat)
2.输入数据归一化:
训练样本归一化:[inputn,minp,maxp]=premnmx(input_train);
测试样本归一化:[inputn_test]=tramnmx(input_test,minp,maxp);
3. 训练结果图:
在第41一次时,训练达到最小设定梯度:e-7方,训练结束
4.权值和阈值矩阵:
1)w=net.IW{1,1}%输入到第一隐含层的权重矩阵;
2)wt=net.LW{2,1}%隐含层到输出层的权值矩阵;
3)b=net.b{1,1}%第一隐含层的阀值矩阵;
4)bt=net.b{2,1}%输出接点的阀值矩阵;
5.输出表达式:
已知隐层节点数为8,输出节点数为6,输入样本有14个参数,则w为8x14,b为8x1,wt为6x8,bt为6x1的矩阵,设输入为A,则输出B表达式如下: (x1,x2,…,x14)--->(y1,y2,…y6)
(y1,y2,…,y6)=logsig{tansig[(x1,x2,…,x14)*w’+b’]*wt’+bt’}
当输入A为矩阵形式时,计算步骤如下:
- 输入乘上权值:out1=A’*w’
- 加上阈值:for i=1:size(out1)
out1(i,:)=out1(i,:)+b'
- 传递函数变换:out1=tansig(out1)
- 隐层节点输入乘上权值:B=out1*w2'
- 加上阈值:for i=1:size(B)
B(i,:)=B(i,:)+b2'
- 传递函数变换:B=logsig(B)
6.准确率计算:
对于测试结果计算出来的结果B如下图所示,为6xn的矩阵,每一列对应一个测试样本的输出:
算法取每列中的最大值为1,其余设为0,则结果变为:
通过与理想输出(如下图)作对比,计算神经网络预测的准确率:
计算公式和结果如下:match_ratio=1-预测错误个数/总预测个数