⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp1.m

📁 两层BP神经网络训练加权系数 隐含层取S型传输函数 输出取线性传输函数
💻 M
字号:
%两层BP神经网络训练加权系数 隐含层取S型传输函数 输出取线性传输函数
%BP网络的第一阶段学习期(训练加权系数wki,wij)
%初始化
lr=0.05;err_goal=0.001;   %lr为学习速率,err_goal为期望误差最小值
max_epoch=1000;           %max_epoch为训练最大次数           
%提供两组训练集和目标值
X=[1 2;-1 1;1 3];T=[1 1;1 1];
%初始化wki,wij(M为输入节点j的数量,q为隐含层节点i的数量,L为输出节点k的数量)
[M,N]=size(X);q=10;[L,N]=size(T);  %N为训练集对数量
Wij=rand(q,M);Wki=rand(L,q);
b1=zeros(q,1);b2=zeros(L,1);       %随即给定隐含层和输出层的偏值
for epoch=1:max_epoch
   Oi=tansig(Wij*X,b1);            %计算隐含层各神经元输出
   Ok=purelin(Wki*Oi,b2);          %计算输出层各神经元输出
   E=T-Ok;                         %计算误差函数   
deltak=deltalin(Ok,E);             %计算输出层的delta
deltai=deltatan(Oi,deltak,Wki);    %计算隐含层的delta
%调整输出层加权系数
[dWki,bd2]=learnbp(Oi,deltak,lr);
Wki=Wki+dWki;b2=b2+db2;
%调整隐含层加权系数
[dWij,bd1]=learnbp(X,deltai,lr);
Wij=Wij+dWij;b1=b1+db1;
%计算网络权值修正后的误差平方和
SSE=sumsqr(T-purelin(Wki*tansig(Wij*X,b1),b2));
if (SSE<err_goal)break;end
epoch    %显示计算次数
Wij,Wki  %显示加权系数
%BP网络的第二阶段工作期(根据训练好的wki,wij和给定的输入计算输出)
X1=X;
Oi=tansig(Wij*X1,b1);              %计算隐含层各神经元的输出
Ok=purelin(Wki,Oi,b2);             %计算输出层各神经元的输出
Ok                                 %显示网络输出层的输出

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -