📄 experiment1_1.m
字号:
clear;clc;
MaxTrn=10000; % 训练次数
ita=0.4; % 动量因子
alpha=0.2; % 学习率
LayerSize=3; % 层数
SizeOfL0=1; % 输入层节点数,不包括域值节点
SizeOfL1=5; % 隐层节点数,不包括域值节点
SizeOfL2=1; % 输出层节点
bdown=0; % 区间的下界
bup=3; % 区间的上界
h=0.02; % 采样间隔
Pop=floor((bup-bdown)/h)+1;
SmpPnt=bdown:h:bup; % 采样点向量
SmpRslt=TargetFxn(SmpPnt);
W01=rand(SizeOfL0+1,SizeOfL1);
W12=rand(SizeOfL1+1,SizeOfL2);
tic
% 训练
W01delta=zeros(SizeOfL0+1,SizeOfL1);
W12delta=zeros(SizeOfL1+1,SizeOfL2);
for t=1:MaxTrn
t % 输出训练次数
Sum01=zeros(SizeOfL0+1,SizeOfL1);
Sum12=zeros(SizeOfL1+1,SizeOfL2);
for p=1:Pop
Y0=[1,SmpPnt(p)]'; % 第0层输出,并加域值
X1=(W01')*Y0; % 第1层输入
Y1=[1;Sigmoid(X1)]; % 第1层输出,并加域值
X2=(W12')*Y1; % 第2层输入
Y2=Sigmoid(X2); % 第2层输出
delta2=(Y2-SmpRslt(p))*dSigmoid(X2)'; % 第2层(delta2和delta1是数,写成行向量)
EpYp=W12*delta2'; delta1=(dSigmoid(X1).*EpYp(2:SizeOfL1+1))'; % 第1层(EpYp表示Ep对Yp求偏微分的结果)
Sum12=Sum12+Y1*delta2;
Sum01=Sum01+Y0*delta1;
end;
W01delta=ita.*W01delta-alpha.*Sum01;
W01=W01+W01delta;
W12delta=ita.*W12delta-alpha.*Sum12;
W12=W12+W12delta;
end;
toc
% 输出
for p=1:Pop
YY0=[1,SmpPnt(p)]'; % 第0层输出
XX1=(W01')*YY0; % 第1层输入
YY1=[1;Sigmoid(XX1)]; % 第1层输出,并加域值
XX2=(W12')*YY1; % 第2层输入
YY2=Sigmoid(XX2); % 第2层输出
YY(p)=YY2;
end;
figure(1);
plot(SmpRslt,'g');hold on;plot(YY,'b');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -