Bevor durch einen Aufruf des Skripts trainieren.ps1 mit dem Trainieren des Netzes begonnen werden kann, ist eine Benutzerschnittstelle (Lernschnittstelle) einzurichten. Sie wird durch die Textdatei lernPaare.txt im Daten-Verzeichnis realisiert. In dieser Datei, die ggf. erst noch erzeugt werden muss, sind Vektorpaare anzugeben, deren erster ein Eingabevektor und deren zweiter der zugehörige Zielvektor ist. Diese Paare werden beim Trainieren der Reihe nach abgearbeitet. Im Kapitel 14 (Programmauflistungen und Literaturhinweise) kann beispielhaft eine lernPaare.txt-Datei im PDF-Format abgerufen werden. Für ihren Aufbau gilt:
Eine minimale lernPaare.txt-Datei hat genau eine Zeile, die folgendermaßen aussehen könnte:
Sie gehört zu einem Netz mit 4 Neuronen in der Ein- und 2 in der Ausgabeschicht. Ob es versteckte Schichten gibt, ist hier nicht erkennbar. Der Zeileninhalt fordert, dass das Netz so trainiert werden soll, dass bei Eingabe des Vektors (0,99 0,01 0,99 0,01) der Vektor (0,50 0,50) ausgegeben wird.
Beim Aufruf des Skripts trainieren.ps1 wird die Anzahl der Lernschritte (runs) festgelegt, die angibt, wie oft die LernPaare aus der Datei lernPaare.txt abzuarbeiten sind. Diese Anzahl steht voreingestellt auf 1. Dieser Wert wird verwendet, wenn das Skript unparametrisiert aufgerufen wird. Wird beim Aufruf als Argument eine positive ganze Zahl angegeben, dann ist das die aktuelle Anzahl an durchzuführenden Lernschritten.
Das Skript beginnt mit einigen Vorbereitungsarbeiten. Zunächst wertet es die beim Einrichten des Netzes entstandene Datei matKonfig.kfg mit der aktuellen Matrizenbeschreibung aus. Danach kopiert es die ebenfalls beim Einrichten erzeugten Dateien mit den Startgewichten in Dateien mit den Namen gew0.mat, gew1.mat usw. Mit diesen Dateien arbeitet das Netz. Durch dieses Vorgehen wird erreicht, dass Experimentreihen mit dem Netz der Vergleichbarkeit wegen stets mit denselben Gewichten beginnen. Als Nächstes werden diese Gewichtsdateien eingelesen und in PowerShell-Matrizen, das sind zweidimensionale Double-Arrays, gespeichert.
Jetzt wird die Benutzerschnittstelle lernPaare.txt mit den zu erlernenden Paaren aus Eingabe- und zugehörigen Zielvektoren ausgewertet. Als letzte Vorbereitungsarbeit wird die Schrittweite alpha für den Gradientenabstieg aus der Konfigurationsdatei netzKonfig.txt gelesen. Der hier verwendete Wert von 0.1 ist ein Erfahrungswert und kann und soll in die Experimente eingehen. (Vgl. dazu das Buch von Rashid im Kapitel 14 (Programmauflistungen und Literaturhinweise).)
Das Trainieren selbst folgt dem hier als Pseudocode beschriebenen Schema:
Es ist nicht nötig, den Fehler auch über die Eingabeschicht zurückzupropagieren, weil es keine Gewichtsmatrix gibt, in die er eingehen könnte. Nach dem Trainieren des Netzes werden die Gewichtsmatrizen mit ihren jetzt modifizierten Gewichten in ihre ursprünglichen Dateien im Daten-Verzeichnis zurückgeschrieben und ersetzen diese.
Als Beispiel soll das im letzten Kapitel eingerichtete vierschichtige Netz trainiert und als Erstes die Datei lernPaare.txt mit einem Lernpaar belegt und in das Daten-Verzeichnis gebracht werden. Das Netz verlangt fünfstellige Eingabe- und siebenstellige Ausgabevektoren. Für das Trainierbeispiel erhält die Datei folgenden Inhalt:
Dann wird das Netz mit 500 Lernschritten (runs) trainiert, und auch hier ist PS7> (mit einer Wortlücke am Ende) das Promptzeichen der PowerShell:
Das Skript trainieren.ps1 und die von ihm verwendeten Funktionen im Skript netzFktn.ps1 können als PDF-Dateien im Kapitel 14 (Programmauflistungen und Literaturhinweise) abgerufen werden.