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

本文详细介绍了一种基于Matlab的深度神经网络实现方法,特别针对线性平面分类任务。通过调整学习率和迭代次数,该网络能有效区分二维平面上的不同类别。文章提供了完整的代码示例,并解释了关键步骤,如权重更新、误差计算和分类平面绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值