当前位置:文档之家› BP神经网络用于分类

BP神经网络用于分类

BP神经网络用于分类
BP神经网络用于分类

clear,clc

% 关闭图形窗口

close all

%% 读入数据

% 打开文件

fid = fopen('german.data', 'r');

% 按格式读取每一行

% 每行包括21项,包括字符串和数字

C = textscan(fid, '%s %d %s %s %d %s %s %d %s %s %d %s %d %s %s %d %s %d %s %s %d\n'); % 关闭文件

fclose(fid);

% 将字符串转换为整数

N = 20;

% 存放整数编码后的数值矩阵

C1=zeros(N+1,1000);

for i=1:N+1

% 类别属性

if iscell(C{i})

for j=1:1000

% eg: 'A12' -> 2

if i<10

d = textscan(C{i}{j}, '%c%c%d'); % eg: 'A103' -> 3

else

d = textscan(C{i}{j}, '%c%c%c%d'); end

C1(i,j) = d{end};

end

% 数值属性

else

C1(i,:) = C{i};

end

end

%% 划分训练样本与测试样本

% 输入向量

x = C1(1:N, :);

% 目标输出

y = C1(N+1, :);

% 正例

posx = x(:,y==1);

% 负例

negx = x(:,y==2);

% 训练样本

trainx = [ posx(:,1:350), negx(:,1:150)]; trainy = [ones(1,350), ones(1,150)*2];

% 测试样本

testx = [ posx(:,351:700), negx(:,151:300)]; testy = trainy;

%% 样本归一化

% 训练样本归一化

[trainx, s1] = mapminmax(trainx);

% 测试样本归一化

testx = mapminmax('apply', testx, s1);

%% 创建网络,训练

% 创建BP网络

net = newff(trainx, trainy);

% 设置最大训练次数

net.trainParam.epochs = 1500;

% 目标误差

net.trainParam.goal = 1e-13;

% 显示级别

net.trainParam.show = 1;

% 训练

net = train(net,trainx, trainy);

%% 测试

y0 = net(testx);

% y0为浮点数输出。将y0量化为1或2。

y00 = y0;

% 以1.5为临界点,小于1.5为1,大于1.5为2

y00(y00<1.5)=1;

y00(y00>1.5)=2;

% 显示正确率

fprintf('正确率: \n');

disp(sum(y00==testy)/length(y00));

(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)

BP神经网络的数据分类MATLAB源代码.doc

%%%清除空间 clc clear all ; close all ; %%%训练数据预测数据提取以及归一化 %%%下载四类数据 load data1 c1 load data2 c2 load data3 c3 load data4 c4 %%%%四个特征信号矩阵合成一个矩阵data ( 1:500 , : ) = data1 ( 1:500 , :) ; data ( 501:1000 , : ) = data2 ( 1:500 , : ) ; data ( 1001:1500 , : ) = data3 ( 1:500 , : ) ; data ( 1501:2000 , : ) = data4 ( 1:500 , : ) ; %%%%%%从1到2000间的随机排序 k = rand ( 1 , 2000 ) ; [ m , n ] = sort ( k ) ; %%m为数值,n为标号

%%%%%%%%%%%输入输出数据 input = data ( : , 2:25 ) ; output1 = data ( : , 1) ; %%%%%%把输出从1维变到4维 for i = 1 : 1 :2000 switch output1( i ) case 1 output( i , :) = [ 1 0 0 0 ] ; case 2 output( i , :) = [ 0 1 0 0 ] ; case 3 output( i , :) = [ 0 0 1 0 ] ; case 4 output( i , :) = [ 0 0 0 1 ] ; end end %%%%随机抽取1500个样本作为训练样本,500个样本作为预测样本 input_train = input ( n( 1:1500 , : ) )’ ; output_train = output ( n( 1:1500 , : ) )’ ; input_test = input ( n( 1501:2000 , : ) )’ ;

MATLAB程序代码--BP神经网络的设计实例

MATLAB程序代码--BP神经网络的设计实例 例1 采用动量梯度下降算法训练 BP 网络。 训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为 t = [-1 -1 1 1] 解:本例的 MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 pause % 敲任意键开始 clc % 定义训练样本 % P 为输入矢量 P=[-1, -2, 3, 1; -1, 1, 5, -3]; % T 为目标矢量 T=[-1, -1, 1, 1]; pause; clc % 创建一个新的前向神经网络 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net.IW{1,1} inputbias=net.b{1} % 当前网络层权值和阈值 layerWeights=net.LW{2,1} layerbias=net.b{2} pause clc % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9;

