神经网络分类

实验一

利用神经网络进行分类

(转载于陕西理工学院数学系中心实验室周涛副教授的工作,在此表示感谢)

一个经过训练的2输入神经元对5个输入向量进行分类(2类) 。结合一个例子给出步骤。

实验内容(说明:这里的许多参数都可以更改,希望大家能对这个程序的参数进行修改;同时也欢迎大家提问)

步骤一:

两个长度为5的向量构成输入样本矩阵P ,行向量T 为指导向量。利用PLOTPV 画出这个向量的图像。例如:

P = [-0.5 -0.5 +0.3 -0.1 -4; -0.5 +0.5 -0.5 +1.0 5];

T = [1 1 0 0 1];

plotpv(P,T);//plotpv函数利用感知器的输入向量和监督向量来画输入向量的图像 注意:在上面的式子中,4输入向量比5输入向量有更小的数量级,这个感知器必须把P 中的5个输入向量分成两类(依赖于T )。

步骤二 建立神经网络

MATLAB 提供函数newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。

net = newp([-40 1;-1 50],1);

注意:这个神经元的激励函数是hardlim 函数,也就是阶越函数。取0,1两个值。Hardlim 三函数,也就是阶越函数。取-1,1两个值。 步骤三 添加神经元的初始化值到分类图

初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。

hold on

linehandle = plotpc(net.IW{1},net.b{1});//plotpc函数用来画神经网络的分类线

步骤四 训练感知器

Matlab 提供了adapt 函数来训练感知器,adapt 函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3个角度去调整,画分类线一直到误差为0为止。

E = 1;//E为误差

net.adaptParam.passes = 3;

while (sse(E))//sse函数是用来判定误差E 的函数

[net,Y,E] = adapt(net,P,T);//利用输入样本调节神经网net

linehandle = plotpc(net.IW{1},net.b{1},linehandle);//画出调整以后的分类线

drawnow;//延迟一段时间

end

注意:这将会花费感知器的许多时间来训练。这对这样一个简单问题来说时间是非常长的。追究其原因在于outlier vector,尽管需要很长的训练时间,这个感知器仍然适当的学习并且被用于划分别的输入。

步骤五 模拟sim

SIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量[0.7; 1.2].这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。

p = [0.7; 1.2];

a = sim(net,p);//利用模拟函数sim 计算出新输入p 的神经网络的输出 plotpv(p,a);

circle = findobj(gca,'type','line');

set(circle,'Color','red');

打开Hold, 以便于以前的图像不被删除。增加训练装置和分类线在图中。 hold on;

plotpv(P,T);

plotpc(net.IW{1},net.b{1});

hold off;

axis([-2 2 -2 2]);

最后放大感兴趣的区域。这个感知器正确的区分了我们的新点(用红色表示) 作为”zero”类(用圆圈表示) ,而不是”one”类(用+号表示) ,尽管需要比较长的训练时间,这个感知器仍然适当的进行了学习。想知道在outlier vectors的情况下如何减少训练时间,需要做实验一的优化实验"Normalized Perceptron Rule" 练习1 熟悉并理解plotpv,plotpc 函数

The code below defines and plots the inputs and targets for a perceptron:

p = [0 0 1 1; 0 1 0 1];

t = [0 0 0 1];

plotpv(p,t)

The following code creates a perceptron with inputs ranging over the values in P, assigns values to its weights and biases, and plots the resulting classification line. net = newp(minmax(p),1);

net.iw{1,1} = [-1.2 -0.5];

net.b{1} = 1;

plotpc(net.iw{1,1},net.b{1})

newp 函数解释

NEWP Create a perceptron.

Syntax

net = newp

net = newp(pr,s,tf,lf)

Description

Perceptrons are used to solve simple (i.e. linearly

separable) classification problems.

NET = NEWP creates a new network with a dialog box.

NET = NEWP(PR,S,TF,LF) takes these inputs,

PR - Rx2 matrix of min and max values for R input elements.

S - Number of neurons.

TF - Transfer function, default = 'hardlim'.

LF - Learning function, default = 'learnp'.

Returns a new perceptron.

The transfer function TF can be HARDLIM or HARDLIMS.

The learning function LF can be LEARNP or LEARNPN.

Examples

This code creates a perceptron layer with one 2-element

