最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

神经网络的算法程序

来源:动视网 责编:小OO 时间:2025-10-01 17:26:49
文档

神经网络的算法程序

!rs-输入层节点数cs-输出层节点数ys-隐层节点数!t-学习速率r-动量项nx-循环次数p-样本数!ec-最小误差pd-学习为0,验证为1integerrs,cs,ys,p,q,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,pdxreal*8a(100000)LOGICALlookopen(6,file='lwl.txt',status='old')INQUIRE(FILE='out.txt',EXIST=look)IF(look)THENOPEN(8,FILE='out.
推荐度:
导读!rs-输入层节点数cs-输出层节点数ys-隐层节点数!t-学习速率r-动量项nx-循环次数p-样本数!ec-最小误差pd-学习为0,验证为1integerrs,cs,ys,p,q,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,pdxreal*8a(100000)LOGICALlookopen(6,file='lwl.txt',status='old')INQUIRE(FILE='out.txt',EXIST=look)IF(look)THENOPEN(8,FILE='out.
!rs-输入层节点数 cs-输出层节点数  ys-隐层节点数

!t-学习速率     r-动量项 nx-循环次数  p-样本数

!ec-最小误差 pd-学习为0,验证为1

integer rs,cs,ys,p,q,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,pdx

real*8 a(100000)

LOGICAL look

open(6,file='lwl.txt',status='old')

INQUIRE(FILE='out.txt',EXIST=look)

IF(look)THEN

OPEN(8,FILE='out.txt',STATUS='OLD')

CLOSE(8,STATUS='DELETE')

end if

OPEN(8,FILE='out.txt',STATUS='NEW')

read(6,*)rs,cs,ys,p,t,r,nx,ec

q=0

l1=2*rs*ys+1+ys

l2=l1+2*cs*ys+cs

l3=l2+rs*p

l4=l3+cs*p

l5=l4+rs*p+p

l6=l5+cs*p

l7=l6+ys*p+p

l8=l7+cs*p

l9=l8+p

l10=l9+p*cs

l11=l10+p*ys

l12=l11+cs*p

l13=l12+cs

l14=l13+cs

l15=l14+cs

l16=l15+cs

write(8,*)l1,l2,l3,l4,l5,l6,l7,l8,l9,l10

call input1(rs,cs,ys,a(1),a(l1))

call input2(rs,cs,p,a(l2),a(l3))

call input22(rs,cs,p,a(l2),a(l3),a(l4),a(l5),a(l12),a(l13),a(l14),a(l15))

do 5 i=1,nx

q=q+1

write(8,'(a)')'q='

write(8,*)q

do 10 j=1,p

call sup1(rs,cs,ys,j,p,a(1),a(l1),a(l4),a(l6),a(l7))

call sup2(cs,ys,j,p,a(l5),a(l7),a(l6),a(l1),a(l8),a(l9),a(l10))

10 continue    

call sup3(rs,cs,ys,p,t,r,a(l4),a(l6),a(l1),a(1),a(l9),a(l10))

do 30 j=1,p

call sup1(rs,cs,ys,j,p,a(1),a(l1),a(l4),a(l6),a(l7))

30 continue

call fgyh(cs,p,a(l7),a(l12),a(l13),a(l14),a(l15),a(l11))

call pde(cs,p,ec,a(l3),a(l11),pdx)

if(pdx.eq.1)then

write(8,'(a)')'the calculate is end'

write(8,*)q

end if

5 continue

write(8,'(A)')'n=10000 end'

end

!权值初始化 

subroutine input1(rs,cs,ys,v,w)

integer rs,cs,ys

real*8 v(rs+1,ys,2),w(ys+1,cs,2) 

do 5 j=1,ys

do 15 i=0,rs

v(i,j,1)=0.1

15 continue

5 continue

do 25 n=1,cs

do 35 m=0,ys

w(m,n,1)=0.1

35 continue

25 continue

return

end

!输入训练样本

subroutine input2(rs,cs,p,x,d)

  integer rs,cs,p

real*8 x(rs,p),d(cs,p)

do 10 m=1,p

read(6,*)(x(i,m),i=1,rs)

10 continue

do 20 n=1,p

read(6,*)(d(i,n),i=1,cs)

20 continue

return

end

!归一化数据处理

subroutine input22(rs,cs,p,x,d,x1,d1,ax,ai,adx,adi)

integer rs,cs,p

real*8 x(rs,p),d(cs,p),x1(rs+1,p),d1(cs,p),ax(cs),ai(cs),adx(cs),adi(cs)

do 10 i=1,rs

ai(i)=100d0

ax(i)=0d0 

do 20 j=1,p

a=x(i,j)

if(a.ge.ax(i))ax(i)=a

if(a.le.ai(i))ai(i)=a

20 continue

do 30 j=1,p

x1(i,j)=(x(i,j)-ai(i))/(ax(i)-ai(i))

30 continue

10 continue

write(8,*)((x1(i,j),i=1,rs),j=1,p)

do 50 i=1,cs

ai(i)=100d0

ax(i)=0d0 

do 60 j=1,p

a=d(i,j)

if(a.ge.ax(i))ax(i)=a

if(a.le.ai(i))ai(i)=a

60 continue

adi(i)=-(ax(i)-ai(i))/18

adx(i)=-adi(i)

do 70 j=1,p

d1(i,j)=(d(i,j)-ai(i)-adi(i))/(ax(i)+adx(i)-ai(i)-adi(i))

70 continue

50 continue

write(8,*)((d1(i,j),i=1,cs),j=1,p)

do 80 j=1,p

x1(0,j)=-1.0

80 continue

return

end

!计算各层输出

subroutine sup1(rs,cs,ys,j,p,v,w,x1,y,o)

integer rs,cs,ys,p

real netk,netj

real*8 v(rs+1,ys,2),w(ys+1,cs,2),x1(rs+1,p)

real*8 y(ys+1,p),o(cs,p)

y(0,j)=-1

do 10 i=1,ys

netj=0.0

do 15 m=0,rs

netj=netj+v(m,i,1)*x1(m,j)

15 continue

!write(8,*)netj

y(i,j)=1/(1+exp(-netj))

10 continue

do 20 k=1,cs

netk=0.0

do 25 n=0,ys

netk=netk+w(n,k,1)*y(n,j)

25 continue

!write(8,*)netk

o(k,j)=1/(1+exp(-netk))

20 continue

return

end

!计算各层误差信号

subroutine sup2(cs,ys,j,p,d1,o,y,w,e,wx1,wx2)

integer cs,ys,p

real*8  o(cs,p),d1(cs,p),y(ys+1,p),w(ys+1,cs,2),e(p),wx1(cs,p),wx2(ys,p)

ex=0.0

do 10 i=1,cs

ex=ex+(d1(i,j)-o(i,j))**2

10 continue

e(j)=sqrt(ex)

do 20 m=1,cs

wx1(m,j)=(d1(m,j)-o(m,j))*(1-o(m,j))*o(m,j)

20 continue

do 30 n=1,ys

wx3=0.0

do 40 l=1,cs

wx3=wx3+wx1(l,j)*w(n,l,1)

40 continue

wx2(n,j)=wx3*(1-y(n,j))*y(n,j)

30 continue

return

end

!权值修正

subroutine sup3(rs,cs,ys,p,t,r,x1,y,w,v,wx1,wx2)

integer rs,cs,ys,p

real wz,vz

real*8 v(rs+1,ys,2),w(ys+1,cs,2),x1(rs+1,p),y(ys+1,p),wx1(cs,p),wx2(ys,p)

do 10 k=1,cs

do 20 l=0,ys

wz=0.0

do 50 j=1,p

wz=t*wx1(k,j)*y(l,j)+wz

50 continue

w(l,k,2)=wz+r*w(l,k,2)

w(l,k,1)=w(l,k,1)+w(l,k,2)

20 continue

10 continue

do 30 m=1,ys

do 40 n=0,rs

do 60 j=1,p

vz=vz+t*wx2(m,j)*x1(n,j)

60 continue

v(n,m,2)=vz+r*v(n,m,2)

v(n,m,1)=v(n,m,1)+v(n,m,2)

40 continue

30 continue

return

end 

!反归一化处理

subroutine fgyh(cs,p,o,ax,ai,adx,adi,ds)

integer cs,p

real*8 ax(cs),ai(cs),adx(cs),adi(cs),o(cs,p),ds(cs,p)

do 10 i=1,cs

do 20 j=1,p

ds(i,j)=o(i,j)*(ax(i)+adx(i)-ai(i)-adi(i))+(ai(i)+adi(i))

20 continue

10 continue

return

end

!计算误差值

subroutine pde(cs,p,ec,d,ds,pdx)

integer cs,p,pdx

real ec,ax

real*8 epx(cs,p),d(cs,p),ds(cs,p)

pdx=1

do 5 j=1,p

do 10 i=1,cs

epx(i,j)=(d(i,j)-ds(i,j))/d(i,j)

ax=epx(i,j)

if(ax.lt.ec)then

goto 10

else

pdx=pdx+1

end if

10 continue

5 continue

write(8,*)'pdx=',pdx

write(8,*)((epx(i,j),i=1,cs),j=1,p)

return

end

文档

神经网络的算法程序

!rs-输入层节点数cs-输出层节点数ys-隐层节点数!t-学习速率r-动量项nx-循环次数p-样本数!ec-最小误差pd-学习为0,验证为1integerrs,cs,ys,p,q,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,pdxreal*8a(100000)LOGICALlookopen(6,file='lwl.txt',status='old')INQUIRE(FILE='out.txt',EXIST=look)IF(look)THENOPEN(8,FILE='out.
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top