net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; pause clc % 调用 TRAINGDM 算法训练 BP 网络 [net,tr]=train(net,P,T); pause clc % 对 BP 网络进行仿真 A = sim(net,P) % 计算仿真误差 E = T - A MSE=mse(E) pause clc echo off 例2 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下MATLAB 语句生成:输入矢量:P = [-1:0.05:1]; 目标矢量:randn(’seed’,78341223); T = sin(2*pi*P)+0.1*randn(size(P)); 解:本例的 MATLAB 程序如下: close all clear echo on

1BP神经网络实现(JAVA代码)

BP神经网络实现(Java代码) 神经网络的原理虽然理解起来不难,但是要是想实现它,还是需要做一些工作的,并且有很多细节性的东西需要注意。通过参阅各种相关资料,以及参考网络上已有的资源,自己写了一个含有一个隐含层,且只能有一个输出单元的简单的BP网络,经过测试,达到了预期的效果。 需要说明的是,神经网络的每个输入都在[0,1]中,输出也在[0,1]中,在使用神经网络解决实际问题的时候,还需要对实际问题的输入输出进行归一化处理。另外,尽量不要使得神经网络的输入或输出接近于0或1,这样会影响拟合效果。 我用正弦函数进行了一次测试,效果如图所示: 以下是相关的代码: 1.神经网络代码 [java]view plaincopy 1.package pkg1; 2. 3.import java.util.Scanner; 4. 5./* 6.* 7.*/ 8.public class TestNeuro{

9. 10.private int INPUT_DIM=1; 11.private int HIDDEN_DIM=20; 12.private double LEARNING_RATE=0.05; 13.double[][]input_hidden_weights=new double[INPUT_DIM][HIDDEN_DIM]; 14.double[]hidden_output_weights=new double[HIDDEN_DIM]; 15.double[]hidden_thresholds=new double[HIDDEN_DIM]; 16.double output_threshold; 17. 18.public static void main(String[]args){ 19.Scanner in=new Scanner(System.in); 20.TestNeuro neuro=new TestNeuro(1,5); 21.neuro.initialize(); 22.for(int i=0;i<10000;i++){ 23.double[]input=new double[1]; 24.input[0]=Math.random(); 25.double expectedOutput=input[0]*input[0]; 26.//System.out.println("input:"+input[0]+"\t\texpectedOutput: "+expectedOutput); 27.//System.out.println("predict before training:"+neuro.predict (input)); 28.neuro.trainOnce(input,expectedOutput); 29.//System.out.println("predict after training:"+neuro.predict( input)); 30.//in.next(); 31.} 32.while(true){ 33.//neuro.printLinks(); 34.double[]input=new double[1]; 35.input[0]=in.nextDouble(); 36.double expectedOutput=in.nextDouble(); 37.System.out.println("predict before training:"+neuro.predict(i nput)); 38.neuro.trainOnce(input,expectedOutput); 39.System.out.println("predict after training:"+neuro.predict(in put)); 40. 41.} 42.} 43. 44.public TestNeuro(int input_dimension,int hidden_dimension){ 45.this.INPUT_DIM=input_dimension; 46.this.HIDDEN_DIM=hidden_dimension; 47.this.initialize();

几种神经网络模型及其应用

几种神经网络模型及其应用 摘要:本文介绍了径向基网络,支撑矢量机,小波神经网络,反馈神经网络这几种神经网络结构的基本概念与特点,并对它们在科研方面的具体应用做了一些介绍。 关键词:神经网络径向基网络支撑矢量机小波神经网络反馈神经网络Several neural network models and their application Abstract: This paper introduced the RBF networks, support vector machines, wavelet neural networks, feedback neural networks with their concepts and features, as well as their applications in scientific research field. Key words: neural networks RBF networks support vector machines wavelet neural networks feedback neural networks 2 引言 随着对神经网络理论的不断深入研究,其应用目前已经渗透到各个领域。并在智能控制,模式识别,计算机视觉,自适应滤波和信号处理,非线性优化,语音识别,传感技术与机器人,生物医学工程等方面取得了令人吃惊的成绩。本文介绍几种典型的神经网络,径向基神经网络,支撑矢量机,小波神经网络和反馈神经网络的概念及它们在科研中的一些具体应用。 1. 径向基网络 1.1 径向基网络的概念 径向基的理论最早由Hardy,Harder和Desmarais 等人提出。径向基函数(Radial Basis Function,RBF)神经网络,它的输出与连接权之间呈线性关系,因此可采用保证全局收敛的线性优化算法。径向基神经网络(RBFNN)是 3 层单元的神经网络,它是一种静态的神经网络,与函数逼近理论相吻合并且具有唯一的最佳逼近点。由于其结构简单且神经元的敏感区较小,因此可以广泛地应用于非线性函数的局部逼近中。主要影响其网络性能的参数有3 个:输出层权值向量,隐层神经元的中心以及隐层神经元的宽度(方差)。一般径向基网络的学习总是从网络的权值入手,然后逐步调整网络的其它参数,由于权值与神经元中心及宽度有着直接关系,一旦权值确定,其它两个参数的调整就相对困难。 其一般结构如下: 如图 1 所示,该网络由三层构成,各层含义如下: 第一层:输入层:输入层神经元只起连接作用。 第二层:隐含层:隐含层神经元的变换函数为高斯核. 第三层:输出层:它对输入模式的作用做出响应. 图 1. 径向基神经网络拓扑结构 其数学模型通常如下: 设网络的输入为x = ( x1 , x2 , ?, xH ) T,输入层神经元至隐含层第j 个神经元的中心矢 为vj = ( v1 j , v2 j , ?, vIj ) T (1 ≤j ≤H),隐含层第j 个神经元对应输入x的状态为:zj = φ= ‖x - vj ‖= exp Σx1 - vij ) 2 / (2σ2j ) ,其中σ(1≤j ≤H)为隐含层第j个神

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转) 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]'; YY=[1:4]; XX=premnmx(XX); YY=premnmx(YY); YY %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数

