📄 matlab1.txt
字号:
matlab中遗传算法的例子
y=1/x:
%N=input('设定隐含层神经元个数:\n');
%maxecho=input('最大训练回合数');
%网络初始化
N=3;%可以自己设定
maxecho=1000;
h=0.4;%学习速率
p=1:1:100;
t=1./p;
inw=randn(N,2);%输入-隐含权值矩阵,单输入并加上了偏置一列
ins=zeros(N,1);%隐含得到的诱导矩阵
outg=zeros(N,1);%反向传到回至输入的delta值
outs=zeros(N,1);%隐含输出的矩阵
outw=randn(1,N+1);%隐含输出权值矩阵(加上一个偏置)
outv=zeros(1,1);%输出得到的诱导矩阵
outy=zeros(1,1);
backg=zeros(1,1);%反向传至隐含层的delta值
m=1;
n=0;
%开始样本训练
%for x=1:maxecho
while(n<=maxecho)%|m>0.2)
m=0;
for i=1:length(p)
ins=inw*[p(i);1];
outs=1./(1+exp(-ins));
outv=outw*[outs;1];
outy=1./(1+exp(-outv));
backg=(t(i)-outy)*(outy.*(1-outy));
outg=(outs.*(1-outs)).*(outw(:,1:N)'*backg);
outw=outw+h*backg*[outs;1]';
inw=inw+h*outg*[p(i),1];
m=m+(t(i)-outy)^2;
end
n=n+1;
end
%开始样本测试
textp=1:0.1:100;
textt=1./textp;
textout=zeros(1,length(textp));
error=zeros(1,length(textp));
for i=1:length(textp)
ins=inw*[textp(i);1];
outs=1./(1+exp(-ins));
outv=outw*[outs;1];
outy=1./(1+exp(-outv));
textout(i)=outy;
error(i)=abs(textt(i)-textout(i));
end
%测试完成后,观察输出,以及误差的变化
k=1:0.1:100;
plot(k,textt,'r',k,textout,'b',k,error,'g');
xlabel(n);
可以比较清楚的看到一个基本bp算法的过程,当时自己比较得意的就是其中的矩阵相乘。速度很快,而且比较容易扩展,即任意多的输入,任意多的隐含层。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -