• 地中海渔民
    了解作者
  • matlab
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2019-10-27 14:08
    上传日期
利用BP算法和MLP模型实现对非线性函数的训练
BP.zip
  • BP_1.m
    1.5KB
  • BP_edit.m
    1.8KB
  • BP_2.m
    1.8KB
内容介绍
%% 基于BP神经网络对非线性函数进行逼近 %% 清空环境变量 clear clc %% 初始化部分 %初始化学习参数 eta=0.3; % 初始化权值矩阵 wij=2*rand(2,5)-1; wjk=2*rand(5,1)-1; % 初始化阈值 thetaj=2*rand(5,1)-1; thetak=2*rand(1)-1; %设定误差标准 errstd=0.05; errall=10; xteach1=linspace(-10,10,11); xteach2=linspace(-10,10,11); for p=1:11 for q=1:11 yteach(p,q)= (sin(xteach1(p))/xteach1(p))*(sin(xteach2(q))/xteach2(q)); end end while i<10000000000 i for p=1:11 for q=1:11 %取样本 xt=[xteach1(p);xteach2(q)]; yt=yteach(p,q); %计算各层的输出,前向传播 oi=xt; netj=wij'*xt; oj=1./(1+exp(-(netj-thetaj))); netk=wjk'*oj; ok=1./(1+exp(-(netk-thetak))); y=ok; %计算各层误差 后向传播 deltak=(yt-y).*ok.*(1-ok); deltaj=wjk*deltak.*oj.*(1-oj); %修正权值和阈值 wij=wij+eta*oi*deltaj'; thetaj=thetaj-eta*deltaj; wjk=wjk+eta*oj*deltak'; thetak=thetak-eta*deltak; %保存当前样本误差 errp=((yt-y).^2)./2; end if errp < 0.00000000001 break end i = i + 1; end end %画图显示 x1=-10:0.1:10; x2=-10:0.1:10; [x,y]=meshgrid(x1,x2); z1=(sin(x)/x)*(sin(y)/y); figure(1) mesh(x,y,z1); title('标准图像') hold on x1=linspace(-10,10,21); x2=linspace(-10,10,21); for p=1:21 for q=1:21 %取样本 xt=[x1(p);x2(q)]; oi=xt; netj=wij'*xt; oj=1./(1+exp(-(netj-thetaj))); netk=wjk'*oj; ok=1./(1+exp(-(netk-thetak))); z2(p,q)=ok; end end figure; [x,y]=meshgrid(x1,x2); mesh(x,y,z2); title('测试结果图像');
评论
    相关推荐