BP神经网络matlab源程序代码

close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 % 定义训练样本 % P为输入矢量 P=[0.7317 0.6790 0.5710 0.5673 0.5948;0.6790 0.5710 0.5673 0.5948 0.6292; ... 0.5710 0.5673 0.5948 0.6292 0.6488;0.5673 0.5948 0.6292 0.6488 0.6130; ... 0.5948 0.6292 0.6488 0.6130 0.5654; 0.6292 0.6488 0.6130 0.5654 0.5567; ... 0.6488 0.6130 0.5654 0.5567 0.5673;0.6130 0.5654 0.5567 0.5673 0.5976; ... 0.5654 0.5567 0.5673 0.5976 0.6269;0.5567 0.5673 0.5976 0.6269 0.6274; ... 0.5673 0.5976 0.6269 0.6274 0.6301;0.5976 0.6269 0.6274 0.6301 0.5803; ... 0.6269 0.6274 0.6301 0.5803 0.6668;0.6274 0.6301 0.5803 0.6668 0.6896; ... 0.6301 0.5803 0.6668 0.6896 0.7497]; % T为目标矢量 T=[0.6292 0.6488 0.6130 0.5654 0.5567 0.5673 0.5976 ... 0.6269 0.6274 0.6301 0.5803 0.6668 0.6896 0.7497 0.8094]; % Ptest为测试输入矢量 Ptest=[0.5803 0.6668 0.6896 0.7497 0.8094;0.6668 0.6896 0.7497 0.8094 0.8722; ... 0.6896 0.7497 0.8094 0.8722 0.9096]; % Ttest为测试目标矢量 Ttest=[0.8722 0.9096 1.0000]; % 创建一个新的前向神经网络 net=newff(minmax(P'),[12,1],{'logsig','purelin'},'traingdm'); % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 5000; net.trainParam.goal = 0.001; % 调用TRAINGDM算法训练 BP 网络 [net,tr]=train(net,P',T); % 对BP网络进行仿真 A=sim(net,P'); figure; plot((1993:2007),T,'-*',(1993:2007),A,'-o'); title('网络的实际输出和仿真输出结果,*为真实值,o为预测值'); xlabel('年份'); ylabel('客运量'); % 对BP网络进行测试 A1=sim(net,Ptest');

BP神经网络MATLAB代码

BP神经网络matlab代码 p=[284528334488;283344884554;448845542928;455429283497;29283497 2261;... 349722616921;226169211391;692113913580;139135804451;35804451 2636;... 445126363471;263634713854;347138543556;385435562659;35562659 4335;... 265943352882;433528824084;433528821999;288219992889;19992889 2175;... 288921752510;217525103409;251034093729;340937293489;37293489 3172;... 348931724568;317245684015;]'; %====期望输出======= t=[4554292834972261692113913580445126363471385435562659... 4335288240841999288921752510340937293489317245684015... 3666]; ptest=[284528334488;283344884554;448845542928;455429283497;29283497 2261;... 349722616921;226169211391;692113913580;139135804451;35804451 2636;... 445126363471;263634713854;347138543556;385435562659;35562659 4335;... 265943352882;433528824084;433528821999;288219992889;19992889 2175;... 288921752510;217525103409;251034093729;340937293489;37293489 3172;... 348931724568;317245684015;456840153666]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%将数据归一化 NodeNum1=20;%隐层第一层节点数 NodeNum2=40;%隐层第二层节点数 TypeNum=1;%输出维数 TF1='tansig'; TF2='tansig'; TF3='tansig'; net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1TF2 TF3},'traingdx');

神经网络在遥感图像分类中的应用

神经网络在遥感图像分类中的应用 祁增营,王京 辽宁工程技术大学测绘与地理科学学院,辽宁阜新(123000) E-mail: qizengying@https://www.doczj.com/doc/8016510073.html, 摘要:结合人工神经网络的特性,介绍神经网络在遥感图像处理领域中的应用现状,重点分析了遥感图像分类模型、并对模型进行了对比分析,利用EARDAS软件进行遥感图 像分类,通过实验分析神经网络在遥感图像分类的优势。初步提出结合遗传算法和模 糊理论的神经网络模型,对神经网络在遥感图像分类领域的发展趋势进行了探讨。 关键词:人工神经网络,遥感影像分类,分类模型 1. 引言 神经是大脑的细胞,其主要功能是收集,处理和分发电信号。人类大脑采用连通的神经元来处理接收到的信号,神经网络模拟了这一过程。它不是通过分步算法或复杂的逻辑程序来求解的,而是通过调整网络中连接神经元的权重,采用非算法,非结构的形式来实现的。神经网络已用于对各种遥感数据进行分类,而且其分类结果优于传统的统计方法。这些成功可以归因于神经网络的两大有点:1)不要求数据正态分布;2)自适应模拟具有特定拓扑结构的复杂非现性模式的功能。人工神经网络[1] (ANN,简称神经网络)作为一种由大量简单神经元广泛相互联接而成的非线性映射或自适应动力系统,恰好能有效解决遥感图像处理中常见的困难,因此它很快在遥感图像分类领域得到了广泛地应用。 2. 神经网络的组成结构和特点 2.1 神经网络的组织结构 典型后向传播神经网络的拓扑结构见图。人工神经网络在3中类型的层中包含有神经元: 图1 神经网络组织结构 该网络包括输入层,隐含层和输出层。输入层可以包含单个训练像元的信息[2],其中包括不同波段的百分比光谱反射率和一些辅助信息,如高程,坡度等。每层由互相连接的接点所组成。这种可连续性使得网络在训练时,信息可以流向多个方向(即,可以发生向后传播)。这种结点的力(或权重)最终为神经网络所学习并保存。这些权重用于检验(分类)。训练

BP神经网络matlab源程序代码

BP神经网络matlab源程序代码) %******************************% 学习程序 %******************************% %======原始数据输入======== p=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;... 3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;... 4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;... 2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;... 2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;... 3489 3172 4568;3172 4568 4015;]'; %===========期望输出======= t=[4554 2928 3497 2261 6921 1391 3580 4451 2636 3471 3854 3556 2659 ... 4335 2882 4084 1999 2889 2175 2510 3409 3729 3489 3172 4568 4015 ... 3666]; ptest=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;... 3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;... 4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;... 2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;... 2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;... 3489 3172 4568;3172 4568 4015;4568 4015 3666]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %将数据归一化 NodeNum1 =20; % 隐层第一层节点数 NodeNum2=40; % 隐层第二层节点数 TypeNum = 1; % 输出维数 TF1 = 'tansig';

