Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.83 KB | None | 0 0
  1. /**
  2.  * Created by micha on 04.03.2017.
  3.  */
  4. public class Perceptron {
  5.  
  6.     private double[][] u;
  7.     private double[] w;
  8.     private int t,counter;
  9.     private double learnspeed = 0.1;
  10.     private int numberLetters = 6;
  11.  
  12.     public Perceptron(){   //Perceptron init
  13.         t=0;
  14.         counter=0;
  15.         initImages();
  16.     }
  17.  
  18.     private void initImages(){      //init U+,Ui and W
  19.         this.u = new double[][] {
  20.                        {0,0,0,0,0,
  21.                         0,1,1,0,0,
  22.                         0,0,1,0,0,
  23.                         0,0,1,0,0,
  24.                         0,0,1,0,0,1},
  25.                        {0,0,1,1,0,
  26.                         0,0,0,1,0,
  27.                         0,0,0,1,0,
  28.                         0,0,0,0,0,
  29.                         0,0,0,0,0,1},
  30.                        {0,0,0,0,0,
  31.                         1,1,0,0,0,
  32.                         0,1,0,0,0,
  33.                         0,1,0,0,0,
  34.                         0,1,0,0,0,1},
  35.                        {0,0,0,0,0,
  36.                         0,1,1,1,0,
  37.                         0,1,0,1,0,
  38.                         0,1,1,1,0,
  39.                         0,0,0,0,0,1},
  40.                        {0,0,0,0,0,
  41.                         0,0,0,0,0,
  42.                         1,1,1,0,0,
  43.                         1,0,1,0,0,
  44.                         1,1,1,0,0,1},
  45.                         {0,0,0,0,0,
  46.                         0,0,0,0,0,
  47.                         1,1,1,0,0,
  48.                         1,0,1,0,0,
  49.                         1,1,1,0,0,1}};
  50.         this.w = new double[]
  51.                         {1,1,1,1,1
  52.                         ,1,1,1,1,1
  53.                         ,1,1,1,1,1
  54.                         ,1,1,1,1,1
  55.                         ,1,1,1,1,1,1};
  56.     }
  57.  
  58.     private double checkU(){    //checks if U+ or U-
  59.         if(t%numberLetters < 3){return 1.0;}
  60.         else{return 0.0;}
  61.     }
  62.  
  63.     private double scalar(){    //returns scalar of (wt,yt)
  64.         double scalar = 0.0;
  65.  
  66.         for(int i=0;i<26;i++){
  67.             scalar = scalar + w[i]*u[t%numberLetters][i];
  68.  
  69.         }
  70.  
  71.         if (scalar>=0){scalar=1.0;}
  72.         else {scalar=0.0;}
  73.  
  74.         return scalar;
  75.     }
  76.  
  77.     public void learn(){
  78.         double zt,scalar;
  79.         while (counter<numberLetters) {
  80.  
  81.             zt = checkU();
  82.             scalar = scalar();
  83.  
  84.  
  85.             for (int i = 0; i < 26; i++) {
  86.                 w[i] = w[i] + (learnspeed * (zt-scalar) * u[t % numberLetters][i]);
  87.             }
  88.  
  89.  
  90.             if (zt == scalar) {
  91.                 counter++;
  92.             } else {
  93.                 counter = 0;
  94.             }
  95.  
  96.             t++;
  97.         }
  98.  
  99.         result();
  100.     }
  101.  
  102.     private void result(){
  103.         System.out.println("t: "+t);
  104.         String wt = "vector wt: " + w[0];
  105.         for(int i=1;i<26;i++){wt = wt + ", " + w[i];}
  106.         System.out.println(wt);
  107.     }
  108.  
  109.  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement