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

📄 perceptron_example6.m

📁 分析单层感知器无法解决线性不可分输入矢量的分类问题
💻 M
字号:
%--------------------------------------------------------------------------
% 双层感知器网络的应用
% 由于第一层随机感知器网络的输出是随机的,所以这个双层网络可能有解,也可能无解。
% 如果网络找不到解,就需要再次应用函数initp对第一层进行初始化,然后再对第二层进行求解。
%
% initp—对感知器神经元初始化
% simup—对感知器神经元仿真
% trainp—利用感知器学习规则对感知器神经元训练
%--------------------------------------------------------------------------
clf reset;  % 从当前图形窗口删除所有图形对象,除"Position, Units, PaperPosition, and PaperUnits"
            % 等属性外,恢复图形窗口其他属性的默认设置
figure(gcf);    % gcf--获得当前图形窗口的句柄
% set(gcf,300,300);
% set(gcf, 'PaperPosition', [2 1 4 2]);
echo on;    % 允许在屏幕上显示批处理命令行
clc;
p=[-0.5 -0.5 -0.3 -0.1 -0.8;
    -0.5 0.5 -0.5 1 0];     % p为输入矢量
t=[1 1 0 0 0];   % t为目标矢量
plotpv(p,t);    % 画出感知器的输入/目标矢量
pause;
clc;
% 定义感知器神经元
S1=20;
[w1,b1]=initp(p,S1);    % 处理层,w1是权值矩阵,b1是阈值矩阵
[w2,b2]=initp(S1,t);    % 学习层,w2是权值矩阵,b2是阈值矩阵
pause;
clc;
a1=simup(p,w1,b1);      % 第一层的输出也就是第二层的输入
[w2,b2,epochs,errors]=trainp(w2,b2,a1,t,-1);    % 训练感知器神经元
pause;
clc;
ploterr(errors);    % 画出误差曲线
pause;
clc;
plotpv(p,t);
p=[0.2; 1.2];    % 利用训练完的感知器神经元进行分类
hold on;
plot(p(1),p(2),'*');
hold off;
a1=simup(p,w1,b1);  % 对输入矢量预处理
a2=simup(a1,w2,b2)   % 分类
echo off;

⌨️ 快捷键说明

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