Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Created by micha on 04.03.2017.
- */
- public class Perceptron {
- private double[][] u;
- private double[] w;
- private int t,counter;
- private double learnspeed = 0.1;
- private int numberLetters = 6;
- public Perceptron(){ //Perceptron init
- t=0;
- counter=0;
- initImages();
- }
- private void initImages(){ //init U+,Ui and W
- this.u = new double[][] {
- {0,0,0,0,0,
- 0,1,1,0,0,
- 0,0,1,0,0,
- 0,0,1,0,0,
- 0,0,1,0,0,1},
- {0,0,1,1,0,
- 0,0,0,1,0,
- 0,0,0,1,0,
- 0,0,0,0,0,
- 0,0,0,0,0,1},
- {0,0,0,0,0,
- 1,1,0,0,0,
- 0,1,0,0,0,
- 0,1,0,0,0,
- 0,1,0,0,0,1},
- {0,0,0,0,0,
- 0,1,1,1,0,
- 0,1,0,1,0,
- 0,1,1,1,0,
- 0,0,0,0,0,1},
- {0,0,0,0,0,
- 0,0,0,0,0,
- 1,1,1,0,0,
- 1,0,1,0,0,
- 1,1,1,0,0,1},
- {0,0,0,0,0,
- 0,0,0,0,0,
- 1,1,1,0,0,
- 1,0,1,0,0,
- 1,1,1,0,0,1}};
- this.w = new double[]
- {1,1,1,1,1
- ,1,1,1,1,1
- ,1,1,1,1,1
- ,1,1,1,1,1
- ,1,1,1,1,1,1};
- }
- private double checkU(){ //checks if U+ or U-
- if(t%numberLetters < 3){return 1.0;}
- else{return 0.0;}
- }
- private double scalar(){ //returns scalar of (wt,yt)
- double scalar = 0.0;
- for(int i=0;i<26;i++){
- scalar = scalar + w[i]*u[t%numberLetters][i];
- }
- if (scalar>=0){scalar=1.0;}
- else {scalar=0.0;}
- return scalar;
- }
- public void learn(){
- double zt,scalar;
- while (counter<numberLetters) {
- zt = checkU();
- scalar = scalar();
- for (int i = 0; i < 26; i++) {
- w[i] = w[i] + (learnspeed * (zt-scalar) * u[t % numberLetters][i]);
- }
- if (zt == scalar) {
- counter++;
- } else {
- counter = 0;
- }
- t++;
- }
- result();
- }
- private void result(){
- System.out.println("t: "+t);
- String wt = "vector wt: " + w[0];
- for(int i=1;i<26;i++){wt = wt + ", " + w[i];}
- System.out.println(wt);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement