求助:如何运用MATLAB编写一个BP人工神经网络络程序,要求是二维输入,一维输出(输出值只能是0或者1),多谢!

浙江交通职业技 术学院学报 ,第 8 卷第 4 , 07 1 月 期 20 年 2  
Ju ao Ze agI tu  f o m n aos or l f hjn n it o Cm ui tn  n  i st e ci
Vo .  o 4,De . O 7 18N . c2O 
B P神 经 网络 的 MA L B编 程 实现及 讨 论  TA
余 晓 红 
( 杭州职业技术学院 信息电子工程 系,浙江 杭州 30 1) 10 8 
要 :B P神经 网络具有很 强的 非线性 函数逼 近 能力 。通过 M t b编程 实现 了 B   aa l P
网络对一个二元 函数的逼近,针对 B P网络 学习速度慢的缺点 ,采用含动量项的学   习算法提 高了收敛速度。通过 M tb aa 仿真方法,研究了学习率和动量因子对算法学 l  
习速 度 的影响 。  
关键词 : 神经网络;B P网络 ;M tb aa ;学习算法 l  
中图分类号 :T 39 1 P 1 .2 P 8 . ;T 3 15  文献 标识码 :A  
文章 编号 :17 —24 (o7 4 05 4  6 1 3X 2O)0 —04 —0
人工神经网络 ( N )是由许多神经元按照一  AN 定规则互联而成的自适应系统,它模拟生物神经系  统的结构和功能,具有信息的分布存储、并行处理  以及 自 学能力等优点。从神经网络的基本模式看 ,   主要有前馈型、反馈型、自组织型及随机型神经网  络[l 1  。 B P网络是一种多层前馈神经网络 ,因采用误  差反向传播的学 习算法而得名。B P网络是 目前最 
1 B   P网络原 理 
B 神经网络 由多个网络层构成 ,通常包括一  P 个输入层、若干个 中间层和一个输 出层。B P网络  的特点是 :各层神经元仅与相邻层神经元之 间有连  接 ;各层 内神经元之间没有任何连接;各层神经元  之间也没有 反馈连接。B P网络具有很强 的非线性  映射能力,根据 K l gr 定理 ,一个 3 B 神  on o v r o o 层 P 经网络能够实现对任意非线性函数进行逼近 。一个  典型的 3 B 神经网络模型如图 1 层 P 所示。  
y  1 .   ?   y  
成熟、应用最广泛 的一种神经网络 ,在信息处理 、   模式识别、智能控制等诸多领域得到越来越广泛的  
应用 。  
B 网络存在收敛速度慢 、训练时间长等缺点 , P  
在实际应用中,网络结构的选择和学习算法的改进  对B P网络 性能 有很 大 的影 响【 3。通 过 M tb编  2J - aa l
程实现了 B 神经网络对一个二元函数的逼近 ,通  P
r问 层 } ]  
过仿真探讨 B P神经网络的结构及学习算法 中不 同  
参数对学习速度的影响,得出一些有益的结论。  
图 1 典型的三层 B   P神经 网络结构 
收稿 日期:20 —0 — 2 0 7 7 2 
作者简介:余晓红 (99 ,女 ,浙江永康人 ,讲师 ,E—m i 16 一) a- l  
l zt. uc  @hv e .n - d c
浙江交通 职业技术学院学报 
设B P网络的输入层 、中间层和输出层分别有  M、N 和 N J K个神经元。中间层第 j 个神经元 的输 
软件 , 集数学计算 、科学计算 、工程绘图和建模仿 
真于一体 ,应用十分广泛【 。虽然 在 M tb中有  4 】 aa l
神经网络工具箱 ,但通过编程实现 B P神经网络对  近为例 ,通过 M fb aa 编程实现 了 B l P网络,并讨论 
算法参数对学习速度的影响。  
ni e=∑w f 1 2 …, J……? 1 于深刻理解其实质很有帮助。以一个二元函数的逼  t o; ,, N o  = (  )
式中,t 为输入层 中第 i t ,   个神经元到中间层第  . 『 个神经元的权值;o 为输入层 中第 i f 个神经元的 
设要求逼近的函数为 Y (j ; 2 =   + )/,其中  
l 2 [ 1 ] 、X∈ 一 ,1 。   网络采用 2 5 结构, — —1  
输出层第 k 个神经元的输入为 :  
即输入层 2 个节点,隐层 5 个节点 , 出层 1 输 个节 
n t = e 
∑uo; = , ,   b/ k 1 2 …,  ̄
…?(  ?2 )
点。输 出层 的 和 中间层 采用 标 准 S m i io g d函数 f j   (e , n0  
具体 步骤如下 。  
式 中,t 为 中间层中第. t ,   『 个神经元到输出层第 
k 个神经元 的权值;o为 中间层中第 k i 个神经元 的  输 出。  
输入层、中间层和输出层的输出分别为 :  
O=nt X …… ……… ………… ……… () f ef i   3 
。实 现流程 如 图 2所示 , 。  
①初始化。权值和阈值取随机数;确定学习率 
和动量因子;设定学习误差准则。   ②设置样本。将 I 2 、 在给定范围内均匀 l    O 等分 , 产生 11 2 个训练样本 。  
Y 。 ( O 南 k   n, )   e k t  
…。 ) ( 5  
③前 向传播 :根据式 ( ) 一 ()计算各层输  1 5
式中, , k   和O 分别为中间层第. 『 个神经元和输 
出层第 k 个神经元的阈值。   B 网络 的训练采用基 于梯度法 的 6 习律 , P 学  
其 目标是使网络输 出与训练样本的均方误差最小 。   l J 本 为 P个 ,其 中输 入 向量 为 x,X,… , 练样   2   ( 样本)向量为 t  ,…,t   , P 。则第 P个样本的均  方误差为:  
④后向传播 :根据式 ( )和式 (O 8 1)计算各 
层 误差 。  
⑤根据式 ()和式 ( )调整权值和阈值。 7 9   ⑥全部样本是否都已训练?若否 ,则返回步骤 
⑦计算总性能指标。全部样本的误差 函数为 
x; p 输出向量为 Y, 2   y,…,y;相应 的教师值  ③进行下一样本训练。 P  
∑( 一   ……………… (  £  ) £ 6 )
∑  。判断性能指标  是否满足要求:  
< ?若 已满足, ̄ i 练结束;否则返 回步骤  £ Jl tJ ;
式中,£和  分别为第 k个输 出神经元第 P £  
个样本的教师值和实际输出值 。  
输出层的权值调整为 :   △   ( n+1 = )   +  
( ) … … () n 7 
M tb aa 编程实现的 B l P网络程序 ( 不含动量因 
子 )如下 所示 。  
w i n ( r l>Ert,eoh A TIE ) hl ad Er l r d pc <M X I S  e A S d
fr   1 P o  P :  
£ (£   ) k(e ) ……………… () = £一 f ne 8 
式 中 , 7 学 习率 ;a为动 量 因子 。 7 为   中间层 的权值 调 整为 :  
% 取样 本 
3 q( 1 w  + )=S o +  ̄ 0(   …… () ? aw. ) 9  
x= [tcl() t c2() ; t x ah P ;x a e e h P]  
y=y ah ( )  t tc P ; e
f ne  i(e )
… … … … …”(0  1)
% 计算各层输出:前向传播 
O1= x ; t 
阈值的调整与权值相类似,不再赘述。  
nt=wj*o: e j i i    
2 B   P网络 的 M tb编 程 实现  aa l
M tb是 M t Wok 公司开 发的一 种科 技应用  aa l a  r h s
o =1/ ( +ep(  (e —te j) ; j . 1 x 一 nt ht ) )  j a
n t=wk * j e k j  o:  
o =1/ ( +ep (  ( e k . 1 x 一 nt h t ) ) k—t a ) ; ek  
Y=o ; k 
余晓红:B 神经网络的 M TA 编程实现及讨论  P AIB
% 计算各层误差 : 向传播  后
dlk= (t ). k * ( 一o ) ea t y—Y *o . 1 k;  
dlj j *dhk *o. ( 一o)  et =wk ea . j * 1 j ; a
% 修正权值和阈值 
wj i+e *o*dlj; i j t i ea   =w a t  t t =t t —e *dlj h a ha e j e j t ea: a t  wk j +e *o * ea  j =wk t j d lk : a t  
h tk= te k— e tea h t a t a*d l k   et ; a
00 0? -0 .  0  
图3 B   P学 习误差曲线 
% 保存 当前样本的误差 
ep () =Sl (t ) . )/ ; r P r Ul( y—Y   l 2 
Er l Ul(r ) r l l er ; A =S l p  E l eoh =Erl  a l(pc) r l A ;
En   d
权值 闽值 初 始化 
设 置 样本 
计算 各 层输 出   图 4 仿 真 结 果 
计 算各 层误 差 
3 学 习算法讨论 
在实 际应用 中,B P算法存在着训 练时间长、   收敛速度慢的缺点。在 B 基本算法中增加动量项  P
修 正权值 和 阈值 
是一种常用且有效的方法,通过实验对改进学习算 
上Ys e  
法 中学习率和动量因子对收敛速度的影响进行仿真  研究。不同学习率和动量因子时所需的学习次数如 
表 1 所示 。  
表 1 不 同学 习率 和 动量 因子 下 所 需 
lY S   e 
训练 结 束 
的学习次数 ( 单位 :次 )  
图2 B   P网络 买 现 流 程 图 
经过 34 85次 学 习 (=O0 ,无 动 量 项 )后 达  .3 到设 定误差 =01 .,误 差 曲线 如 图 3 示。用 训 练  所
好的 B P网络对 测试样本进行测 试 ,测试样 本为  X、x在给定范围内均匀 2 等分产生 41   2 0 4 个数据。   测试误差均值为 一 . 2 ,方差为 001 ,测试数  00 7 0 . 2 0
据 用 Maa tb中的 Me ( l s )三维 画图 函数得到如 图 4 h  
Q墨 :   墨   坠≥   墨  
从 表 1 果 中可 以看 出 :① 当学 习率不 变时 , 结   增大 动量 因子 ,所 需 学 习 次数 随之 减 少 。② 当动 
所示结果 。  
量因子不变时,增大学习率 ,所需学习次数随之减  少,但学习率不能过大,否则将可能导致学习算法 
浙江交通职业技术学院学报 
不收敛 。③ 增加 动量 项后对 学 习速度 有 明显改 善 。   例如 ,当 =O5时 ,学 习次 数通 常 只需 无动 量项 时  .
有很强的函数逼近能力 , 应用非常广泛。通过一个  二元函数逼近的实例,对 B P网络的构造和程序实  现进行了研究。针对 B P网络存在训练时间长、收 
的 5 %,当 = . 时,学习次数通常只需无动量项  0 08
时的 2%。 5  
敛速度慢 的缺点 ,采用动量项的学习算法能有效提 
高学习速度,不同参数对 B P网络的收敛速度有很 
4 结束 语 
B P网络是一种无 反馈 的多层前 向神经 网络,  
参考文 献 :  
大影响,仿真结果表明,较大的学习率和动量因子 
能提高学 习速度 ,但过大的取值则可能导致学习算 
法不收敛 。  
[] 1 蒋宗礼 . 人工 神经 网络导论 [ ] M .北京 : 高等教育出版社 ,2o. 01  
[] 2 邓静,马传松,李振坤.B 神经网络的 c P ++ 实现及讨论 [] 微机发展, 08 3() 3 9. J. 20 ,1 7:9 — 6   [] 3 蒋良 , 孝 李超群.基于 B P神经网络的函数逼近方法及其 M T  ̄ 实现 [ .微型机与应用, 04() 5 — 3 AEB J ] 2o 1: 2 5.  
[] 4 张智星 . fTA 程序设计 与应用 [ ] 北京 :清华大学 出版社 , O .  ̄ LB L A M. 2   
M a a   m p e e tto   n   s u so   fBP  u a  t r   l f b I lm n a i n a d Dic s in o   Ne r lNewo k
YU X a - o g   io h n  
(ea m n o I o ao c neadEetn ,H nzo  oaoa &Tcn a Clg ,地【 D 108 h a  D pr et f n r d n i c n / r l aghuVct nl ehi l oee t   fm Se co c i c  l l u 0 1 ,Ci ) l g 3 n
Ab t c : B  e rl e okh ssrn  blyo p rahn  o l erfn t n. t   rga m n  fB   e- sr t a P n ua  t r  a t ga it f poc ign ni a   ci nw o i a n u o Ma a po rt igo P n t l b n  
w r   a   l n e     p ra h a2 dme t n l u cin h   o v re c  p e   a   x e i d va te Io  ̄nt i  okw si e mp me td t a p o c     - i ni a  n t .T e c n eg n e s e d w s e p d t   i h   n t o o f o e   n l n m 
tel riga oi m.T eif e c f er igrt n   me tm gis tela n  p 耐 w r h  e nn  l rh a g t h  n u n eo  ann  aea dmo nu aanth  emigse l l   e le ̄ m sd. e  
Ke   o d : N u a  ew r ; B   ew r ; Ma1 ; L a nn   g r h yw rs e rl t ok n P n t ok t . b a e r ig a o tm  l i
( 上接第 4 ) 4页  
Li e   u i g De i n Ba e   n M ATLAB n r Ro tn   sg   s d o    
T   L 一 n ,B I i ig U QⅡ f g A   — n  1e Jp
(hjn  st e f o mui tm,H n o 112 h a  Ze agI t t o  m nc i i ni   C u ao a ̄l 3 11,C i ) u n
Ab ta t s r c :On t e B sso   i e rpa n n , i i f s b e t  p l   h   a i f n a   ln ig t s e a l o a py MAT A  n o t z   n rr ui , 8    o   L   a L B i  pi i l e   t mi n i g o n g 0 a t  s a he e ma i u e o o i  rf sb   s nn  iesw t  i ee t y e   d tn a e     i ee t o t . c i   xm m  c n m c p o t y a i i l r  i df rn   p sa   n g s t df rn   u s  v i   s g g n h f t n o o r e Ke   o d : MAT A yw rs L B; L n a ; S i  o t ; O t z   i e r hp R u i g n pi e mi
用matlab编程实现的基于BP神经网络的预测仿真...
BP神经网络MATLAB编程实例...
BP神经网络的设计实例(MATLAB编程)...
Bp神经网络的Matlab实现...
BP神经网络在MATLAB上的方便实现...
BP神经网络在MATLAB上的实现与应用...
BP神经网络预测的MATLAB实现...
利用MATLAB实现BP神经网络的设计...
BP神经网络matlab实现的基本步骤...
基于MATLAB神经网络工具箱的BP网络实现...
■ 网友在搜求用matlab编BP神经网络预测程序;求一用matlab编的程序;P=[;%创建一个新的前向神经网络;net_1=newff(minmax(P),[1;%当前输入层权值和阈值inputWeights=;%当前网络层权值和阈值layerWeights=;%设置训练参数;net_1.trainParam.show=50;net_1.trainParam.epo
求用matlab编BP神经网络预测程序
求一用matlab编的程序
P=[。。。];输入T=[。。。];输出
创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')
当前输入层权值和阈值 inputWeights=net_1.IW{1,1} inputbias=net_1.b{1} %
当前网络层权值和阈值 layerWeights=net_1.LW{2,1} layerbias=net_1.b{2}
设置训练参数 net_1.trainParam.show = 50; net_1.trainParam.lr = 0.05; net_1.trainParam.mc = 0.9; net_1.trainParam.epochs = 10000; net_1.trainParam.goal = 1e-3;
调用 TRAINGDM 算法训练 BP 网络 [net_1,tr]=train(net_1,P,T);
对 BP 网络进行仿真 A = sim(net_1,P); %
计算仿真误差
E = T - A; MSE=mse(E)
x=[。。。]';%测试 sim(net_1,x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
对初学神经网络者的小提示
第二步:掌握如下算法: 2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。 3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,
Richard O. Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。 4.ART(自适应谐振理论),该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)的第15和16章。若看理论分析较费劲可直接编程实现一下16.2.7节的ART1算法小节中的算法. 4.BP算法,初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容,直接利用最后的学习规则编个小程序并测试,建议看《机器学习》(机械工业出版社,Tom M. Mitchell著,中英文都有)的第4章和《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)的第11章。
BP神经网络Matlab实例(1) 分类:Matlab实例
采用Matlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考Matlab帮助文档。
% 例1 采用动量梯度下降算法训练 BP 网络。
% 训练样本定义如下:
% 输入矢量为
% p =[-1 -2 3 1
-1 1 5 -3]
% 目标矢量为
t = [-1 -1 1 1]
% --------------------------------------------------------------- % NEWFF――生成一个新的前向神经网络,函数格式: % net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes, % PR -- R x 2 matrix of min and max values for R input elements % (对于R维输入,PR是一个R x 2 的矩阵,每一行是相应输入的边界值) % Si -- 第i层的维数 % TFi -- 第i层的传递函数, default = 'tansig' % BTF -- 反向传播网络的训练函数, default = 'traingdx' % BLF -- 反向传播网络的权值/阈值学习函数, default = 'learngdm' % PF -- 性能函数, default = 'mse' % --------------------------------------------------------------- % TRAIN――对 BP 神经网络进行训练,函数格式: % train(NET,P,T,Pi,Ai,VV,TV),输入参数: % net -- 所建立的网络 % P -- 网络的输入 % T -- 网络的目标值, default = zeros % Pi -- 初始输入延迟, default = zeros % Ai -- 初始网络层延迟, default = zeros % VV -- 验证向量的结构, default = [] % TV -- 测试向量的结构, default = [] % 返回值: % net -- 训练之后的网络 % TR -- 训练记录(训练次数及每次训练的误差) % Y -- 网络输出 % E -- 网络误差 % Pf -- 最终输入延迟 % Af -- 最终网络层延迟 % --------------------------------------------------------------- % SIM――对 BP 神经网络进行仿真,函数格式: % [Y,Pf,Af,E,perf] = sim(net,P,PiAi,T) % 参数与前同。 % --------------------------------------------------------------- %
% 定义训练样本
% P 为输入矢量
echo on P=[-1, -2,
% T 为目标矢量
T=[-1, -1, 1, 1];
% 创建一个新的前向神经网络
net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
% --------------------------------------------------------------- % 训练函数:traingdm,功能:以动量BP算法修正神经网络的权值和阈值。 % 它的相关特性包括: % epochs:训练的次数,默认:100 % goal:误差性能目标值,默认:0 % lr:学习率,默认:0.01 % max_fail:确认样本进行仿真时,最大的失败次数,默认:5 % mc:动量因子,默认:0.9 % min_grad:最小梯度值,默认:1e-10 % show:显示的间隔次数,默认:25 % time:训练的最长时间,默认:inf % --------------------------------------------------------------- % 当前输入层权值和阈值
inputWeights=net.IW{1,1}
inputbias=net.b{1}
% 当前网络层权值和阈值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
% 设置网络的训练参数
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
% 调用 TRAINGDM 算法训练 BP 网络
[net,tr]=train(net,P,T);
% 对 BP 网络进行仿真
A = sim(net,P)
% 计算仿真误差
MSE=mse(E) plot((1:4),T,'-*',(1:4),A,'-o')
B P神经网络的原理及算法的基本步骤 理 论上已证 明 ,一个 3层的 B P网络能够实现任意的连续映射 ,可以任意 精度逼近任何给定的连续函数 。 1. 1 B P神经网络的原理 ()B P B ack P rop aga tion神经网络通常由具有多个节点的 输入层
inp u t laye r、隐含层 ( h idden
laye r) 和多个 或一个输 出节点的输出层 ( ou tp u t laye r)组成 ,其学习过程分为信息的 正向传播过程和误差的反向传播过程两个阶段 。外部输入 的信号经输入层 、隐含层为止 。的神经元逐层处理 ,向前传播到输 出层 ,给出结果 。如果在输出层得不到期望输出 ,则转入逆 向传播过程 ,将实际值与网络输出之间的误差沿原连接通路 返回 ,通过修改各层神经元的连接权重 ,减少误差 ,然后再转 入正向传播过程 ,反复迭代 ,直到误差小于给定的值
表1 年全国总人口(单位:万人) 年份 83 86 89 人口
604 008 614 111191 年份 92 95 98 人口 823 517 121 626 124810 年份 01 04 2005
人口 125909 缺省 453 988 130756
年份 人口 年份 人口 模型二预测2001年~2010年全国总人口(单位:万人) 03
年份 人口 年份 人口 年份 人口 年份 人口 年份 人口 年份 人口
模型???预测的全国总人口(1981年至2016年)(单位:万人) 83 266 967 203 94
340 116 15
832 678 00
240 1 2 8 0 0 0 153344
三亿文库包含各类专业文献、幼儿教育、小学教育、行业资料、各类资格考试、应用写作文书、专业论文、用matlab编BP神经网络预测程序75等内容。 
 用matlab编BP神经网络预测程序加一个优秀程序_IT/计算机_专业资料。用matlab编BP神经网络预测程序加一个优秀程序求用matlab 编 BP 神经网络预测程序 求一用 matlab ...  matlab神经网络预测程序(自己编的可用)_信息与通信_工程科技_专业资料。Matlab 自身...用matlab编BP神经网络预... 22页 1下载券喜欢此文档的还喜欢 ...  bp神经网络MATLAB程序_计算机软件及应用_IT/计算机_专业资料。bp神经网络的建立与...%BP 神经网络预测 an=sim(net,inputn_test); %%网络得到数据反归一化 BP...  并建立了四个 BP 神经网络模型,并结合模型 编写了相应的 MATLAB 运算程序, 随后用所建立的网络模型对德州市某路口单向的人群流量 进行了预测,最后还分析了不同...  BP神经网络matlab源程序代码_计算机软件及应用_IT/计算机...('o表示预测值--- *表示实际值') grid on m=...你写的代码有问题,输入和输出有问题. [[i] 本帖...  MATLAB神经网络算法程序模板(精)_计算机软件及应用_IT/计算机_专业资料。MATLAB...bpoutput=postmnmx(an,minoutput,maxoutput); %预测误差 error=bpoutput-output...  BP神经网络预测理论及程序-学习_计算机软件及应用_IT/计算机_专业资料。MATLAB,BP神经网络 12、智能算法 12.1 人工神经网络 1、 人工神经网络的原理假如我们只知道...  ( 神经网络进行交通预测程序优化本文《考拉 BP 神经网络的 matlab 实现学习历程...用matlab编BP神经网络预... 22页 1下载券 基于MATLAB的BP神经网络... 28页...matlab中bp神经网络的一些问题 - pallypally的专栏 - CSDN博客
matlab中bp神经网络的一些问题
& & & 在学习了BP前馈反向传播神经网络之后,想利用matlab中的神经网络工具箱实现以下。在查看了相关资料以后,就开始动手了。主要运用的函数是:
net = newff(P, T, [], TFi, …);
net = train(net, P, T)
sim(net, P)
看起来很简单的3个函数,用起来产生了一些困惑。
刚开始训练的数据是XOR异或问题。
Inputs = [-1 -1 1 1; -1 1 -1 1]
Targets = [0 1 1 0];
看到targets的数据就知道最后的输出是一维的。就是异或的结果。
这里想详细说明一下newff函数。
Newff函数主要用于建立一个网络。通过inputs,targets等,我们告诉matlab要建立几层网络,每层隐含层的神经元的个数是多少。输入是几维的,输出又是几维的数据,同时还有设置隐含层和输出层的激活函数的形式等。我把激活函数都设置成了线性的’purelin’,也就是f(x) = x。
&&&&&&&& 建立完网络之后,我们就可以对其进行训练了。Train(net, inputs, targets)进行训练。训练完之后,就可以模拟了。
然后,我输入sim(net,inputs)。它输出了一些数据。当然和targets的差距还是很大的。同时我对最后的输出结果是如何得到的感兴趣。于是,我就使用net.IW, net.LW, 和net.b三个结构获得了神经网络需要的权重和偏置。根据输入手工地去计算。自己计算的结果和网络最后输出的结果不一样。使用不同的训练样本,来进行训练,模拟同样产生了这个问题。
这时一个问题就浮现在了面前。
怎么办?一定要解决。看看到底是怎么回事?
结果的过程是曲折的。在这里先给出结论:
对于matlab中的newff生成的网络,它都有一个默认的b(网络偏置,(自己起的名字))直接加在了最后的输出上。不同的网络有不同的默认b值。这里所说的不同的网络,即使网络结构相同,但是只要net.LW的值不一样,b值就不一样。同时对于每一层的bias,它默认权值为1.5,而不是1。其它的和预想的是一样的。如下面的网络:
在该图中,获得net的偏置集合,同时获得各个权值,获得网络偏置,给定输入,如果激活函数是线性的话,就可以模拟网络的输出了。
1.&&&&&&使用newff建立一个网络。然后人为手工对各个权值和偏置进行赋值。在不经过训练的前提下,直接使用sim (net, inputs)。同时给的inputs是0向量,同时偏置赋值为0.这样会输出网络偏置。
2.&&&&&&将偏置变为1,而inputs依然为0向量,发现最后的输出是偏置的1.5倍。
3.&&&&&&将偏置重置为0,inputs依然为0向量,改变各个权值(这里包含两部分:net.IW和net.LW)得出结论如下:当改变net.IW时,最后的输出和step1是一样的;当改变net.LW时,最后的输出发生了改变,也就是net.LW决定着网络偏置。
4.&&&&&&在一个网络中,给定输入inputs,按照上图的计算方法,最后人工计算结果和网络最后的输出结果一致。
我的热门文章}

我要回帖

更多关于 神经网络 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信