BP神经网络实例含源码

BP神经网络实例含源码 BP神经网络算法实现 一:关于BP网络 BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。 当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。 BP网络主要应用于以下方面:函数逼近、模式识别和分类、数据压缩。BP神经网络有较强的泛化性能,使网络平滑的逼近函数,能合理的响应被训练以外的输入。 同时,BP网络又有自己的限制与不足,主要表现在:需要较长的训练时间、网络训练的结果可能使得权值逼近局部最优、训练数据范围外的数据泛化能力较差。 为了避免训练陷入局部最优解,本程序采用改进的BP网络训练,既加入动量因子,使得网络在最优解附近有一定的震荡,跳出局部最优的范围。 BP网络训练中学习速率与动量因子的选择很重要,在后面的内容中将进行详细的讨论。

二:训练的函数 程序中训练的函数为一个三输入一输出的非线性函数,如下所示: x3xR,yxxe,,,,2sin(),,,12 网络结构为:3—5—1 三:程序及相关界面(VB) 1 主界面 1 代码: Private Sub Command1_Click() form2.Visible = False Form3.Visible = True End Sub Private Sub Command2_Click() form2.Visible = False Form1.Visible = True End Sub Private Sub Command3_Click() form2.Visible = False Form4.Visible = True End Sub Private Sub Command4_Click() form2.Visible = False

