| 感知机神经网络算法matlab实现
相关资料参考《智能控制及其matlab实现》——电子工业出版社,李国勇编著
详细代码如下:
%感知机神经网络的第一阶段学习期(训练加权系数Wij) err_goal=0.001;lr=0.9 %给定期望误差的最小值和学习速率 max_epoch=10000 %给定训练的最大次数 X=[0 0 1 1;0 1 0 1];T=[0 0 0 1]; %提供四组训练集(2输入,1输出) %初始化Wij(M为输入节点j的数量,L为输出节点i的数量,N为训练集对的数量) [M,N]=size(X);[L,N]=size(T); Wij=rand(L,M);y=0;b=rand(L); for epoch=1:max_epoch %计算各神经元的输出 NETi=Wij*X; for j=1;N for i=1:L if(NETi(i,j)>=b(i)) y(i,j)=1; else y(i,j)=0; end end end %计算误差函数 E=(T-y);EE=0; for j=1:N EE=EE+abs(E(j)); end if(EE<err_goal)break;end; Wij=Wij+lr*E*X'; %调整输出层加权系数 b=b+sqrt(EE); %调整输出层神经元的阈值 end
epoch,Wij,b %现实计算次数、加权系数和阈值 %感知机神经网络的第二阶段的工作(根据训练好的Wij和给定的输入计算输出) X1=X; %给定输入 %计算各神经元的输出 NETi==Wij*X1;[M,N]=size(X1); for j=1:N for i=1:L if(NETi(i,j)>=b(i)) y(i,j)=1; else y(i,j)=0; end end end y %现实网络的输出
实验结果:
Wij =
1.0e+003 *
9.0005 9.0000
b =
1.0001e+004
y =
0 0 0 1 |