アットウィキロゴ

renn9

package y6;
 
 
public class pro {
 
 int datanumber,number;   
 int[] y=new int[201];
 int[][] e=new int[201][4];
 double sig;
 double[] delta=new double[3];
 
 
 double[] ddelta=new double[3];
 double dsig;
 
    public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
 
    datanumber=100;
    number=2;
 
    int s;
    for(s=1;s<datanumber+1;s++){
    e[s][1]=0;    
    if(Math.random()>0.5)e[s][1]=1;    
    e[s][2]=0;    
    if(Math.random()>0.5)e[s][2]=1;  
    int h=0;
    if(e[s][1]>0.5)h=h+1;
    if(e[s][2]>0.5)h=h+1;
    if(Math.random()>0.2)h=h+1;
    y[s]=0;
    if(h==3)y[s]=1;
    }
 
    sig=0;
    delta[1]=0;
    delta[2]=0;
 
 
    ex_fin sub=new ex_fin();
      sub.delta=delta;
      sub.sig=sig;
      sub.y=y;
      sub.e=e;
      sub.datanumber=datanumber;
      sub.number=number;
      double u1=sub.makedata();
 
 
      double de=0.01;
 
      ex_fin sub2=new ex_fin();
      sub2.delta=delta;
      sub2.sig=sig+de;
      sub2.y=y;
      sub2.e=e;
      sub2.datanumber=datanumber;
      sub2.number=number;
      double u2=sub2.makedata();
 
 
 
      dsig=(u2-u1)/de;
 
 
       System.out.println(u1+","+u2);
 
 
       double[] deltax=new double[3];
 
       for(s=1;s<number+1;s++){
       int sx;
       for(sx=1;sx<number+1;sx++){
       deltax[sx]=delta[sx];    
       }
 
       deltax[s]=deltax[s]+de;
 
 
    ex_fin sub3=new ex_fin();
      sub3.delta=deltax;
      sub3.sig=sig;
      sub3.y=y;
      sub3.e=e;
      sub3.datanumber=datanumber;
      sub3.number=number;
      double u3=sub3.makedata();
 
      ddelta[s]=(u3-u1)/de;
 
     System.out.println(ddelta[s]);
 
 
 
 
    }
 
 
 
 
    }}
 
 
 
package y6;
 
 
public class ex_fin {
 
 int datanumber,number;   
 int[] y=new int[201];
 int[][] e=new int[201][4];
 double sig;
 double[] delta=new double[3];
 
 
    double makedata(){
 
        int s,sx;
    double zz=0;
    for(s=1;s<datanumber+1;s++){
    double z=sig;    
    for(sx=1;sx<number+1;sx++){
    z=z+delta[sx]*e[s][sx];    
    }    
    double z1=1/(1+Math.exp(-z));
    if(y[s]>0.5)zz=zz+(z1-1)*(z1-1);
    if(y[s]<0.5)zz=zz+z1*z1;
    }
 
 
    return zz;
 
 
    }
 
}
 
最終更新:2016年12月24日 17:28