展会信息港展会大全

求助!BP神经神经网络问题
来源:互联网   发布日期:2011-09-07 13:47:12   浏览:15701次  

导读: 作者:letitbe123 发表时间:2007-8-27 19:56:00 第2楼 一楼那位: 我给您发邮件了,但您一直没给我回。我有一些小的改动,我将改动后的整个程序帖出来。如果您看到,请您说明我的问题 lr=0.05;err=0.001;%lr是学习速率,err为误差期望最小值 max_epoch=1000...

作者:letitbe123      发表时间:2007-8-27 19:56:00

 第2楼  

一楼那位:
     我给您发邮件了,但您一直没给我回。我有一些小的改动,我将改动后的整个程序帖出来。如果您看到,请您说明我的问题

lr=0.05;err=0.001;%lr是学习速率,err为误差期望最小值
max_epoch=10000;a=0.9;%max_epoch为训练最大步数,a为惯性系数
Oi=0;Ok=0;%置隐含层和输出层初始值为0;
%提供32组训练集和目标值(两输入一输出)
%激活函数取g(x)=1/(1+exp(-x))
X=[0.8,1.2,1.6,2.4,3.2,3.6,4.2,4.8,0.8,1.2,1.6,2.4,3.2,3.6,4.2,4.8, 0.8,1.2,1.6,2.4,3.2,3.6,4.2,4.8,0.8,1.2,1.6,2.4,3.2,3.6,4.2,4.8;
    0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1, 2.2,2.2,2.2,2.2,2.2,2.2,2.2,2.2,3.2,3.2,3.2,3.2,3.2,3.2,3.2,3.2];
T1=[16,16,16,12,12,8,4,0,16,12,8,7,6,4,0,0,16,16,16,12,8,8,4,0,16,16,16,12,12,8,4,0];
%我想激活函数不能大于1,最后目标值不能大于1。(我可能理解有问题,请您纠正)
T=T1/20+0.1;
[M,N]=size(X);q=15;[L,N]=size(T);%M为输入节点j的数量;q为隐含层节点i的数量;L为输出层节点k的数量
 wij=rand(q,M);
 wki=rand(L,q);
wij0=zeros(size(wij));wki0=zeros(size(wki));
for epoch=1:max_epoch
    % 计算隐含层各神经元输出
    NETi=wij*X;
    for j=1:N
    for i=1:q
    Oi(i,j)=1/(1+exp((-NETi(i,j)+0.5)/1.4));
end
end
  %计算输出层各神经元输出
    NETk=wki*Oi;
   for i=1:N
   for k=1:L
    Ok(k,i)=1/(1+exp((-NETk(k,i)+0.5)/1.4));
   end
   end
   %计算误差函数
E=((T-Ok)*(T-Ok)')/2;
if(E<err)break;end
% 调整输出层加权系数
deltak=Ok.*(1-Ok).*(T-Ok);
w=wki;
wki=wki+lr*deltak*Oi';
wki0=w;
% 调整隐含层加权系数
deltai=Oi.*(1-Oi).*(deltak'*wki)';
w=wij;
wij=wij+lr*deltai*X';
wij0=w;
end
E%显示最后误差
epoch%显示计算次数
X1=X;
%计算各神经元输出
NETi=wij*X1;
for j=1:N
    for i=1:q
        Oi(i,j)=1/(1+exp((-NETi(i,j)+0.5)/1.4));
    end
end
NETk=wki*Oi;
for i=1:N
    for k=1:L
        Ok(k,i)=1/(1+exp((-NETk(k,i)+0.5)/1.4));
    end
end
A=(Ok-0.1)*20 %显示输出结果
B=T1-A
plot(A);
hold on;
plot(T1,'r');

赞助本站

人工智能实验室

相关热词: 求助 网络 问题

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港