perceptive_138.m

来自「利用双层感知器神经网络处理线性不可分的分类问题」· M 代码 · 共 44 行

M
44
字号
% 单层感知器神经网络不能解决线性不可分的输入向量的分类问题,解决这一问题的办法是:对输入的线性不可分向量进行预处理,使其能够线性可分。实现这种方法的途径之一是采用竞争网络对输入向量进行预处理;另一个办法是采用随机感知器作为输入向量的预处理层。在本例中,将采用第二种方法,利用双层感知器神经网络来完成。
clf reset
figure(gcf)
%setfsize(300,300);
echo on
clc

% INITP -对感知器神经元初始化
% SIMUP -对感知器神经元仿真
% TRAINP -利用感知器学习规则对感知器神经元训练
pause  
clc
% P 为输入向量
P=[-0.5 -0.5 +0.3 -0.1 -0.8;
   -0.5 +0.5 -0.5 +1.0 +0.0];
% T 为目标向量
T = [1 1 0 0 0];
pause 
clc
% 绘出输入向量
plotpv(P,T);
pause
clc
S1=20;
% 定义感知器神经元
[w1,b1]=initp(P,S1);  %预处理层
[w2,b2]=initp(S1,T);  %学习层

pause
clc
% 训练感知器神经元
A1=simup(P,w1,b1);
[w2,b2,epochs,errors] = trainp(w2,b2,A1,T,[-1]);
pause
clc
% 绘制误差曲线
ploterr(errors);
pause
clc
% 利用训练完成的感知器神经元进行分类
p=[0.7;1.2];
a1=simup(p,w1,b1);  %对输入向量预处理
a2=simup(a1,w2,b2)  %分类
echo off

⌨️ 快捷键说明

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