www.pudn.com > jnntbeta0.2f.zip > BpNet.~jav


import java.util.Random; 
 
public class BpNet extends Object { 
 
  int inNum;  //输入接点数 
  int hideNum;//隐含接点数 
  int outNum;  //输出接点数 
 
  Random R; 
  int epochs; 
 
  double x[]; //输入向量 
  double x1[];//隐含接点状态值 
  double x2[];//输出接点状态值 
 
  double o1[]; 
  double o2[]; 
  double w[][];//隐含接点权值 
  double w1[][];//输出接点权值 
  double rate_w; //权值学习率(输入层-隐含层) 
  double rate_w1;//权值学习率 (隐含层-输出层) 
  double rate_b1;//隐含层阀值学习率 
  double rate_b2;//输出层阀值学习率 
  double b1[];//隐含接点阀值 
  double b2[];//输出接点阀值 
  double pp[]; 
  double qq[]; 
  double yd[]; 
  double e; 
  double in_rate;//输入归一化比例系数 
   
 
 
  public BpNet(int inNum,int hideNum,int outNum) { 
  R=new Random(); 
  this.epochs=500; 
  this.inNum=inNum; 
  this.hideNum=hideNum; 
  this.outNum=outNum; 
  x=new double[inNum]; //输入向量 
  x1=new double[hideNum];//隐含接点状态值 
  x2=new double[outNum];//输出接点状态值 
 
  o1=new double[hideNum]; 
  o2=new double[outNum]; 
  w=new double[inNum][hideNum];//隐含接点权值 
  w1=new double[hideNum][outNum];//输出接点权值 
  b1=new double[hideNum];//隐含接点阀值 
  b2=new double[outNum];//输出接点阀值 
  pp=new double[hideNum]; 
  qq=new double[outNum]; 
  yd=new double[outNum]; 
 
  for (int i=0;ipmax) 
              pmax=Math.abs(p[isamp][i]); 
           if (Math.abs(t[isamp][i])>pmax) 
              pmax=Math.abs(t[isamp][i]); 
          } 
      }//end for isamp 
 
 
  in_rate=pmax; 
 
  
 
  for(int isamp=0;isamp