Vor dem Training ist es oft sinnvoll, die Eingaben und Ziele so zu skalieren, dass sie immer innerhalb eines bestimmten Bereichs liegen. Die Funktion mapminmax skaliert Eingaben und Ziele so, dass sie in den Bereich [-1,1] fallen. Der folgende Code veranschaulicht die Verwendung dieser Funktion.
[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
net = train(net,pn,tn);
Die ursprünglichen Eingänge und Ziele des Netzes sind durch die Matrizen p und t gegeben. Die normalisierten Eingänge und Ziele pn und tn, die zurückgegeben werden, fallen alle in das Intervall [-1,1]. Die Strukturen ps und ts enthalten die Einstellungen, in diesem Fall die Minimal- und Maximalwerte der ursprünglichen Eingänge und Ziele. Nachdem das Netz trainiert wurde, sollten die ps-Einstellungen verwendet werden, um alle zukünftigen Eingaben zu transformieren, die auf das Netz angewendet werden. Sie werden effektiv Teil des Netzes, genau wie die Netzgewichte und Verzerrungen.
Wenn mapminmax zur Skalierung der Ziele verwendet wird, dann wird der Ausgang des Netzes so trainiert, dass die Ausgaben im Bereich [-1,1] liegen. Um diese Ausgaben wieder in dieselben Einheiten zu konvertieren, die für die ursprünglichen Ziele verwendet wurden, benutzen Sie die ts-Einstellungen. Der folgende Code simuliert das Netz, das im vorherigen Code trainiert wurde, und konvertiert dann die Netzausgabe zurück in die ursprünglichen Einheiten.
an = sim(net,pn);
a = mapminmax('reverse',an,ts);
Die Netzausgabe an entspricht den normalisierten Zielen tn. Die nicht normalisierte Netzausgabe a besitzt dieselben Einheiten wie die ursprünglichen Ziele t.
Wenn mapminmax für die Vorverarbeitung der Daten des Trainingssatzes eingesetzt wird, dann sollten bei jeder Verwendung des trainierten Netzes mit neuen Eingaben diese mit den Minimal- und Maximalwerten vorverarbeitet werden, die für den in den Einstellungen ps gespeicherten Trainingssatz berechnet wurden. Der folgende Code wendet einen neuen Satz von Eingaben auf das bereits trainierte Netz an.
pnewn = mapminmax('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapminmax('reverse',anewn,ts);
Für die meisten Netze, darunter feedforwardnet, werden diese Schritte automatisch durchgeführt, so dass Sie nur noch den sim-Befehl verwenden müssen.