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.