Main Content

mapminmax

Verarbeiten von Matrizen durch Zuordnung der Minimal- und Maximalwerte der Zeilen zu [-1 1]

Beschreibung

Beispiel

Tipp

Um Daten für Deep-Learning-Workflows neu zu skalieren, verwenden Sie das Namenswertepaar der Normalisierung für die Eingangsschicht.

[Y,PS] = mapminmax(X,YMIN,YMAX) nimmt eine N-mal-Q-Matrix, X und optional einen Mindest- und einen Höchstwert für jede Zeile von Y, YMIN und YMAX und gibt eine N-mal-Q-Matrix, Y und eine Prozesseinstellung, die eine konsistente Verarbeitung von Werten ermöglicht, PS, zurück.

mapminmax verarbeitet Matrizen, indem es die Minimal- und Maximalwerte jeder Zeile auf [YMIN, YMAX] normalisiert.

[Y,PS] = mapminmax(X,FP) nimmt Parameter als Struct: FP.ymin, FP.ymax.

Y = mapminmax('apply',X,PS) gibt Y zurück, wenn X und Einstellungen PS gegeben sind.

X = mapminmax('reverse',Y,PS) gibt X zurück, wenn Y und Einstellungen PS gegeben sind.

dx_dy = mapminmax('dx_dy',X,Y,PS) gibt die umgekehrte Ableitung zurück.

Beispiele

alle reduzieren

Dieses Beispiel zeigt, wie eine Matrix so formatiert werden kann, dass die Minimal- und Maximalwerte jeder Zeile dem Standardintervall [-1,+1] zugeordnet werden.

x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0]
[y1,PS] = mapminmax(x1)

Wenden Sie anschließend die gleichen Verarbeitungseinstellungen auf neue Werte an.

x2 = [5 2 3; 1 1 1; 6 7 3; 0 0 0]
y2 = mapminmax('apply',x2,PS)

Kehren Sie die Verarbeitung von y1 um, damit Sie wieder x1 erhalten.

x1_again = mapminmax('reverse',y1,PS)

Eingabeargumente

alle reduzieren

Matrix, die Sie verarbeiten wollen, angegeben als N-mal-Q-Matrix.

Minimalwert für jede Zeile der Ausgangsmatrix Y, angegeben als Skalar.

Maximalwert für jede Zeile der Ausgangsmatrix Y, angegeben als Skalar.

Ausgangsargumente

alle reduzieren

Verarbeitete Matrix, zurückgegeben als N-mal-Q-Matrix.

Prozesseinstellungen, die eine konsistente Verarbeitung von Werten ermöglichen, zurückgegeben als Struktur.

Mehr über

alle reduzieren

Normalisieren von Eingaben und Zielen mithilfe von mapminmax

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.

Algorithmen

Es wird angenommen, dass X nur endliche reelle Werte besitzt und dass die Elemente jeder Zeile nicht alle gleich sind. (Falls xmax=xmin oder wenn entweder xmax oder xmin nicht endlich sind, dann gilt y=x und es findet keine Veränderung statt.)

y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;

Versionsverlauf

Eingeführt in R2006a