BP神经网络建立2-2-1的网络层来逼近一个二元函数f(x,y)=0.1*x^2-0.7*x*y

我自己写了一个代码,有没大神可以帮我看看代码哪里有问题,运行后,很久都没出来结果w11=rand(1,2);w12=rand(1,2);w21=rand(1,2);x10... 我自己写了一个代码,有没大神可以帮我看看代码哪里有问题,运行后,很久都没出来结果
w11=rand(1,2);
w12=rand(1,2);
w21=rand(1,2);
x10=rand(1,150);
x20=rand(1,150);
x11=x10(1:1:100);
x21=x20(1:1:100);
x11=x11*100;
x21=x21*100;
Actual=0.1*x11.^2-0.7*x11.*x21;
Error=0;
count=0;
while( count==0 || (Error/100)>0.001 )
Error=0;
for loop=1:100
hide1=w11(1,1)*x11(1,loop)+w12(1,1)*x21(1,loop);
hide2=w11(1,2)*x11(1,loop)+w12(1,2)*x21(1,loop);
Output1=( exp( -1*hide1 )+1 )^(-1);% the output of hiden node 1
Output2=( exp( -1*hide2 )+1 )^(-1);% 2

Input1=Output1*w21(1,1);
Input2=Output2*w21(1,2);
Output3=( 1+exp( -1*( Input1+Input2)) )^(-1);

error=Actual(1,loop)-Output3;
Error=Error+0.5*error^2;
delta=Output3*(1-Output3)*error;
w21(1,1)=w21(1,1)+0.1*delta*Output1;
w21(1,2)=w21(1,2)+0.1*delta*Output2;
w11(1,1)=w11(1,1)+0.1*Output1*(1-Output1)*delta*(w21(1,1)+w21(1,2))*x11(1,loop);
w11(1,2)=w11(1,2)+0.1*Output2*(1-Output2)*delta*(w21(1,1)+w21(1,2))*x11(1,loop);
w12(1,1)=w12(1,1)+0.1*Output1*(1-Output1)*delta*(w21(1,1)+w21(1,2))*x21(1,loop);
w12(1,2)=w12(1,2)+0.1*Output2*(1-Output2)*delta*(w21(1,1)+w21(1,2))*x21(1,loop);

end

count=count+1;

end
Error;
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
meng2235
推荐于2017-10-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:4585
采纳率:74%
帮助的人:3176万
展开全部

while( count==0 || (Error/100)>0.001 ) 这句话的count==0有何意义?应该是count<=maxcount。当然这一句也不影响程序。

一直没反应,说明没有收敛,即小error<0.001的目标一直达不到,可能陷入局部极小点中了。

也没仔细看你的程序,你对照下经典程序吧,第一个案例就是自己编程的BP算法。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式