アットウィキロゴ

j2ん

package nn;
 
 
public class pro {
 
    int[][] link=new int[6][4];
     int number_link;
 
     int[] y=new int[101];
     double[][] x=new double[101][4];
   int datanumber;
      double[][] e_op=new double[6][101];
   int[] alphax=new int[4];
      int[][] alpha=new int[7][4];
     double[][] e=new double[6][101];
 
    public static void main(String[] args) {
       pro r=new pro();
    }
 
    pro(){
 
 
        link[1][0]=3;
        link[1][1]=1;
        link[1][2]=2;
        link[2][0]=4;
        link[2][1]=1;
        link[2][2]=2;
        link[3][0]=5;
        link[3][1]=3;
        link[3][2]=4;
 
 
        datanumber=100;
 
        int s;
        for(s=1;s<datanumber+1;s++){
        x[s][1]=Math.random();
        x[s][2]=Math.random();
        if(x[s][1]+x[s][2]>1)y[s]=1;
        }
 
          for(s=1;s<datanumber+1;s++){
         e_op[1][s]=x[s][1];
          e_op[2][s]=x[s][2];
          if(Math.random()>0.5)e_op[4][s]=1;
           if(Math.random()>0.5)e_op[3][s]=1;
          e_op[5][s]=y[s];
          }
 
          int[] a=new int[4];
 
        int trs;
 
 
           int sx;
 
           int tr;
 
          for(tr=1;tr<4;tr++){  
 
           double minz=9999;   
         for(sx=0;sx<3;sx++){
         alphax[sx]=0;
          }   
 
 
        for(trs=1;trs<1001;trs++){
 
          for(sx=0;sx<3;sx++){
         a[sx]=(int)(20*Math.random())-10;
          }
 
          double z=0;
          for(s=1;s<datanumber+1;s++){
          double x1=a[0];
          int m1=link[tr][1];
          int m2=link[tr][2];
          int m0=link[tr][0];
          x1=x1+a[1]*e_op[m1][s]+a[2]*e_op[m2][s];    
          double z1=1/(1+Math.exp(-x1));
          z=z+(e_op[m0][s]-z1)*(e_op[m0][s]-z1);
          }
          if(z<minz){
           minz=z;
           for(sx=0;sx<3;sx++){
         alphax[sx]=a[sx];
          }   
          }   
          }
 
         for(sx=0;sx<3;sx++){
         alpha[tr][sx]=alphax[sx];
          }   
 
 
 
 
 
 
 
          System.out.println(tr+","+alpha[tr][0]+","+alpha[tr][1]+","+alpha[tr][2]);
          }
 
 
          for(s=1;s<datanumber+1;s++){
          e[1][s]=x[s][1];
          e[2][s]=x[s][2];
          e[5][s]=y[s];   
          }
          for(tr=3;tr<5;tr++){
          for(s=1;s<datanumber+1;s++){
          int m1=link[tr][1];
          int m2=link[tr][2];
          int m0=link[tr][0];
          double x1=alpha[tr][0];
          x1=x1+alpha[tr][1]*e_op[m1][s]+alpha[tr][2]*e_op[m2][s];    
          e[m0][s]=0;
          if(x1>0)e[m0][s]=1;
          }
          }    
 
 
          tr=3;
 
          for(s=1;s<datanumber+1;s++){
          int m1=link[tr][1];
          int m2=link[tr][2];
          int m0=link[tr][0];
          double y1=alpha[tr][0]+alpha[tr][1]+alpha[tr][2]*e[m2][s]; 
          double y2=alpha[tr][0]+alpha[tr][2]*e[m2][s]; 
           double z1=1/(1+Math.exp(-y1));
          double q1=(e[m0][s]-z1)*(e[m0][s]-z1);
           double z2=1/(1+Math.exp(-y2));
          double q2=(e[m0][s]-z2)*(e[m0][s]-z2);
          System.out.println(q1+","+q2);
          e_op[m1][s]=0;
          if(q1>q2)e_op[m1][s]=1;
           }
 
 
 
          for(s=1;s<datanumber+1;s++){
          int m1=link[tr][1];
          int m2=link[tr][2];
          int m0=link[tr][0];
          double y1=alpha[tr][0]+alpha[tr][1]+alpha[tr][2]*e[m2][s]; 
          double y2=alpha[tr][0]+alpha[tr][2]*e[m2][s]; 
           double z1=1/(1+Math.exp(-y1));
          double q1=(e[m0][s]-z1)*(e[m0][s]-z1);
           double z2=1/(1+Math.exp(-y2));
          double q2=(e[m0][s]-z2)*(e[m0][s]-z2);
          System.out.println(q1+","+q2);
          e_op[m1][s]=0;
          if(q1>q2)e_op[m1][s]=1;
           }
 
 
 
 
 
          }
 
 
 
 
 
 
 
    }
 
 
 
}
 
最終更新:2017年08月10日 02:32