BP神经网络底层代码详解
百度网盘链接:链接:http://pan.baidu.com/s/1bV4asu
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
BP神经网络底层代码详解:
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
warning off % 消除警告
feature jit off % 加速代码运行
format short % 数据类型
tic % 运算计时
load('data.mat')
xs = data(1:3,:)';% 输入数据
ys = data(4,:)'; % 输出数据
% 选连样本输入输出数据归一化
xsmin = min(xs);
xsmax = max(xs);
for i=1:length(xsmin)
xs(:,i) = (xs(:,i)-xsmin(i))./(xsmax(i)-xsmin(i));
end
% 拟合计算
hiddennum = 10; % 隐藏层个数
itermax = 4000; % 迭代计算次数
% 节点个数
inputnum=3; % 自变量个数
outputnum=1;% 因变量个数
xite=0.1; % 学习因子
alfa1=0.5; % 动量系数
% 输入层到隐藏层 权值
w1 = 10*rands(inputnum,hiddennum);
w1_1=w1;
w1_2=w1;
% 隐藏层到输出层 权值
w2 = 10*rands(hiddennum,outputnum);
w2_1=w2;
w2_2=w2;
I=zeros(hiddennum,1); % 输入层到隐藏层 计算值
Iout=zeros(hiddennum,1); % 隐藏层到输出层 计算值
FI=zeros(hiddennum,1); % S函数的导数f(x) = 1/(1+exp(-x)),则导数f(x)' = f(x)*(1-f(x))
NS=size(xs,1);% 训练数据维数,样本个数
for ii=1:itermax
for s=1:NS % 逐行提取样本
% 输入层到隐藏层
x=xs(s,:); % 逐行提取样本
for j=1:hiddennum
I(j)=x*w1(:,j);
Iout(j)=1/(1+exp(-I(j)));
end
% 隐藏层到输出层
yl=w2'*Iout;
y=ys(s,:);% 实际值、
ey=y-yl; % 误差
el = 0.5*( ey )^2; % 输出误差性能指标
es(s)=el;
if s==NS
E = sum(es); % 误差累计和
end
% 隐藏层到输出层的更新
w2=w2_1+xite*Iout*ey+alfa1*(w2_1-w2_2);
% 输入层到隐藏层的更新
for j=1:hiddennum
S=1/(1+exp(-I(j)));
FI(j)=S*(1-S);
end
for i=1:inputnum
for j=1:hiddennum
dw1(i,j)=xite*FI(j)*x(i)*(ey(1)*w2(j,1));
end
end
w1=w1_1+dw1+alfa1*(w1_1-w1_2);
w1_2=w1_1; w1_1=w1;
w2_2=w2_1; w2_1=w2;
end
Ek(ii)=E; % 每一次的迭代误差
end
time = toc % 计时结束
%% 画图
figure(1);
% plot(Ek,'ro-');
loglog(Ek,'ro-')
xlabel('迭代次数');ylabel('迭代误差E');axis tight;grid on;
%% 数据拟合画图
test = xs;
for i=1:size(test,1)% 样本个数
for j=1:hiddennum
I_test(i,j)=test(i,:)*w1(:,j);
Iout_test(i,j)=1/(1+exp(-I_test(i,j)));
end
end
y=w2'*Iout_test';
disp(['预测值: '])
disp( num2str(y') )
disp(['预测结果的均方根误差: ', num2str(mse(y'-ys) ) ])
figure(2),hold on;
plot(y,'r.-');
plot(ys,'b.-');
legend('拟合预测数据','实际数据');
grid on;axis tight;
hold off;
案例分享:【1】BP神经网络模糊评价
【2】BP 神经网络训练
页:
[1]