input (ranges [0 1] and [-2 2]) and one neuron. (Supplying

only two arguments to NEWP results in the default perceptron

learning function LEARNP being used.)

net = newp([0 1; -2 2],1);

Now we define a problem, an OR gate, with a set of four

2-element input vectors P and the corresponding four

1-element targets T.

P = [0 0 1 1; 0 1 0 1];

T = [0 1 1 1];

Here we simulate the network's output, train for a

maximum of 20 epochs, and then simulate it again.

Y = sim(net,P)

net.trainParam.epochs = 20;

net = train(net,P,T);

Y = sim(net,P)

Notes

Perceptrons can classify linearly separable classes in a

finite amount of time. If input vectors have a large variance

in their lengths, the LEARNPN can be faster than LEARNP.

Properties

Perceptrons consist of a single layer with the DOTPROD

weight function, the NETSUM net input function, and the specified

transfer function.

The layer has a weight from the input and a bias.

Weights and biases are initialized with INITZERO.

Adaption and training are done with TRAINS and TRAINC,

which both update weight and bias values with the specified

learning function. Performance is measured with MAE.

实验一的优化 Normalized Perceptron Rule

一个经过训练的2输入神经元对5个输入向量进行分类(2类) 。结合一个例子给出步骤。

实验内容:

步骤一:

两个长度为5的向量构成输入样本矩阵P ,行向量T 为指导向量。利用PLOTPV 画出这个向量的图像。例如:

P = [-0.5 -0.5 +0.3 -0.1 -40; -0.5 +0.5 -0.5 +1.0 50];

T = [1 1 0 0 1];

plotpv(P,T);

注意:在上面的式子中,4输入向量比5输入向量有更小的数量级,这个感知器必须把P 中的5个输入向量分成两类(依赖于T ).

步骤二 建立神经网络

MATLAB 提供函数newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。第三个参数指定了激励函数,Learnpn 对输入向量大小的变化比learnp(默认的) 不敏感。

net = newp([-40 1;-1 50],1,'hardlim','learnpn');

第三步 添加神经元的初始化值到分类图

初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。

hold on

linehandle = plotpc(net.IW{1},net.b{1});

第四步 训练感知器

Matlab 提供了adapt 函数来训练感知器,adapt 函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3个角度去调整,画分类线一直到误差为0为止。

注意:这将会花费感知器的许多时间来训练。这对这样一个简单问题来说时间是非常长的。追究其原因在于outlier vector,尽管需要很长的训练时间,这个感知器仍然适当的学习并且被用于划分别的输入。

E = 1;

net.adaptParam.passes = 3;

while (sse(E))

[net,Y,E] = adapt(net,P,T);

linehandle = plotpc(net.IW{1},net.b{1},linehandle);

drawnow;

end

注意:用learnp 进行训练需要3个时间单位,而用learnpn 解决同样的问题需要32个时间单位,因此,当输入向量的大小发生很大变化时,learnpn 比learnp 要用的普遍。

第5步 模拟sim

SIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量[0.7; 1.2].这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。

p = [0.7; 1.2];

a = sim(net,p);

plotpv(p,a);

circle = findobj(gca,'type','line');

set(circle,'Color','red');

打开Hold, 以便于以前的图像不被删除。增加训练装置和分类线在图中。 hold on;

plotpv(P,T);

plotpc(net.IW{1},net.b{1});

hold off;

axis([-2 2 -2 2]);

最后放大感兴趣的区域

这个感知器正确的区分了我们的新点(用红色表示) 作为”zero”类(用圆圈表示) ,而不是”one”类(用+号表示) ,这个感知器在较短的时间内适当的学习。 线性不可分向量

一个2输入神经元对模为5的输入向量不能进行分类。因为他们是线性不可分的。

P = [ -0.5 -0.5 +0.3 -0.1 -0.8;-0.5 +0.5 -0.5 +1.0 +0.0 ];

T = [1 1 0 0 0];

plotpv(P,T);

net = newp([-40 1;-1 50],1);

hold on

plotpv(P,T);

linehandle=plotpc(net.IW{1},net.b{1});

net.adaptParam.passes = 3;

linehandle=plotpc(net.IW{1},net.b{1});

for a = 1:25

[net,Y,E] = adapt(net,P,T);

