Neuronale Netze Aufgaben 2

Neuronale Netze Aufgaben 2 Dipl.-Inform. Martin Lösch [email protected] (0721) – 608 45944 Aufgabe 3: Netz von Perzeptronen •  Die Verknüpfung m...
Author: Elvira Simen
16 downloads 0 Views 317KB Size
Neuronale Netze Aufgaben 2 Dipl.-Inform. Martin Lösch [email protected] (0721) – 608 45944

Aufgabe 3: Netz von Perzeptronen •  Die Verknüpfung mehrerer Perzeptronen zu einem Netz erlaubt die Lösung auch komplexerer Probleme als nur die linear separierbaren. •  Löse mit Hilfe eines Netzes von mehreren Perzeptronen das dargestellte Klassifikationsproblem (2 diskrete Eingänge, mögliche Werte: {0, 1, 2, 3}). •  Aufbau der Lösung: 2 Eingaben, das eigentliche Netz von Perzeptronen, pro zu erkennender Klasse je ein x 1 Ausgabe-Perzeptron. be

x2 Dipl.-Inform. Martin Lösch Labor „Wissensbasierte Systeme“

Neuronale Netze – Aufgaben 2

a g f

Au

2

Lösung Aufgabe 3 (1) namespace FL = Flood; FL::Perceptron ex3Horiz(2), ex3Diag(2), ex3BlackCross(2), ex3GreenCircle(2), ex3BlueSquare(2); void initExercise3Perceptrons() { ex3Horiz.set_activation_function(FL::Perceptron::Linear); [...] ex3Horiz.set_bias(1.5); FL::Vector ex3hWeights(2); ex3hWeights[0] = 0.0; ex3Horiz.set_synaptic_weights(ex3hWeights);

ex3hWeights[1] = -1.0;

ex3Diag.set_bias(-2.25); FL::Vector ex3dWeights(2); ex3dWeights[0] = 0.5; ex3Diag.set_synaptic_weights(ex3dWeights);

ex3dWeights[1] = 0.5;

ex3BlackCross.set_bias(-0.5); FL::Vector ex3bcWeights(2); ex3bcWeights[0] = 1.0; ex3BlackCross.set_synaptic_weights(ex3bcWeights); ex3GreenCircle.set_bias(0.25); FL::Vector ex3gcWeights(2); ex3gcWeights[0] = -0.5; ex3GreenCircle.set_synaptic_weights(ex3gcWeights); ex3BlueSquare.set_bias(-0.5); FL::Vector ex3bsWeights(2); ex3bsWeights[0] = 0.0; ex3BlueSquare.set_synaptic_weights(ex3bsWeights); }

Dipl.-Inform. Martin Lösch Labor „Wissensbasierte Systeme“

Neuronale Netze – Aufgaben 2

ex3bcWeights[1] = 0.0;

ex3gcWeights[1] = -0.5;

ex3bsWeights[1] = 1.0;

3

Lösung Aufgabe 3 (1) void calculateExercise3(double* signals) { FL::Vector inputSignals(2); inputSignals[0] = signals[0]; inputSignals[1] = signals[1]; double horizRes = ex3Horiz.calculate_output (inputSignals); inputSignals[0] = signals[0]; inputSignals[1] = signals[1]; double diagRes = ex3Diag.calculate_output (inputSignals); inputSignals[0] = horizRes; inputSignals[1] = diagRes; double bcRes = ex3BlackCross.calculate_output (inputSignals); inputSignals[0] = horizRes; inputSignals[1] = diagRes; double gcRes = ex3GreenCircle.calculate_output (inputSignals); inputSignals[0] = horizRes; inputSignals[1] = diagRes; double bsRes = ex3BlueSquare.calculate_output (inputSignals); cout