Home Up Mail an Joachim Pimiskern Impressum

TFeedForward3

Eine Object Pascal - Klasse für Dreischicht-Backpropagation

Joachim Pimiskern. Freeware. Begonnen 22.12.1995 mit Turbo Pascal. Portiert nach Object Pascal (die Sprache von Borland-Delphi) am 7.4.1999.

Download

Konstruktor aufrufen

<Eingabe> ist die Anzahl der Neuronen der Eingabeschicht, <Hidden> die Anzahl der Neuronen der "verborgenen" Zwischenschicht, <Ausgabe> die Anzahl der Neuronen der Ausgabeschicht. <Eta> ist ein Parameter, der die Schrittweite beim Lernen angibt. 0.2 ist ein guter Ausgangswert für Experimente. <Filename> ist der Name einer Datei, in der man den Zustand des Neuronalen Netzes dauerhaft aufbewahren kann.

  uses feedfwd3;
  ...
  var NeuralNet: TFeedFwd3;
  ...
  NeuralNet := TFeedFwd3.Create(<Eingabe>,
                                <Hidden> ,
                                <Ausgabe>,
                                <Eta>);

  if (FileExists(<Filename>)) then
     NeuralNet.LoadFromFile(<Filename>);

Ein Trainingsschritt

Das Training besteht darin, daß man dem Neuronalen Netz Paare von Eingangsvektor und Ausgangsvektor präsentiert. Der untenstehende Code zeigt dies für ein solches Paar, aber in der Regel hat man viele Paare. Man kann solche Paare systematisch (z.B. der Reihe nach) oder aber zufällig wählen. Die Methode FeedForward läßt das Neuronale Netz den Eingabevektor von der Eingabeschicht bis zur Ausgabeschicht hindurchwandern. Dabei findet die eigentliche Informationsverarbeitung statt. In der Regel wird die Antwort des Neuronalen Netzes auf die jeweilige Eingabe vom Soll-Ausgangsvektor abweichen. Für jedes Neuron ergibt sich eine Differenz zwischen Sollwert und Istwert. Diese Differenz kann dazu verwendet werden, um das Neuronale Netz zu korrigieren, also Schwellwerte und Gewichte zu verändern, also einen Lernschritt zu machen. Diesen Lernschritt löst man mit FeedBackward aus.

  var i: integer;
  ...
  for i := 0 to <Eingabe> - 1 do
      NeuralNet.SetInput(i,<Eingabewert(i)>);

  for i := 0 to <Ausgabe> - 1 do
      NeuralNet.SetSollwert(i,<Ausgabewert(i)>);

  NeuralNet.FeedForward;
  NeuralNet.FeedBackward;

Kann-Phase

In der Kann-Phase zieht man Nutzen aus den Fähigkeiten des Neuronalen Netzes, ohne weitere Lernvorgänge zu aktivieren. Ein Eingabevektor wird gesetzt. Dieser wird mit FeedForward verarbeitet; an der Ausgabeschicht liest man mit GetOutput(i) das Ergebnis ab.

  var i: integer;
  ...
  for i := 0 to <Eingabe> - 1 do
      NeuralNet.SetInput(i,<Wert>);

  NeuralNet.FeedForward;

  for i := 0 to <Ausgabe> - 1 do
      TuWasMit(NeuralNet.GetOutput(i));

Destruktor aufrufen

Die Methode SaveToFile ermöglicht die Speicherung der Schwellwerte und Gewichte in einer Datei.

  NeuralNet.SaveToFile(<Filename>);
  NeuralNet.Free;

Home Up Mail an Joachim Pimiskern Impressum