linehandle = plotpc(net.IW{1},net.b{1},linehandle); drawnow;

end;

注意:误差为0的情况从来不会出现,尽管进行了训练,这个感知器没有变成一个可以接受的分类器。仅仅能进行线性可分数据是感知器的基本限制。

实验一

利用神经网络进行分类

(转载于陕西理工学院数学系中心实验室周涛副教授的工作,在此表示感谢)

一个经过训练的2输入神经元对5个输入向量进行分类(2类) 。结合一个例子给出步骤。

实验内容(说明:这里的许多参数都可以更改,希望大家能对这个程序的参数进行修改;同时也欢迎大家提问)

步骤一:

两个长度为5的向量构成输入样本矩阵P ,行向量T 为指导向量。利用PLOTPV 画出这个向量的图像。例如:

P = [-0.5 -0.5 +0.3 -0.1 -4; -0.5 +0.5 -0.5 +1.0 5];

T = [1 1 0 0 1];

plotpv(P,T);//plotpv函数利用感知器的输入向量和监督向量来画输入向量的图像 注意:在上面的式子中,4输入向量比5输入向量有更小的数量级,这个感知器必须把P 中的5个输入向量分成两类(依赖于T )。

步骤二 建立神经网络

MATLAB 提供函数newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。

net = newp([-40 1;-1 50],1);

注意:这个神经元的激励函数是hardlim 函数,也就是阶越函数。取0,1两个值。Hardlim 三函数,也就是阶越函数。取-1,1两个值。 步骤三 添加神经元的初始化值到分类图

初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。

hold on

linehandle = plotpc(net.IW{1},net.b{1});//plotpc函数用来画神经网络的分类线

步骤四 训练感知器

Matlab 提供了adapt 函数来训练感知器,adapt 函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3个角度去调整,画分类线一直到误差为0为止。

E = 1;//E为误差

net.adaptParam.passes = 3;

while (sse(E))//sse函数是用来判定误差E 的函数

[net,Y,E] = adapt(net,P,T);//利用输入样本调节神经网net

linehandle = plotpc(net.IW{1},net.b{1},linehandle);//画出调整以后的分类线

drawnow;//延迟一段时间

end

注意:这将会花费感知器的许多时间来训练。这对这样一个简单问题来说时间是非常长的。追究其原因在于outlier vector,尽管需要很长的训练时间,这个感知器仍然适当的学习并且被用于划分别的输入。

步骤五 模拟sim

SIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量[0.7; 1.2].这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。

p = [0.7; 1.2];

a = sim(net,p);//利用模拟函数sim 计算出新输入p 的神经网络的输出 plotpv(p,a);

circle = findobj(gca,'type','line');

set(circle,'Color','red');

打开Hold, 以便于以前的图像不被删除。增加训练装置和分类线在图中。 hold on;

plotpv(P,T);

plotpc(net.IW{1},net.b{1});

hold off;

axis([-2 2 -2 2]);

最后放大感兴趣的区域。这个感知器正确的区分了我们的新点(用红色表示) 作为”zero”类(用圆圈表示) ,而不是”one”类(用+号表示) ,尽管需要比较长的训练时间,这个感知器仍然适当的进行了学习。想知道在outlier vectors的情况下如何减少训练时间,需要做实验一的优化实验"Normalized Perceptron Rule" 练习1 熟悉并理解plotpv,plotpc 函数

The code below defines and plots the inputs and targets for a perceptron:

p = [0 0 1 1; 0 1 0 1];

t = [0 0 0 1];

plotpv(p,t)

The following code creates a perceptron with inputs ranging over the values in P, assigns values to its weights and biases, and plots the resulting classification line. net = newp(minmax(p),1);

net.iw{1,1} = [-1.2 -0.5];

net.b{1} = 1;

plotpc(net.iw{1,1},net.b{1})

newp 函数解释

NEWP Create a perceptron.

Syntax

net = newp

net = newp(pr,s,tf,lf)

Description

Perceptrons are used to solve simple (i.e. linearly

separable) classification problems.

NET = NEWP creates a new network with a dialog box.

NET = NEWP(PR,S,TF,LF) takes these inputs,

PR - Rx2 matrix of min and max values for R input elements.

S - Number of neurons.

TF - Transfer function, default = 'hardlim'.