神经网络的类型

概述 本文主要介绍了当前常用的神经网络,这些神经网络主要有哪些用途,以及各种神经网络的优点和局限性。 1 BP神经网络 BP (Back Propagation)神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。 初始权值阈值的确定:所以权值及阈值的初始值应选为均匀分布的小数经验 值,约为(-2.4/F~2.4/F)之间,其中F 为所连单元的输入层节点数 1.1 主要功能 (1)函数逼近:用输入向量和相应的输出向量训练一个网络以逼近一个函数。 (2)模式识别:用一个待定的输出向量将它与输入向量联系起来。 (3)分类:把输入向量所定义的合适方式进行分类。 (4)数据压缩:减少输出向量维数以便传输或存储。 1.2 优点及其局限性 BP神经网络最主要的优点是具有极强的非线性映射能力。理论上,对于一个三层和三层以上的BP网络,只要隐层神经元数目足够多,该网络就能以任意精度逼近一个非线性函数。其次,BP神经网络具有对外界刺激和输入信息进行联想记忆的能力。这是因为它采用了分布并行的信息处理方式,对信息的提取必须采用联想的方式,才能将相关神经元全部调动起来。BP 神经网络通过预先存储信息和学习机制进行自适应训练,可以从不完整的信息和噪声干扰中恢复原始的完整信息。这种能力使其在图像复原、语言处理、模式识别等方面具有重要应用。再次,BP 神经网络对外界输入样本有很强的识别与分类能力。由于它具有强大的非线性处理能力,因此可以较好地进行非线性分类, 解决了神经网络发展史上的非线性分类难题。另外,BP 神经网络具有优化计算能力。BP神经网络本质上是一个非线性优化问题, 它可以在已知的约束条件下,寻找一组参数组合,使该组合确定的目标函数达到最小。不过,其优化计算存在局部极小问题,必须通过改进完善。 由于BP网络训练中稳定性要求学习效率很小,所以梯度下降法使得训练很慢。动量法因为学习率的提高通常比单纯的梯度下降法要快一些,但在实际应用中还是速度不够,这两种方法通常只应用于递增训练。 多层神经网络可以应用于线性系统和非线性系统中,对于任意函数模拟逼近。当然,感知器和线性神经网络能够解决这类网络问题。但是,虽然理论上是可行的,但实际上BP网络并

BP神经网络用于分类

clear,clc % 关闭图形窗口 close all %% 读入数据 % 打开文件 fid = fopen('german.data', 'r'); % 按格式读取每一行 % 每行包括21项,包括字符串和数字 C = textscan(fid, '%s %d %s %s %d %s %s %d %s %s %d %s %d %s %s %d %s %d %s %s %d\n'); % 关闭文件 fclose(fid); % 将字符串转换为整数 N = 20; % 存放整数编码后的数值矩阵 C1=zeros(N+1,1000); for i=1:N+1 % 类别属性 if iscell(C{i}) for j=1:1000 % eg: 'A12' -> 2 if i<10

d = textscan(C{i}{j}, '%c%c%d'); % eg: 'A103' -> 3 else d = textscan(C{i}{j}, '%c%c%c%d'); end C1(i,j) = d{end}; end % 数值属性 else C1(i,:) = C{i}; end end %% 划分训练样本与测试样本 % 输入向量 x = C1(1:N, :); % 目标输出 y = C1(N+1, :); % 正例 posx = x(:,y==1); % 负例 negx = x(:,y==2); % 训练样本

