自己用matlab实现的BP神经网络算法,无法得到预期的效果,主要是误差太大

是不是源代码有问题,麻烦大家看看!lr=0.05;%lr为学习速率;err_goal=0.1;%err_goal为期望误差最小值max_epoch=15000;%max_... 是不是源代码有问题,麻烦大家看看!

lr=0.05; %lr为学习速率;
err_goal=0.1; %err_goal为期望误差最小值
max_epoch=15000; %max_epoch为训练的最大次数;
a=0.9; %a为惯性系数
Oi=0;
Ok=0; %置隐含层和输出层各神经元输出初值为0
%提供两组训练集和目标值(3输入神经元,2输出)
%X=[1 1;-1 -1;1 1];
%T=[1 1;1 1];
load house_dataset;
x=houseInputs;
t=houseTargets;
%数据的归一化
maxRowx=max(x,[],2);
maxRowt=max(t,[],2);
minRowx=min(x,[],2);
minRowt=min(t,[],2);
% y = ( x - min )/( max - min )
for i=1:size(x,2)
x(:,i)=(x(:,i)-minRowx)./(maxRowx-minRowx);
t(:,i)=(t(:,i)-minRowt)./(maxRowt-minRowt);
end
%初始化wki,wij(M为输入节点j的数量;q为隐含层节点i的数量;L为输出节点k的数量)
[M,N]=size(x);
q=8;
[L,N]=size(t); %N为训练集对数量
wij=rand(q,M);
wki=rand(L,q);%随机值在-0.05到0.05之间
wij0=zeros(size(wij));
wki0=zeros(size(wki));

for epoch=1:max_epoch
for n=1:N %for every example

neti=wij*x(:,n);%q*1 每个隐藏层的输出
oi=1./(1+exp(-neti));
netk=wki*oi;%L*1 每个输出层的输出
ok=1./(1+exp(-netk));
deltak=ok.*(1-ok).*(t(:,n)-ok);%输出层的误差项
deltai=oi.*(1-oi).*(wki'*deltak);%隐藏层de误差项

%更新对应的权值
deltawij=lr*deltai*(x(:,n)');
deltawki=lr*deltak*(ok');
wij=wij+deltawij;
wki=wki+deltawki;
%计算误差函数
E=0.0;
for i=1:N %N为训练的总数
neti=wij*x(:,i);%q*1 每个隐藏层的输出
oi=1./(1+exp(-neti));
netk=wki*oi;%L*1 每个输出层的输出
ok=1./(1+exp(-netk));
E=E+(ok-t)*(ok-t)';
end

E=E/2;
fprintf('the error is %f, the iteration is %d\n',E,epoch);

end
if E<err_goal
break;
end
end
展开
 我来答
我回来了调用
2014-09-01 · TA获得超过388个赞
知道小有建树答主
回答量:772
采纳率:0%
帮助的人:465万
展开全部
lr=0.05; %lr为学习速率;
err_goal=0.1; %err_goal为期望误差最小值
max_epoch=15000; %max_epoch为训练的最大次数;
a=0.9; %a为惯性系数
Oi=0;
Ok=0; %置隐含层和输出层各神经元输出初值为0
这些初始参数是谁提供给你?

调整一下这些参数看看.
追问
这些参数是在网上看到的,说是默认的参数
追答
那多半与这些参数有关了
钺联昱M
2014-08-30 · TA获得超过706个赞
知道小有建树答主
回答量:1789
采纳率:33%
帮助的人:891万
展开全部
检查输出结果 另外把每层程序单独检查 看输出数据是否合理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
608sushe
2014-08-29 · TA获得超过182个赞
知道小有建树答主
回答量:213
采纳率:50%
帮助的人:52.9万
展开全部
源代码你能运行的话 可以考虑训练的样本数据的量的问题
追问
但如果用matlab自带的神经网络算法可以拟合出较好地效果,误差也很小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式