LF - Learning function, default = 'learnp'.

Returns a new perceptron.

The transfer function TF can be HARDLIM or HARDLIMS.

The learning function LF can be LEARNP or LEARNPN.

Examples

This code creates a perceptron layer with one 2-element

input (ranges [0 1] and [-2 2]) and one neuron. (Supplying

only two arguments to NEWP results in the default perceptron

learning function LEARNP being used.)

net = newp([0 1; -2 2],1);

Now we define a problem, an OR gate, with a set of four

2-element input vectors P and the corresponding four

1-element targets T.

P = [0 0 1 1; 0 1 0 1];

T = [0 1 1 1];

Here we simulate the network's output, train for a

maximum of 20 epochs, and then simulate it again.

Y = sim(net,P)

net.trainParam.epochs = 20;

net = train(net,P,T);

Y = sim(net,P)

Notes

Perceptrons can classify linearly separable classes in a

finite amount of time. If input vectors have a large variance

in their lengths, the LEARNPN can be faster than LEARNP.

Properties

Perceptrons consist of a single layer with the DOTPROD

weight function, the NETSUM net input function, and the specified

transfer function.

The layer has a weight from the input and a bias.

Weights and biases are initialized with INITZERO.

Adaption and training are done with TRAINS and TRAINC,

which both update weight and bias values with the specified

learning function. Performance is measured with MAE.

实验一的优化 Normalized Perceptron Rule

一个经过训练的2输入神经元对5个输入向量进行分类(2类) 。结合一个例子给出步骤。

实验内容:

步骤一:

两个长度为5的向量构成输入样本矩阵P ,行向量T 为指导向量。利用PLOTPV 画出这个向量的图像。例如:

P = [-0.5 -0.5 +0.3 -0.1 -40; -0.5 +0.5 -0.5 +1.0 50];

T = [1 1 0 0 1];

plotpv(P,T);

注意:在上面的式子中,4输入向量比5输入向量有更小的数量级,这个感知器必须把P 中的5个输入向量分成两类(依赖于T ).

步骤二 建立神经网络

MATLAB 提供函数newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。第三个参数指定了激励函数,Learnpn 对输入向量大小的变化比learnp(默认的) 不敏感。

net = newp([-40 1;-1 50],1,'hardlim','learnpn');

第三步 添加神经元的初始化值到分类图

初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。

hold on

linehandle = plotpc(net.IW{1},net.b{1});

第四步 训练感知器

Matlab 提供了adapt 函数来训练感知器,adapt 函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3个角度去调整,画分类线一直到误差为0为止。

注意:这将会花费感知器的许多时间来训练。这对这样一个简单问题来说时间是非常长的。追究其原因在于outlier vector,尽管需要很长的训练时间,这个感知器仍然适当的学习并且被用于划分别的输入。

E = 1;

net.adaptParam.passes = 3;

while (sse(E))

[net,Y,E] = adapt(net,P,T);

linehandle = plotpc(net.IW{1},net.b{1},linehandle);

drawnow;

end

注意:用learnp 进行训练需要3个时间单位,而用learnpn 解决同样的问题需要32个时间单位,因此,当输入向量的大小发生很大变化时,learnpn 比learnp 要用的普遍。

第5步 模拟sim

SIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量[0.7; 1.2].这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。

p = [0.7; 1.2];

a = sim(net,p);

plotpv(p,a);

circle = findobj(gca,'type','line');

set(circle,'Color','red');

打开Hold, 以便于以前的图像不被删除。增加训练装置和分类线在图中。 hold on;

plotpv(P,T);

plotpc(net.IW{1},net.b{1});

hold off;

axis([-2 2 -2 2]);

最后放大感兴趣的区域

这个感知器正确的区分了我们的新点(用红色表示) 作为”zero”类(用圆圈表示) ,而不是”one”类(用+号表示) ,这个感知器在较短的时间内适当的学习。 线性不可分向量

一个2输入神经元对模为5的输入向量不能进行分类。因为他们是线性不可分的。

P = [ -0.5 -0.5 +0.3 -0.1 -0.8;-0.5 +0.5 -0.5 +1.0 +0.0 ];

T = [1 1 0 0 0];

plotpv(P,T);

net = newp([-40 1;-1 50],1);