trainx = [ posx(:,1:350), negx(:,1:150)]; trainy = [ones(1,350), ones(1,150)*2]; % 测试样本 testx = [ posx(:,351:700), negx(:,151:300)]; testy = trainy; %% 样本归一化 % 训练样本归一化 [trainx, s1] = mapminmax(trainx); % 测试样本归一化 testx = mapminmax('apply', testx, s1); %% 创建网络,训练 % 创建BP网络 net = newff(trainx, trainy); % 设置最大训练次数 net.trainParam.epochs = 1500; % 目标误差 net.trainParam.goal = 1e-13; % 显示级别 net.trainParam.show = 1; % 训练 net = train(net,trainx, trainy); %% 测试

人工神经网络概述及其在分类中的应用举例

人工神经网络概述及其在分类中的应用举例 人工神经网络(ARTIFICIAL NEURAL NETWORK,简称ANN)是目前国际上一门发展迅速的前沿交叉学科。为了模拟大脑的基本特性,在现代神经科学研究的基础上,人们提出来人工神经网络的模型。人工神经网络是在对人脑组织结构和运行机智的认识理解基础之上模拟其结构和智能行为的一种工程系统。 神经网络在2个方面与人脑相似: (1) 人工神经网络获取的知识是从外界环境中学习得来的。 (2) 互连神经元的连接强度,即突触权值,用于存储获取的信息。他既是高度非线性动力学系统,又是自适应组织系统,可用来描述认知、决策及控制的智能行为。神经网络理论是巨量信息并行处理和大规模并行计算的基础。 一人工神经网络的基本特征 1、并行分布处理:人工神经网络具有高度的并行结构和并行处理能力。这特别适于实时控制和动态控制。各组成部分同时参与运算,单个神经元的运算速度不高,但总体的处理速度极快。 2、非线性映射:人工神经网络具有固有的非线性特性,这源于其近似任意非线性映射(变换)能力。只有当神经元对所有输入信号的综合处理结果超过某一门限值后才输出一个信号。因此人工神经网络是一

种具有高度非线性的超大规模连续时间动力学系统。 3、信息处理和信息存储合的集成:在神经网络中,知识与信息都等势分布贮存于网络内的各神经元,他分散地表示和存储于整个网络内的各神经元及其连线上,表现为神经元之间分布式的物理联系。作为神经元间连接键的突触,既是信号转换站,又是信息存储器。每个神经元及其连线只表示一部分信息,而不是一个完整具体概念。信息处理的结果反映在突触连接强度的变化上,神经网络只要求部分条件,甚至有节点断裂也不影响信息的完整性,具有鲁棒性和容错性。 4、具有联想存储功能:人的大脑是具有联想功能的。比如有人和你提起内蒙古,你就会联想起蓝天、白云和大草原。用人工神经网络的反馈网络就可以实现这种联想。神经网络能接受和处理模拟的、混沌的、模糊的和随机的信息。在处理自然语言理解、图像模式识别、景物理解、不完整信息的处理、智能机器人控制等方面具有优势。 5、具有自组织自学习能力:人工神经网络可以根据外界环境输入信息,改变突触连接强度,重新安排神经元的相互关系,从而达到自适应于环境变化的目的。 6、软件硬件的实现:人工神经网络不仅能够通过硬件而且可借助软件实现并行处理。近年来,一些超大规模集成电路的硬件实现已经问世,而且可从市场上购到,这使得神经网络具有快速和大规模处理能力的实现网络。许多软件都有提供了人工神经网络的工具箱(或软件包)如Matlab、Scilab、R、SAS等。 二人工神经网络的基本数学模型

(完整版)BP神经网络matlab实例(简单而经典)

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) PR:由R维的输入样本最小最大值构成的2 R?维矩阵。 S S SNl:各层的神经元个数。 [ 1 2...] { 1 2...} TF TF TFNl:各层的神经元传递函数。 BTF:训练用函数的名称。 (2)网络训练 [,,,,,] (,,,,,,) = net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp'

matlab 通用神经网络代码

