230 likes | 434 Views
Approximation einer Kennlinie mit einem KNN in MATLAB. Ulrich Lehmann, Johannes Brenig, Michael Schneider. Inhalt. Daten aus Excel importieren nntool Auswertung der Ergebnisse in Excel Simulink Quellenverzeichnis. Datenaufbereitung.
E N D
Approximation einer Kennlinie mit einem KNN in MATLAB Ulrich Lehmann, Johannes Brenig, Michael Schneider Einführung in MATLAB/NNToolbox
Inhalt • Daten aus Excel importieren • nntool • Auswertung der Ergebnisse in Excel • Simulink • Quellenverzeichnis Einführung in MATLAB/NNToolbox
Datenaufbereitung • Die Datenaufbereitung kann entweder in MATLAB (m-File) oder in Excel erfolgen • Die Datensätze müssen normiert und in Trainings-, Validierungs- und Testsdatensatz aufgeteilt werden Einführung in MATLAB/NNToolbox
Messwerte der Kennlinie Ua [V] Ue [V] Aus Ausarbeitung_KNN_Lichtregelstrecke Einführung in JavaNNS Version 1.1
Messwerte - normiert Diese Messwerte müssen für das Training des KNNs normiert werden. -> sigmoide Aktivierungsfunktion -> Normierung auf ein Intervall von [0,05 0,95] Ua [V] Ue [V] Einführung in JavaNNS Version 1.1
Trainingsdaten Testdaten Validierungsdaten Aufteilung in Trainings- Validierung- und Testdaten 14 Trainingsdatensätze 4 Validierungsdatensätze 2 Testdatensätze Ua [V] Ue [V] Einführung in JavaNNS Version 1.1
Daten aus Excel importieren Zwei Möglichkeiten: 1. über die Import data Funktion des Workspace 2. über die MATLAB- Funktionen „xlsread“ und „xlswrite“ die einen direkten Zugriff auf bestehende Excel Tabellen ermöglichen >> daten = xlsread(‘Dateiname.xls,-1‘); es werden nur die reinen Daten importiert Textanteile werden ignoriert !! Daten sinnvoll benennen !! >> xlswrite(‘Dateiname.xls‘, daten); Einführung in MATLAB/NNToolbox
Daten des Workspace speichern Daten aus Excel importieren Alle notwendigen Daten von Excel in den Workspace von MATLAB importieren. Jetzt können die Daten im Workspace für ein späteres Training gespeichert werden. Einführung in MATLAB/NNToolbox
nntool im „Command Window“ von MATLAB eingeben Alle notwendigen Daten vom Workspace in die NNToolbox importieren. Achtung: Unterscheidung von Input und Target Einführung in MATLAB/NNToolbox
nntool • Name für das Netz wählen • Wertebereich wählen ( [0 1] ) • Trainingsfunktion wählen • Lernfunktion wählen • Fehlerfunktion wählen • Anzahl der Layer wählen (Input-Layer zählt nicht als Layer) hier: 1 Hiddenlayer mit 4 Neuronen und 1 Outputlayer mit einem Neuron • Hiddenlayer mit „logsig“ aktivieren und Outputlayer linear aktivieren • wenn alle Einstellungen getroffen sind • mit „Create“ das Netz erstellen Einführung in MATLAB/NNToolbox
nntool Einführung in MATLAB/NNToolbox
nntool - Trainings-, Validierung- und Testdaten auswählen - Name für Trainingsergebnis übernehmen oder ändern • Trainingsepochen wählen z. B. 50000 • Trainingsfehler (goal) = 0 • Lernrate (lr) wählen • max_fail: Wieviel Epochen soll nach dem minimalen Validierungsfehler noch trainiert werden? • min_grad: kleinster Gradient • show: Nach wie viel Epochen soll die Fehlerkurve aktualisiert werden? • time: zeitliche Beschränkung für das Training? Einführung in MATLAB/NNToolbox
nntool Input Ranges überprüfen! Vor jedem Training das Netz initialisieren! Jetzt das Training starten unter „Train“ mit „Train Network“. Einführung in MATLAB/NNToolbox
nntool • Sobald beim Training Datensätze zur Validierung verwendet werden, nutzt MATLAB diese, um ein Auswendiglernen des Netzes zu verhindern -> wenn der Validierungsfehler steigt wird das Training abgebrochen (early stopping) • Über den Parameter „max_fail“ lässt sich die Anzahl der Epochen, die bei steigendem Validierungsfehler weiter trainiert werden sollen, einstellen • ABER: Ergebnis ist immer das mit dem kleinsten Validierungsfehler! • Netz wird zwar weiter trainiert, aber wenn der Validierungsfehler nicht sinkt, wird das Netz immer mit den Werten beim kleinsten vorkommenden Validierungsfehler gespeichert Einführung in MATLAB/NNToolbox
nntool Das Training wurde in diesem Beispiel nach 16910 Epochen beendet, da der Validierungsfehlernach 6910 Epochen am geringsten war und „max_fail“auf 10000 eingestellt war. Das KNN arbeitet mit dem Ergebnis nach 6910 Epochen. Auswertung: Die Simulation jeweils für die Trainings-, Validierungs- und Testdaten durchführen und die Ergebnisse speichern Einführung in MATLAB/NNToolbox
Auswertung der Ergebnisse in Excel Wichtig: Zur Auswertung in Excel werden die Zeilenvektoren benötigt, in MATLAB selbst Spaltenvektoren -> Daten transponieren!!! xlswrite(filename, M, 'range') -> z.B. xlswrite('Auswertung.xls', transpose(Kennlinie_input_train), 'A2:A15'); Einführung in MATLAB/NNToolbox
Simulink Ziel: Darstellung der Trainingsdaten und der trainierten Kennlinie in einem Diagramm. Einführung in MATLAB/NNToolbox
900 Simulink Vergleich von Trainingsdaten und Vorhersage. Einführung in MATLAB/NNToolbox
Simulink Einführung in MATLAB/NNToolbox
Ergebnis des KNN (gelber Graph) Ergebnis der Lookup-Table (violetter Graph) Simulink Einführung in MATLAB/NNToolbox
Quellen • MATLAB-Handbuch • „Simulation neuronaler Netze“ von Andreas Zell • Vorlesungsskript Prof. Lehmann Einführung in MATLAB/NNToolbox
Vielen Dank für Ihre Aufmerksamkeit ! Einführung in MATLAB/NNToolbox