大家好,我用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