adamlu 发表于 2008-7-2 12:43

请教BP网络训练过程中如何改变学习速度的问题

大家好,我用fortran编了一个6-12-2的三层BP网络,由于收敛速度太慢,就参考“神经网络设计”书中关于改变学习速度的规则加了如下一段程序,可是导致原来可以收敛的(虽然很慢)现在老是陷入局部极小值而提前结束(结束时全局误差还有15左右呢),我该如何改进呢?望各位高手不吝赐教!以下是我的改变学习速度的程序:其中,s1,s2是学习系数,errk是均方差,errm是上次的均方差,dl是动量系数,st1=0.7,st2=1.05,st3=1.04:
if(errk>st3*errm) then
   s1=s1*st1
   s2=s2*st1
   dl=0.0
   return
else if(errk<errm) then
   s1=s1*st2
   s2=s2*st2
   if(dl==0.0) dl=dlc
else if(errk>errm.and.errk<st3*errm) then
   if(dl==0.0) dl=dlc
else
end if

adamlu 发表于 2008-7-17 16:02

请各位帮忙解答一下,不胜感激!
页: [1]
查看完整版本: 请教BP网络训练过程中如何改变学习速度的问题