Single-layer neural network

Für die Implementierung von single-layer neural network, ich habe zwei Daten-Dateien.

In:
    0.832 64.643
    0.818 78.843

Out:
    0 0 1
    0 0 1

Oben ist das format von 2 Daten-Dateien.

Ziel Ausgang ist "1" für eine bestimmte Klasse, die die entsprechende Eingabe gehört, und "0" für die restlichen 2 Ausgänge.

Das problem ist wie folgt:

Ihre single-layer neuronale Netzwerk wird
finden (3 von 2 matrix) und b (3, indem Sie 1
Vektor) in Y = A*X + b wobei Y [C1,
C2, C3]' und X [x1, x2]'.

Um das problem zu lösen, die oben mit einem
neuronales Netz, wir können wieder schreiben
Gleichung wie folgt: Y = A' * X', wo
A' = [A b] (3 x 3 matrix) und X' ist
[x1, x2, 1]'

Nun können Sie mit Hilfe eines neuronalen Netzes mit
drei input-Knoten (einen für x1, x2 und
1 jeweils) und drei Ausgänge (C1,
C2, C3).

Den daraus resultierenden 9 (da wir 9
verbindungen zwischen den 3 Eingänge und 3
Ausgänge) GEWICHTE entspricht
Elemente Einer matrix.

Im Grunde genommen, versuche ich, so etwas zu tun, aber es funktioniert nicht:

function neuralNetwork   
    load X_Q2.data
    load T_Q2.data
    x = X_Q2(:,1);
    y = X_Q2(:,2);

    learningrate = 0.2;
    max_iteration = 50;

    % initialize parameters
    count = length(x);
    weights = rand(1,3); % creates a 1-by-3 array with random weights
    globalerror = 0;
    iter = 0;
    while globalerror ~= 0 && iter <= max_iteration
        iter = iter + 1;
        globalerror = 0;
        for p = 1:count
            output = calculateOutput(weights,x(p),y(p));
            localerror = T_Q2(p) - output
            weights(1)= weights(1) + learningrate *localerror*x(p);
            weights(2)= weights(1) + learningrate *localerror*y(p);
            weights(3)= weights(1) + learningrate *localerror;
            globalerror = globalerror + (localerror*localerror);
        end 
    end 

Schreibe ich diese Funktion in eine andere Datei und der Aufruf in meinem vorherigen code.

function result = calculateOutput (weights, x, y)
    s = x * weights(1) + y * weights(2) + weights(3);
    if s >= 0
        result = 1;
    else
        result = -1;
    end
InformationsquelleAutor user414981 | 2010-08-11
Schreibe einen Kommentar