Package parser

Source Code of parser.Chargeur

package parser;


import java.util.ArrayList;

import nets.Couche;
import nets.ReseauFF;

import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;

import fonctions.Fonction;
import fonctions.Heaviside;
import fonctions.Identite;
import fonctions.Sigmoide;



public class Chargeur extends DefaultHandler {
 
  // Declaration des variables locales
  double nbneurones;
  static double eta;
  double pixel;
  String fonction;
  int taille, ligne, colonne;
  ReseauFF reseau;
  Couche input, cc1, cc2, cc3, cc4, cc5, output;
  ArrayList<Double> image_courante = new ArrayList<Double>();
  ArrayList<ArrayList<Double>> seq_courante = new ArrayList<ArrayList<Double>>();
  ArrayList<ArrayList<ArrayList<Double>>> vecteur_sequences_appr = new ArrayList<ArrayList<ArrayList<Double>>>() ;
  ArrayList<ArrayList<Double>> vecteur_sequences_reco = new ArrayList<ArrayList<Double>>();
 
 
 
  public Chargeur () {
    super();
  }
 
  public void startDocument () {
    System.out.println("Start of document");
    System.out.println();
  }
 
  public void endDocument () {
    System.out.println("End document");
  }
 
    public void startElement (String uri, String name,
          String qName, Attributes atts){
     
      if ("input".equals(name)){
        vecteur_sequences_appr.clear();//RAZ
      }
     
      if ("categorie".equals(name)){
        ArrayList<ArrayList<Double>> seq = new ArrayList<ArrayList<Double>>();
        seq_courante = seq;//RAZ
        //String nom = atts.getValue(0);
        //int id = Integer.valueOf(atts.getValue(1));
      }
     
      if ("image".equals(name)){
        ArrayList<Double> image = new ArrayList<Double>();
        image_courante = image;
      }
     
      if ("imagereco".equals(name)){
        ArrayList<Double> imagereco = new ArrayList<Double>();
        image_courante = imagereco;
      }
     
      if ("taille".equals(name)){
        ligne = Integer.valueOf(atts.getValue(0)).intValue();
        colonne = Integer.valueOf(atts.getValue(1)).intValue();
        }
     
      if ("pixel".equals(name)){
        pixel = Double.valueOf(atts.getValue(0)).doubleValue();
      }
     
      if ("couchcach1".equals(name)){
        nbneurones = Double.valueOf(atts.getValue(0)).doubleValue();
        fonction = atts.getValue(1);
      }
     
      if ("couchcach2".equals(name)){
        nbneurones = Double.valueOf(atts.getValue(0)).doubleValue();
        fonction = atts.getValue(1);
      }
     
      if ("couchcach3".equals(name)){
        nbneurones = Double.valueOf(atts.getValue(0)).doubleValue();
        fonction = atts.getValue(1);
      }
     
      if ("couchcach4".equals(name)){
        nbneurones = Double.valueOf(atts.getValue(0)).doubleValue();
        fonction = atts.getValue(1);
      }
     
      if ("couchcach5".equals(name)){
        nbneurones = Double.valueOf(atts.getValue(0)).doubleValue();
        fonction = atts.getValue(1);
      }
     
      if ("output".equals(name)){
        nbneurones = Double.valueOf(atts.getValue(0)).doubleValue();
        fonction = atts.getValue(1);
      }
     
      if ("reco".equals(name)){
        vecteur_sequences_reco.clear();
      }
     
      if ("eta".equals(name)){
        eta = Double.valueOf(atts.getValue(0)).doubleValue();
        }
      if (name != "pixel"){
        System.out.println("Start of element: "+ name);
        System.out.println();
      }
    }
   
public void endElement (String uri, String name, String qName)
{
  if ("taille".equals(name)){
    taille = ligne * colonne;
    System.out.println("- taille = "+taille);
  }
 
  if ("pixel".equals(name)){
    image_courante.add(pixel);//Construction image
    //System.out.println("- Valeur du pixel = "+pixel);
  }
 
  if ("image".equals(name)){
    seq_courante.add(image_courante);//Construction sequence
    // Affichage de l'image ajoute
    System.out.println("On a ajoute l'image suivante");
    int i;
    for(i=0;i<ligne;i++){
      int j;
      for(j=0;j<colonne;j++){
        if (image_courante.get(j+i*3) == -1.0)
          System.out.print(". ");
        if (image_courante.get(j+i*3) == 1.0)
          System.out.print("# ");
      }
      System.out.println();
    }
  }
 
  if ("categorie".equals(name)){
    vecteur_sequences_appr.add(seq_courante);//Construction liste de sequence
   
    // Affichage de la sequence ajoutee
    System.out.println("On a ajoute la categorie contenant les images suivantes");
    int k;
    for(k=0;k<seq_courante.size();k++){
      int i;
      for(i=0;i<ligne;i++){
        int j;
        for(j=0;j<colonne;j++){
          if (seq_courante.get(k).get(j+i*3) == -1.0)
            System.out.print(". ");
          if (seq_courante.get(k).get(j+i*3) == 1.0)
            System.out.print("# ");
          }
        System.out.println();
        }
      System.out.println();
      }
    }
 
  if ("imagereco".equals(name)){
    vecteur_sequences_reco.add(image_courante);
  }
 
    if ("input".equals(name)){
      //Affichage des sequences d'apprentissage ajoutees
      System.out.println("On a ajoute le vecteur contenant les sequences suivantes classées par categorie");
    int l;
    for(l=0;l<vecteur_sequences_appr.size();l++){
      System.out.println("Categorie n°"+l+":");
      int k;
      for(k=0;k<vecteur_sequences_appr.get(l).size();k++){
        int i;
        for(i=0;i<ligne;i++){
          int j;
          for(j=0;j<colonne;j++){
            if (vecteur_sequences_appr.get(l).get(k).get(j+i*3) == -1.0)
              System.out.print(". ");
            if (vecteur_sequences_appr.get(l).get(k).get(j+i*3) == 1.0)
              System.out.print("# ");
            }
          System.out.println();
          }
        System.out.println();
        }
      }
  }
   
    if ("reco".equals(name)){
      // Affichage de la sequence ajoutee
    System.out.println("On a ajoute la categorie contenant les images suivantes");
    int k;
    for(k=0;k<vecteur_sequences_reco.size();k++){
      int i;
      for(i=0;i<ligne;i++){
        int j;
        for(j=0;j<colonne;j++){
          if (vecteur_sequences_reco.get(k).get(j+i*3) == -1.0)
            System.out.print(". ");
          if (vecteur_sequences_reco.get(k).get(j+i*3) == 1.0)
            System.out.print("# ");
          }
        System.out.println();
        }
      System.out.println();
      }
    }
 
  if ("couchcach1".equals(name)){
    int n = calcul_nbneurones(colonne,taille,nbneurones);
    Fonction f = reco_fct(fonction);
    cc1 = new Couche(n,f);
    System.out.println("- Fonction d'activation de la couche cachee n°1 = "+fonction);
    System.out.println("- Nombre de neurones de la couche cachee n°1 = "+n);
  }
 
  if ("couchcach2".equals(name)){
    int n = calcul_nbneurones(colonne,taille,nbneurones);
    Fonction f = reco_fct(fonction);
    cc2 = new Couche(n,f);
    System.out.println("- Fonction d'activation de la couche cachee n°2 = "+fonction);
    System.out.println("- Nombre de neurones de la couche cachee n°2= "+n);
  }
 
  if ("couchcach3".equals(name)){
    int n = calcul_nbneurones(colonne,taille,nbneurones);
    Fonction f = reco_fct(fonction);
    cc3 = new Couche(n,f);
    System.out.println("- Fonction d'activation de la couche cachee n°3 = "+fonction);
    System.out.println("- Nombre de neurones de la couche cachee n°3 = "+n);
  }
 
  if ("couchcach4".equals(name)){
    int n = calcul_nbneurones(colonne,taille,nbneurones);
    Fonction f = reco_fct(fonction);
    cc4 = new Couche(n,f);
    System.out.println("- Fonction d'activation de la couche cachee n°4 = "+fonction);
    System.out.println("- Nombre de neurones de la couche cachee n°4 = "+n);
  }
 
  if ("couchcach5".equals(name)){
    int n = calcul_nbneurones(colonne,taille,nbneurones);
    Fonction f = reco_fct(fonction);
    cc5 = new Couche(n,f);
    System.out.println("- Fonction d'activation de la couche cachee n°5 = "+fonction);
    System.out.println("- Nombre de neurones de la couche cachee n°5 = "+n);
  }
 
  if ("output".equals(name)){
    int n = vecteur_sequences_appr.size();
    Fonction f = reco_fct(fonction);
    output = new Couche(n,f);
    System.out.println("- Fonction d'activation de la couche de sortie = "+fonction);
    System.out.println("- Nombre de neurones de la couche de sortie = "+n);
  }
 
  if ("eta".equals(name)){
    System.out.println("- eta = "+eta);
    }
 
  if ("reseau".equals(name)){
    reseau = new ReseauFF(taille,eta);
   
    if (cc1 != null){
      reseau.add(cc1);
      if (cc2 != null){
        reseau.add(cc2);
        if (cc3 != null){
          reseau.add(cc3);
          if (cc4 != null){
            reseau.add(cc4);
            if (cc5 != null){
              reseau.add(cc5);
            }
          }
        }
      }
    }
   
    reseau.add(output);
  }
 
  // Affichage du parsage
  if (name != "pixel" ){ //  trop lourd pour les pixels
    System.out.println();
    System.out.println("End of element: "+name);
    System.out.println();
  }
}

public int getColonne() {
  return colonne;
}

public void setColonne(int colonne) {
  this.colonne = colonne;
}

public static double getEta() {
  return eta;
}

public static void setEta(double eta) {
  Chargeur.eta = eta;
}

public ReseauFF getReseau() {
  return reseau;
}

public void setReseau(ReseauFF reseau) {
  this.reseau = reseau;
}

public ArrayList<ArrayList<ArrayList<Double>>> getVecteur_sequences_appr() {
  return vecteur_sequences_appr;
}

public void setVecteur_sequences_appr(
    ArrayList<ArrayList<ArrayList<Double>>> vecteurSequencesAppr) {
  vecteur_sequences_appr = vecteurSequencesAppr;
}

public ArrayList<ArrayList<Double>> getVecteur_sequences_reco() {
  return vecteur_sequences_reco;
}

public void setVecteur_sequences_reco(
    ArrayList<ArrayList<Double>> vecteurSequencesReco) {
  vecteur_sequences_reco = vecteurSequencesReco;
}

public void characters (char ch[], int start, int length)

{/*
System.out.print("Characters:    \"");
for (int i = start; i < start + length; i++) {
    switch (ch[i]) {
    case '\\':
  System.out.print("\\\\");
  break;
    case '"':
  System.out.print("\\\"");
  break;
    case '\n':
  System.out.print("\\n");
  break;
    case '\r':
  System.out.print("\\r");
  break;
    case '\t':
  System.out.print("\\t");
  break;
    default:
  System.out.print(ch[i]);
  break;
* @param fct le nom de la fonction
    }
}
System.out.print("\"\n");*/
}

/**
* Retourne une fonction a partir d'une chaine de caractere
* @param fct le nom de la fonction
* @return la fonction
*/
public Fonction reco_fct (String fct){
  if("heaviside".equals(fct)){
    Fonction f = new Heaviside(-1,1);
    return f;
  }
  if("sigmoide".equals(fct)){
    Fonction f = new Sigmoide();
    return f;
  }
  if("identite".equals(fct)){
    Fonction f = new Identite();
    return f;
  }
  else
    return null;
}

/**
* Retourne un nombre de neurones multiple de la largeur
* @param colonne est la largeur de l'image
* @param taille est le nombre de neurones d'entree
* @param nbneurones est le pourcentage de neurones sur la couche
* @return un nombre de neurones multiple de la largeur
*/
public int calcul_nbneurones(int colonne,int taille,double nbneurones){
  int n = (int) (taille * nbneurones);
  int reste = n % colonne;
  if (reste == 0)
    return n;
  else
    return n-reste;
}
}
TOP

Related Classes of parser.Chargeur

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.