matlab收敛问题,请教一个Matlab神经网络无法收敛的问题

如题下面是程序

clear all

clc

p=[ 1520 510 5.155 33.88;

1468 521 5.321 35.79;

2412 1140 5.32 25.89;

1750 129 4.7 23.8;

1688 361 4.865 27.08;

1607 489 5.1 28.9;

1200 127 4.56 19.84;

1990 148 4.89 29.373;

1509 511 5.12 34.3;

1730 133 4.46 23.06

];

t=[

0.7 1.9;

0.6 1.798;

0.8 1.289;

1 1.68;

0.8 1.149;

1.03 1.72;

1.8 1.095;

0.9 1.230 ;

0.8 1.35;

1.4 1.201

];

%对原始数据及目标数据进行归一化处理

for i=1:4

P(:,i)=(p(:,i)-min(p(:,i)))/(max(p(:,i))-min(p(:,i)));

end

for i=1:2

T(:,i)=(t(:,i)-min(t(:,i)))/(max(t(:,i))-min(t(:,i)));

end

[R,Q]=size(P);%{P,t}为训练集

alfa=0.01;

epsi=1.0e-7;

emax=0;

N=4;%输入层神经元

S=15;%隐含层神经元

M=2;%输出层神经元

flag=0;%记录上次最大误差emax

%初始化权值和阈值

w1=rand(S,N)*0.1;

b1=rand(S,1)*0.1;

w2=rand(M,S)*0.1;

b2=rand(M,1)*0.1;

%开始循环

while 1>0

i=i+1;

j=j+1;

%向前传播

a0=P(i,:);

a1=tansig(w1*a0'+b1);

a2=logsig(w2*a1+b2);

d=T(i,:)'-a2;

e=(d(1)+d(2))/2;

if abs(e)>emax

emax=abs(e);

end

%误差最小时,迭代停止

if i==R

if abs(emax-flag)>epsi

flag=emax;

else

break;

end

emax=0;

i=0;

end

%逼近优良时,迭代停止

if abs(e)

k=k+1;

else

k=0;

end

if k==R

break;

end

%计算敏感性

s2=-d;

s1=-w2'*d.*b1;

%s2=(d*a2)*(1-a2);

%s1=(d*w1)*b1*(1-b1);

%更新权值矩阵及阈值

w2=w2-alfa*s2*a1';

b2=b2-alfa*s2;

w1=w1-alfa*s1*(a0);

b1=b1-alfa*s1;

end

a0=P(1,:)

a1=tansig(w1*a0'+b1);

a2=logsig(w2*a1+b2)

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值