hold on

plotpv(P,T);

linehandle=plotpc(net.IW{1},net.b{1});

net.adaptParam.passes = 3;

linehandle=plotpc(net.IW{1},net.b{1});

for a = 1:25

[net,Y,E] = adapt(net,P,T);

linehandle = plotpc(net.IW{1},net.b{1},linehandle); drawnow;

end;

注意:误差为0的情况从来不会出现,尽管进行了训练,这个感知器没有变成一个可以接受的分类器。仅仅能进行线性可分数据是感知器的基本限制。


相关文章

  • 遥感影像的解译-分类
  • (赵春霞.钱乐祥)监督分类是需要学习训练的分类方法,如最大似然分类,人工神经网络分类,即是需要事先为每类地物在遥感图像上采集样本数据,之后通过学习训练过程才来分类;非监督分类不需要人工采集地物样本点数据,多是通过聚类的方法来自动分类,主要有 ...查看


  • 网络信息组织对传统信息组织的借鉴
  • [内容提要]本文以网络信息组织继承和发展传统信息组织的方法为切入点,从四个方面论述了网络信息组织对传统信息组织的借鉴,这四个方面包括用体系分类法完善信息资源分类体系:用分面分类法改进网络信息组织:用分类主题一体化改造网络信息组织:建立一套科 ...查看


  • 学术:基于业务感知的空天地一体化信息网络流量分类技术
  • 今日荐文 今日荐文的作者为中国电子科技集团公司第三十八研究所专家顾成杰,江同洋,中国人民解放军空军航空大学潘鑫.本篇节选自论文<基于业务感知的空天地一体化信息网络流量分类技术>,发表于<中国电子科学研究院学报>第10 ...查看


  • 分类算法总结
  • 分类算法 数据挖掘中有很多领域,分类就是其中之一,什么是分类, 分类就是把一些新得数据项映射到给定类别的中的某一个类别,比如说当我们发表一篇文章的时候,就可以自动的把这篇文章划分到某一个文章类别,一般的过程是根据样本数据利用一定的分类算法得 ...查看


  • 网络信息资源分类体系的优化研究
  • 2006年7月 July,2006 第7期 No.7 网络信息资源分类体系的优化研究 刘红泉 (湖南工程学院,湘潭411104) [摘要] 从分类角度检索网络信息资源是人们检索时常用的方法,不同的网络分类体系在类目体系和资源选 择上都有自己 ...查看


  • 高光谱图像分类
  • <机器学习>课程项目报告 高光谱图像分类 -- 基于CNN 和ELM 学院信息工程学院 专业电子与通信工程 学号 2111603035 学生姓名曹发贤 同组学生 陈惠明.陈涛 硕士导师杨志景 2016年11月 一. 项目意义与价 ...查看


  • 分类法在网络信息组织中的应用
  • 摘 要:传统分类法在组织网络信息资源有着一定优势,文章具体阐述国际三大分类法在网络信息资源组织中的应用情况. 关键词:分类法 DDC UDC LCC 网络信息组织 中图分类号: G255.76 文献标识码: A 文章编号: 1003-693 ...查看


  • 宽带信号用于小目标的探测和识别
  • 宽带信号在水下目标探测和识别中的应用 1. 宽带信号 宽带信号的概念其实是从雷达信号理论中产生出散射中对宽带信号特来的.因此,可以借鉴雷达中对宽带信号特性和信号处理方法上的研究对比水声中宽带信号目标识别模式. 利用信号带宽的概念,对宽带信号 ...查看


  • 贝叶斯网络 1
  • 贝叶斯网络 一.贝叶斯网络 贝叶斯网络是用来表示变量之间概率依赖关系的图形模型,它描述的是一组随机变量 X={X1, ,Xn}所遵从的联合概率分布,并通过一组条件概率来指定一组条件独立性假设.贝 叶斯网络可以表示为B =,它由两部分组成: ...查看


  • 神经网络分类器
  • 人工智能课内实验报告(四) 班级: 姓名: 学号: 实验题目: 神经网络分类器 实验目的 通过编写神经网络分类器,掌握神经网络的分类方法: 掌握BP 算法及其具体应用. 实验内容 本次实验是对在和不在正弦函数曲线上的两类点进行分类.所使用的 ...查看


热门内容