载入中

http://huangbo929.blog.edu.cn/
  
载入中
相册
登录
载入中
最新日志
载入中
最新回复
载入中
最新留言
载入中
友情链接
日志统计
载入中
用户公告

载入中

  选择阅读字号:      我的首页  设为首页  加为收藏  点此留言

感知机神经网络算法matlab实现
感知机神经网络算法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
神威 发表于 2007-9-2 17:26:00 | 阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
载入中
Powered by Oblog.