Matlab的神经网络工具箱实用指南.docx
《Matlab的神经网络工具箱实用指南.docx》由会员分享,可在线阅读,更多相关《Matlab的神经网络工具箱实用指南.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、静态网络中的批处理方式批处理方式可以用adapt 或 train 函数来实现,虽然由于由于承受了更高效的学习算法,train 通常是最好的选择。增加方式只能用adapt 来实现,train 函数只能用于批处理方式。让我们用前面用过的静态网络的例子开头,学习速率设置为0.1。net = newlin(-1 1;-1 1,1,0,0.1);net.IW1,1 = 0 0;net.b1 = 0;用 adapt 函数实现静态网络的批处理方式,输入向量必需用同步向量矩阵的方式放置:P = 1 2 2 3; 2 1 3 1;T = 4 5 7 7;当我们调用adapt 时将触发adaptwb 函数,这是缺
2、省的线性网络调整函数。learnwh 是缺省的权重和偏置学习函数。因此,Widrow-Hoff 学习法将会被使用:net,a,e,pf = adapt(net,P,T); a = 0 0 0 0e = 4 5 7 7留意网络的输出全部为 0,由于在全部要训练的数据提交前权重没有被更,假设我们显示权重,我们就会觉察:net.IW1,1ans = 4.9000 4.1000net.b1 ans = 2.3000经过了用adapt 函数的批处理方式调整,这就和原来不一样了。现在用train 函数来实现批处理方式。由于Widrow-Hoff 规章能够在增加方式和批处理方式中应用,它可以通过adapt
3、和 train 触发。我们有好几种算法只能用于批处理方式特别是Levenberg-Marquardt 算法,所以这些算法只能用 train 触发。网络用一样的方法建立:net = newlin(-1 1;-1 1,1,0,0.1);net.IW1,1 = 0 0;net.b1 = 0;在这种状况下输入向量即能用同步向量矩阵表示也能用异步向量细胞数组表示。用train 函数,任何异步向量细胞数组都会转换成同步向量矩阵。这是由于网络是静态的, 并且由于train 总是在批处理方式中使用。由于 MATLAB 实现同步模式效率更高,所以只要可能总是承受同步模式处理。P = 1 2 2 3; 2 1 3
4、 1;T = 4 5 7 7;现在我们开头训练网络。由于我们只用了一次adapt,我们这里训练它一次。缺省的 线性网络训练函数是trainwb。learnwh 是缺省的权重和偏置学习函数。因此,我们应当和前面缺省调整函数是adaptwb 的例子得到同样的结果。net.inputWeights1,1.learnParam.lr = 0.1;net.biases1.learnParam.lr = 0.1;net.trainParam.epochs = 1;net = train(net,P,T);经过一次训练后,我们显示权重觉察:net.IW1,1ans = 4.9000 4.1000net.b1
5、 ans = 2.3000这和用adapt 训练出来的结果是一样的。在静态网络中,adapt 函数能够依据输入数据格式的不同应用于增加方式和批处理方式。假设数据用同步向量矩阵方式输入就用批 处理方式训练;假设数据用异步方式输入就用增加方式。但这对于train 函数行不通,无论输入格式如何,它总是承受批处理方式。动态网络中的增加方式训练静态网络相对要简洁一些。假设我们用train 训练网络,即使输入是异步向量细胞数组,它也是转变成同步向量矩阵而承受批处理方式。假设我们用adapt。输入格式打算着网络训练方式。假设传递的是序列,网络用增加方式,假设传递的是同步向量就采 用批处理方式。在动态网络中,
6、批处理方式只能用train 完成,特别是当仅有一个训练序列存在时。为了说明清楚,让我们重考虑那个带延迟的线性网络。我们把学习速率设为0.02当 我们承受梯度下降算法时,我们要用比增加方式更小的学习速率,应为全部的分立的梯度都要在打算权重转变步进之前求和net = newlin(-1 1,1,0 1,0.02);net.IW1,1=0 0;net.biasConnect=0; net.trainParam.epochs = 1;Pi = 1;P = 2 3 4;T = 3 5 6;我们用以前增加方式训练过的那组数据训练,但是这一次我们期望只有在全部数据 都提交后才更权重批处理方式。由于输入是一个
7、序列,网络将用异步模式模拟。但是权重将用批处理方式更。net=train(net,P,T,Pi);经过一次训练后,权重值为:net.IW1,1ans = 0.9000 0.6200这里的权重值和我们用增加方式得到的不同。在增加方式中,通过训练设置,一次训练可以更权重三次。在批处理方式中,每次训练只能更一次。第三章 反向传播网络BP 网络1. 概述前面介绍了神经网络的构造和模型,在实际应用中,我们用的最广泛的是反向传播网络BP 网络。下面就介绍一下 BP 网络的构造和应用。BP 网络是承受Widrow-Hoff 学习算法和非线性可微转移函数的多层网络。一个典型的 BP 网络承受的是梯度下降算法,
8、也就是Widrow-Hoff 算法所规定的。backpropagation 就是指的为非线性多层网络计算梯度的方法。现在有很多根本的优化算法,例如变尺度算法和牛顿算法。神经网络工具箱供给了很多这样的算法。这一章我们将争论使用这些规则和这些算法的优缺点。一个经过训练的BP 网络能够依据输入给出适宜的结果,虽然这个输入并没有被训练过。这个特性使得BP 网络很适合承受输入/目标对进展训练,而且并不需要把全部可能的输入/目标对都训练过。为了提高网络的适用性,神经网络工具箱供给了两个特性-规章 化和早期停顿。这两个特性和用途我们将在这一章的后面争论。这一章还将争论网络的 预处理和后处理技术以提高网络训练
9、效率。2. 根底网络构造神经网络的构造前一章已具体争论过,前馈型BP 网络的构造构造和它根本一样,这里就不再具体论述了,这里着重说明以下几点:1. 常用的前馈型BP 网络的转移函数有logsig,tansig,有时也会用到线性函数pu relin。当网络的最终一层承受曲线函数时,输出被限制在一个很小的范围内,假设承受线性函数则输出可为任意值。以上三个函数是BP 网络中最常用到的函数,但是假设需要的话你也可以创立其他可微的转移函数。2. 在 BP 网络中,转移函数可求导是格外重要的,tansig、logsig 和 purelin 都有对应的导函数dtansig、dlogsig 和 dpureli
10、n。为了得到更多转移函数的导函数,你可以带字符“deriv“的转移函数:tansig(”deriv”) ans = dtansig网络构建和初始化训练前馈网络的第一步是建立网络对象。函数newff 建立一个可训练的前馈网络。这需要 4 个输入参数。第一个参数是一个 Rx2 的矩阵以定义R 个输入向量的最小值和最大值。其次个参数是一个颟顸每层神经元个数的数组。第三个参数是包含每层用到的转移函数名称的细胞数组。最终一个参数是用到的训练函数的名称。举个例子,下面命令将创立一个二层网络,其网络模型如以以下图所示。它的输入是两个元素的向量,第一层有三个神经元,其次层有一个神经元。第一层 的转移函数是ta
11、n-sigmoid,输出层的转移函数是linear。输入向量的第一个元素的范围是-1 到 2,输入向量的其次个元素的范围是0 到 5,训练函数是traingd。net=newff(-1 2; 0 5,3,1,”tansig”,”purelin”,”traingd”);这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进展训练了。我们可能要屡次重初始化权重或者进展自定义的初始化。下面就是初始化的具体步骤。在训练前馈网络之前,权重和偏置必需被初始化。初始化权重和偏置的工作用命令 init 来实现。这个函数接收网络对象并初始化权重和偏置后返回网络对象。下面就是网络如何初始化的:net
12、= init(net);我们可以通过设定网络参数net.initFcn 和 net.layeri.initFcn 这一技巧来初始化一个给定的网络。net.initFcn 用来打算整个网络的初始化函数。前馈网络的缺省值为initlay,它允许每一层用单独的初始化函数。设定了net.initFcn ,那么参数net.lay eri.initFcn 也要设定用来打算每一层的初始化函数。对前馈网络来说,有两种不同的初始化方式常常被用到:initwb 和 initnw。initwb函数依据每一层自己的初始化参数(net.inputWeightsi,j.initFcn)初始化权重矩阵和偏置。前馈网络的初始
13、化权重通常设为rands,它使权重在-1 到 1 之间随机取值。这种方式常常用在转换函数是线性函数时。initnw 通常用于转换函数是曲线函数。它依据Nguy en 和 WidrowNgWi90为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦的分布在输入空间。它比起单纯的给权重和偏置随机赋值有以下优点:1削减神经元的铺张由于全部神经元的活动区域都在输入空间内。2有更快的训练速度因 为输入空间的每个区域都在活动的神经元范围中。初始化函数被newff 所调用。因此当网络创立时,它依据缺省的参数自动初始化。init 不需要单独的调用。可是我们可能要重初始化权重和偏置或者进展自定义的初始化
14、。例如,我们用newff 创立的网络,它缺省用initnw 来初始化第一层。假设我们想要用r ands 重初始化第一层的权重和偏置,我们用以下命令:net.layers1.initFcn = ”initwb”; net.inputWeights1,1.initFcn = ”rands”; net.biases1,1.initFcn = ”rands”; net.biases2,1.initFcn = ”rands”;net = init(net);网络模拟(SIM)函数 sim 模拟一个网络。sim 接收网络输入p,网络对象net,返回网络输出a,这里是 simuff 用来模拟上面建立的带一个
15、输入向量的网络。p = 1;2;a = sim(net,p) a =-0.1011(用这段代码得到的输出是不一样的,这是由于网络初始化是随机的。)下面调用sim 来计算一个同步输入 3 向量网络的输出: p = 1 3 2;2 4 1;a=sim(net,p) a =-0.1011 -0.2308 0.4955网络训练一旦网络加权和偏差被初始化,网络就可以开头训练了。我们能够训练网络来做函数近似非线性 后退,模式结合,或者模式分类。训练处理需要一套适当的网络操作的例子-网络输入p 和目标输出t。在训练期间网络的加权和偏差不断的把网络性能函数net.performFcn 削减到最小。前馈网络的缺
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 神经网络 工具箱 实用 指南
限制150内