Przykład implementacji sieci neuronowej - ocena.

0
public class SiecNeuronowa {

    
    private static class Neuron{
        
        double netA;                        // sygnały dla neuronów w warstwie ukrytej
        double netB;                                    
        
        double x0 = 1.0;               
        double x1,x2,x3;                       // sygnały z warstwy wejściowej
        double w0a,w0b;                        // wagi połączeń między neuronami
        double w1a, w1b;                                
        double w2a,w2b;
        double w3a,w3b;
        double w0z,waz,wbz; // wagi połączeń między neuronami warstwy ukrytej a neuronem wyjściowym "Z"
        
        Neuron(double x1,double x2,double x3
                                  ,double w0a, double w0b, double w1a,double w1b,double w2a,double w2b
                                  ,double w3a, double w3b)
        {
                            this.w0a=w0a;   //this.w0z=w0z;   this.w0z=w0z;
            this.x1=x1;     this.w1a=w1a;   this.w1b=w1b;   //this.waz=waz;
            this.x2=x2;     this.w2a=w2a;   this.w2b=w2b;   //this.wbz=wbz;
            this.x3=x3;     this.w3a=w3a;   this.w3b=w3b; 
            
            
        }
        
        public double netA(){
            netA = (w0a*x0)+(w1a*x1)+(w2a*x2)+(w3a*x3);
            return netA;
        }
        
        public double netB(){
            netB = (w0b*x0)+(w1b*x1)+(w2b*x2)+(w3b*x3);
            return netB;
        }
    }
    
    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Neuron A = new Neuron(0.4,0.2,0.7,0.5,0.7,0.6,0.9,0.8,0.8,0.6,0.4);
       System.out.print(A.netA()+"\n"+A.netB());
    }
}

To mój prototypowy program dla na razie dwóch neuronów z warstwy ukrytej.
Wyniki zgodne z przykł. książkowym - netA = 1.32; netB = 0.8;
W póżniejszym czasie przeciąże parę metod i konstruktory.
Wygląda nieżle - chyba, ale prosze o ocenę. Jestem laikiem w sprawach inżynierii oprogramowania.
Jak to ulepszyć? Oczywiście pod względem dopisania funkcji aktywacji i propagacji wstecznej.

0

A jednak był błąd. A program nie wywalał sie. nie dopisałem jednego argumentu

this.w0b=w0b;

i drugi wynik neta był błędny.
powinno być:netB = 1.500.
pozdrawiam

0

Nie no to jest tragedia i bezsens. A jak ktoś będzie chciał mieć 700 neuronów i 10 wadstw to co? To się obstrasz na miętowo. Napisz to od nowa, ty razem biorąc pod uwagę

  • możliwość posiadania n warstw
  • możliwość posiadania m neuronów w każdej warstwie
  • możliwość posiadania różnej funkcji aktywacji dla każdego neuronu
  • możliwość posiadania biasu dla każdej warstwy
    ...
    Możesz rzucić okiem na to: https://github.com/Pharisaeus/Neural ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1