Einschichtiges neuronales Netzwerk

Um ein einschichtiges neuronales Netzwerk zu implementieren, habe ich zwei Dateien.

 In: 0.832 64.643 0.818 78.843 Out: 0 0 1 0 0 1 

Das obige Format besteht aus 2 Dateien.

Das Endergebnis: "1 für eine bestimmte Klasse, zu der der entsprechende Eingang gehört, und" 0 für die anderen 2 Ausgänge.

Das Problem ist folgendes:

Ihr einschichtiges neuronales Netzwerk findet die Matrix A (3 x 2) und b (3 x 1 Vektor) in Y = A * X + b, wobei Y [C1, C2, C3] 'ist und X [x1, x2] ist. '.

Um das obige Problem mit dem neuronalen Netzwerk zu lösen, können wir die Gleichung umschreiben: Y = A '* X', wobei A '= [A b] (Matrix 3 durch 3) und X' - [x1, x2, 1] '

Jetzt können Sie ein neuronales Netzwerk mit drei Eingangsknoten (einen für x1, x2 und 1) und drei Ausgängen (C1, C2, C3) verwenden.

Die sich ergebenden 9-Gewichte (da wir 9 Verbindungen zwischen 3 Eingängen und 3 Ausgängen haben) sind den Elementen der Matrix A 'äquivalent.

Grundsätzlich versuche ich so etwas zu machen, 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 

Ich schreibe diese Funktion in eine andere Datei und rufe sie in meinem vorherigen Code auf.

 function result = calculateOutput (weights, x, y) s = x * weights(1) + y * weights(2) + weights(3); if s >= 0 result = 1; else result = -1; end 
-73
11 авг. eingestellt durch user414981 11 aug. 2010-08-11 09:02 '10 um 9:02 am 2010-08-11 09:02
ответ 1 Antwort

Ich kann verschiedene Probleme mit dem Code feststellen. Das Hauptproblem ist, dass das Ziel mehrere Klassen hat (nicht binär ). Daher müssen Sie entweder 3 Ausgangsknoten verwenden (einen für jede Klasse ( 1-aus-N-Codierung genannt )) oder einen Ausgangsknoten mit einer anderen Aktivierungsfunktion ( etwas könnte mehr sein als nur eine binäre Ausgabe von -1/1 oder 0/1)

In der folgenden Lösung hat Perzeptron die folgende Struktur:

2019

222
11 авг. Antwort gegeben Amro 11 aug. 2010-08-11 15:07 '10 am 15:07 2010-08-11 15:07