版权声明:转载请说明Zhonglihao原创 https://blog.csdn.net/xeonmm1/article/details/83628565
close all;
% 深度神经网络matlab书本的4.5节代码
% 用于线性平面分类学习
% 由zhonglihao加上详细的注释
%% 配置区
n = 0.2; % 学习率
w = [0, 0, 0]; % 权重声明
P = [-9, 1, -12, -4, 0, 5;...
15, -8, 4, 5, 11, 9]; % 训练的二维坐标
P = [ones(1,6);P]; % 结合偏置训练
d = [0,1,0,0,0,1]; % 期望输出
MAX = 20; % 最大训练次数
%% 训练区
i = 0;
while 1
v = w * P; % 输入向量与权重相乘
y = hardlim(v); % 阈值型传递函数
% 更新
e = (d - y); % 输出与期望输出的误差
ee(i+1) = mae(e); % 绝对误差平均
if(ee(i+1)<0.001) % 如果误差收敛则结束训练
disp('we have got it:');
disp(w);
break;
end
% 更新权值和偏置
w = w + n*(d - y)*P'; % 更新权重
i = i + 1;
if(i>=MAX) % 设置最大学习次数
disp('MAX times loop');
disp(w);
disp(ee(i+1));
break;
end
end
%% 显示
figure(1)
plot([-9, -12, -4, 0],[15, 4, 5,11],'o');
hold on;
plot([1,5],[-8,9],'*');
axis([-13,6,-10,16]);
x = -13:.2:6;
y = x*(-w(2)/w(3))-w(1)/w(3);
plot(x,y);
legend('第一类','第二类','分类平面');
hold off;
输出