[神经网络]Matlab神经网络原理4.5节 - 线性分类学习(批量)

版权声明:转载请说明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;

输出

猜你喜欢

转载自blog.csdn.net/xeonmm1/article/details/83628565