matlab 通用神经网络代码 学习了一段时间的神经网络,总结了一些经验,在这愿意和大家分享一下, 希望对大家有帮助,也希望大家可以把其他神经网络的通用代码在这一起分享 感应器神经网络、线性网络、BP神经网络、径向基函数网络 %通用感应器神经网络。 P=[ -40; 1 50];%输入向量 T=[1 1 0 0 1];%期望输出 plotpv(P,T);%描绘输入点图像 net=newp([-40 1;-1 50],1);%生成网络,其中参数分别为输入向量的范围和神经元感应器数量hold on linehandle=plotpc{1},{1}); a=1:25%训练次数 [net,Y,E]=adapt(net,P,T); linehandle=plotpc{1},{1},linehandle); drawnow; end %通用newlin程序 %通用线性网络进行预测 time=0::5; T=sin(time*4*pi); Q=length(T);

P=zeros(5,Q);%P中存储信号T的前5(可变,根据需要而定)次值,作为网络输入。P(1,2:Q)=T(1,1:(Q-1)); P(2,3:Q)=T(1,1:(Q-2)); P(3,4:Q)=T(1,1:(Q-3)); P(4,5:Q)=T(1,1:(Q-4)); P(5,6:Q)=T(1,1:(Q-5)); plot(time,T)%绘制信号T曲线 xlabel('时间'); ylabel('目标信号'); title('待预测信号'); net=newlind(P,T);%根据输入和期望输出直接生成线性网络 a=sim(net,P);%网络测试 figure(2) plot(time,a,time,T,'+') xlabel('时间'); ylabel('输出-目标+'); title('输出信号和目标信号'); e=T-a; figure(3) plot(time,e) hold on plot([min(time) max(time)],[0 0],'r:')%可用plot(x,zeros(size(x)),'r:')代替 hold off xlabel('时间'); ylabel('误差'); title('误差信号');

读书笔记-神经网络分类器的应用

神经网络分类器的应用 ——关于感知器的认识 人工神经网络既是一种基本的人工智能研究途径,也是一种非常重要的机器学习方法。人工神经网络是指模拟人脑神经系统的结构和功能,运用大量的处理部件,由人工方式建立起来的网络系统。人脑是在人工神经网络的原型,人工神经网络是对人脑神经系统的模拟。 人工神经网络是借鉴于生物神经网络而发展起来的新型智能信息处理系统,由于其结构上“仿造”了人脑的生物神经系统,因而其功能上也具有了某种智能特点。由于神经网络具有分布储存信息和并行计算的性能,因此它具有对外界刺激信息和输入模式进行联想记忆的能力。这种能力是通过神经元之间的协同结构以及信息处理的集体行为而实现的。设计合理的神经网络通过对系统输入输出样本对进行自动学习,能够以任意精度逼近任意复杂的非线性映射,可以作为多维非线性函数的通用数学模型。神经网络对外界输入样本具有很强的识别和分类能力,可以很好的解决对非线性曲面的逼近,因此比传统的分类器具有更好的分类与识别能力。 生物神经系统是一个有高度组织和相互作用的数量巨大的细胞组织群体。据估计,人脑神经系统的神经细胞约为1011-1013个。它们按不同的结合方式构成了复杂的神经网络。通过神经元及其联接的可塑性,使得大脑具有学习、记忆和认知等各种智能。神经细胞是构成神经系统的基本单元,称之为生物神经元,或者简称为神经元。神经元主要由三个部分组成:细胞体、轴突、树突(如下图所示)。 感知器模型由美国学者罗森布莱特(F.Rosenblatt )于1957年提出,是一种早期的神经网络模型,也是最简单的一种神经网络模型。感知器模型中第一次引入了学习的概念。 感知器模型可以分为简单感知器和多层感知器两种。 简单感知器模型实际上仍然是MP 模型的结构。但是,它是通过采用监督学习来逐步增强模式划分的能力,达到所谓学习的目的。感知器处理单元对n 个输入进行加权和操作以后,通过非线性函数输出,即: 其中,w i 为第i 个输入到处理单元的连接权值,θ为阈值, f 取阶跃函数。 感知器在形式上与MP 模型差不多,它们之间的区别在于神经元间连接权的变化。感知器的连接权定义为可变的,这样感知器就被赋予了学习的特性。利用简单感知器可以实现逻辑代数中的一些运算。 1() n i i i i y f w x θ==-∑

神经网络分类

实验一 利用神经网络进行分类 (转载于陕西理工学院数学系中心实验室周涛副教授的工作,在此表示感谢) 一个经过训练的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);//画出调整以后的分类线

相关主题
文本预览
相关文档 最新文档