440 likes | 592 Views
Künstlich Neuronales Netz (KNN) zur Modellierung der magnetischen Flussdichte. M. Schneider, A. Lodwich, U. Lehmann, J. Brenig, D. Reinarz. Inhalt. Datenaufbereitung Training des KNN Test des KNN in MATLAB Test des KNN in Simulink Test des KNN in Simulink mit Daten aus dem Workspace
E N D
Künstlich Neuronales Netz (KNN) zur Modellierung der magnetischen Flussdichte M. Schneider, A. Lodwich, U. Lehmann, J. Brenig, D. Reinarz Schwebende Kugel – MATLAB/Simulink
Inhalt • Datenaufbereitung • Training des KNN • Test des KNN in MATLAB • Test des KNN in Simulink • Test des KNN in Simulink mit Daten aus dem Workspace • Quellenverzeichnis • Fragen Schwebende Kugel – MATLAB/Simulink
Technologieschema Komponenten des Regelkreises Regelstrecke Zeilenkamera/Messeinrichtung Verstärker/ Stellglied PC mit Regler Schwebende Kugel – MATLAB/Simulink
Schwebende Kugel im Magnetfeld Schwebende Kugel – MATLAB/Simulink
Video Schwebende Kugel – MATLAB/Simulink
Technologieschema (Animation) Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Tabelle A2 aus der Diplomarbeit „Schwebende Kugel“ von D. Reinarz (http://stud-in.fh-swf.de/Dirk.Reinarz/) Einheiten umrechnen!!! [mm] [m] [mT] [T] [V] [V] Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung • Tabelle A2 in der Diplomarbeit markieren, kopieren und in Excel einfügen • Einheiten prüfen und bei Bedarf umrechnen • Daten auf Vollständigkeit prüfen, evtl. Anfangsbedingungen einfügen • Daten aufteilen in Trainings-, Validierungs- und Testdaten • Daten sortieren und speichern Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Festlegen der Trainings-, Validierungs- und Testdaten! Tabelle mit allen Daten muss noch in eine für die NN-Toolbox passende Form gebracht werden! Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Benötigtes Format: • Spalte: Input 1: Spannung U [V] • Spalte: Input 2: Position Pos [m] • Spalte: Output: Magnetfeld B [T] ● ● ● -> Tabelle in die benötigte Form bringen ( z. B. Copy and Paste) Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Aufteilung in verschiedene Einzeltabellen für Training, Validierung und Test auf separaten Arbeitsblättern für die Weiterverarbeitung in MATLAB Markieren aller Trainingsdaten in der Tabelle Verknüpfen hat den Vorteil, dass Aktualisierungen mit übernommen werden!! Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Tabelle gesamt 4 Arbeitsblätter: Trainingsdaten Validierungsdaten Testdaten Spalte mit Ust in [V] Spalte mit B in [T] Spalte mit Pos in [m] Eingabe- und Ausgabewert des KNN müssen korrespondieren! Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Daten müssen in MATLAB in die entsprechende Matrix eingelesen werden Für MATLAB werden 6 Matrizen mit den entsprechenden Daten benötigt (z. B. input_train, input_valid, input_test, target_train, target_valid, target_test ). Insgesamt gibt es 126 Datensätzen! Nach der Aufteilung muss die Summe der Trainings-, Validierungs- und Testdatensätze 126 ergeben! Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Import über MATLAB - Funktion xlsread: >> input_train = xlsread('Daten_Excel','Trainingsdaten', 'A3:B102'); Die Daten der Felder A3 bis B102 des Arbeitsblattes „Trainingsdaten“ der Exceltabelle Daten_Excel wird als Matrix mit dem Namen input_train eingelesen ODER: input_train = xlsread(‘Daten_Excel‘, -1); -> Daten, die eingelesen werden sollen, können mit der Maus markiert werden -> beide Varianten: gleiches Ergebnis Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Die NN-Toolbox liest die Daten spaltenweise ein, d. h. die einzelnen Matrizen müssen transponiert werden, so dass pro Inputneuron bzw. Targetneuron eine Zeile entsteht. Hierfür die MATLAB-Funktion transpose nutzen Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Matrix mit 2 Zeilen und 100 Spalten Matrix mit 2 Zeilen und 18 Spalten Matrix mit 2 Zeilen und 8 Spalten Insgesamt gibt es 126 Datensätzen! Nach der Aufteilung muss die Summe der Trainings- (100), Validierungs- (18) und Testdatensätze (8) wieder 126 ergeben! Schwebende Kugel – MATLAB/Simulink
Datenaufbereitung Matrix mit 1 Zeile und 100 Spalten Matrix mit 1 Zeile und 18 Spalten Matrix mit 1 Zeile und 8 Spalten Insgesamt gibt es 126 Datensätzen! Nach der Aufteilung muss die Summe der Trainings- (100), Validierungs- (18) und Testdatensätze (8) 126 ergeben Schwebende Kugel – MATLAB/Simulink
KNN • „nntool“ über das „Command Window“ aufrufen • Die Inputs (3 St.) und Targets (3 St.) aus dem Workspace mit „Import“ in den „Data Manager“ importieren. • Im „Data Manager“ den Button „New Network“ betätigen, um ein Netzwerk zu erstellen. Dort können der Name, der Network Type, die Input Ranges, das Trainingsverfahren, die Anzahl der Layer, die Anzahl der Neuronen pro Layer und die Aktivierungsfunktion, etc. definiert werden. Der Input-Layer zählt hier nicht als Layer. Bevor das Netz mit „Create“ erstellt wird, kann es über „View“ angeschaut werden. Das ist gerade bei größeren Netzen sinnvoll. Schwebende Kugel – MATLAB/Simulink
KNN • Jetzt im „Data Manager“ das erstellte Netz auswählen und den Button „Train“ betätigen, um die Trainingsparameter einzustellen und die Matrizen mit den Trainings-, Validierungs- und Testdaten auszuwählen. • Initialisieren Sie vor dem Training die Gewichte. • Jetzt kann trainiert werden! • Die Fehlerkurve wird automatisch angezeigt. • Speichern der Zwischenergebnisse nicht vergessen! • Evtl. Training mit anderen Parametern wiederholen bzw. Netzarchitektur verändern, wenn die Werte der Fehlerkurven noch zu groß sind (vorher muss das Netz initialisiert werden: entweder auf die gleichen Werte wie beim 1. Trainingsversuch -> Revert Weights oder auf neue Werte -> Initialize Weights) Schwebende Kugel – MATLAB/Simulink
KNN >>nntool • KNN erstellen und KNN trainieren! • Trainingsverfahren: • traingd • traingdm • trainrp • trainlm • etc. • (Beschreibung der Trainingsverfahren unter HELP -> NNToolbox -> User Guide) • Nach erfolgreichem Training das KNN in Workspace exportieren für die weitere Bearbeitung. Schwebende Kugel – MATLAB/Simulink
KNN Architektur kann frei gewählt werden zum Beispiel 2 – 4 – 3 – 1 Schwebende Kugel – MATLAB/Simulink
Trainingseinstellungen Schwebende Kugel – MATLAB/Simulink
Trainingseinstellungen Geänderte Werte mit Set Input Range bestätigen Spätestens hier die „Input Ranges“ kontrollieren! Input 1 = Ust Welche möglichen Spannungen können auftreten? Input 2 = Pos Welche möglichen Positionen können auftreten? Wurden Sicherheiten eingebaut? Muss das KNN extrapolieren? Schwebende Kugel – MATLAB/Simulink
Trainingseinstellungen Trainingsverfahren kann frei gewählt werden hier als Beispiel Resilient Backpropagation(trainrp) Schwebende Kugel – MATLAB/Simulink
Fehlerkurven 2. Beispiel Levenberg-Marquardt backpropagation (trainlm) Schwebende Kugel – MATLAB/Simulink
Test des KNN in MATLAB Daten aus Excel • Magnetisches Verhalten • Abhängigkeit von Spannung Copy & Paste Schwebende Kugel – MATLAB/Simulink
Test des KNN in MATLAB KNN erzeugen Schwebende Kugel – MATLAB/Simulink
Test des KNN in MATLAB Training Schwebende Kugel – MATLAB/Simulink
Test des KNN in MATLAB MATLAB Skript Schwebende Kugel – MATLAB/Simulink
Test des KNN in MATLAB MatLab Skript 2Spannungen von 3.5 bis 5.5VEntfernungen 2 bis 12cm Schwebende Kugel – MATLAB/Simulink
Test des KNN in MATLAB Übertragungsfunktion vergleichen Originaldaten Gelerntes Verhalten Schwebende Kugel – MATLAB/Simulink
Test des KNN in Simulink >>gensim(net,st) net -- Neural network aus Workspace st -- Sample time (default = 1) st = -1 to get a continuously sampling network WICHTIG: Abtastzeiten für die beiden Inputs des KNN abgleichen! (Berechnung) Schwebende Kugel – MATLAB/Simulink
Test des KNN in Simulink Ust d Schwebende Kugel – MATLAB/Simulink
Simulink Synchronisation der beiden Blöcke!!! (sehr wichtig!!!) Welche Spannnungen Ust in [V] dienen als Input für das KNN? 17 Werte für die Spannung U von 0V bis 8V in Schritten von 0,5V 17*29 = 493 Werte als Simulationsdauer Die Spannung ist über einen gewissen Zeitraum konstant. Dieser Zeitraum ist abhängig von den möglichen Abständen. Hier in diesem Beispiel: d=[0 0.14] in Schritten von 0,05 29 Schritte von d für die Sample Time Welche Abstände d in [m] dienen als Input für das KNN? Schwebende Kugel – MATLAB/Simulink
Test des KNN in Simulink Ust [V] d [m] B [T] Schwebende Kugel – MATLAB/Simulink
Test des KNN in Simulink mit Daten aus dem Workspace Hier den Namen der Matrix eintragen, die die Daten für die Simulation enthält. In diesem Beispiel zur Demonstration die Trainingsdaten. Es kann aber auch eine neue Matrix mit dem gesamten Datensatz zur Simulation erstellt werden. Schwebende Kugel – MATLAB/Simulink
Test des KNN in Simulink mit Daten aus dem Workspace Das Simulink-Modell liest den Datensatz zeilenweise ein. Für das Simulink-Modell muss eine Zeitkomponente in die Matrix eingefügt werden (= 1. Spalte) Schwebende Kugel – MATLAB/Simulink
Test des KNN in Simulink mit Daten aus dem Workspace Magnetische Flussdichte B in [T] Sollwert Magnetische Flussdichte B in [T] Istwert Steuerspannung Ust in [V] Position Pos in [m] Schwebende Kugel – MATLAB/Simulink
Quellen • Neural Networks User's Guide (nnet.pdf) aus der MATLAB-Hilfe für die Neural Network Toolbox • Diplomarbeit „Fuzzy-Lageregelung einer schwebenden Kugel mittels Echtzeitbildverarbeitung“ von Dirk Reinarz, September 1997, http://stud-in.fh-swf.de/Dirk.Reinarz/ • Vorlesungsskript Prof. Lehmann Schwebende Kugel – MATLAB/Simulink
Fragen Vielen Dank für Ihre Aufmerksamkeit ! Schwebende Kugel – MATLAB/Simulink