Main Content

mapminmax

행렬의 행 최솟값과 최댓값을 [-1 1]로 매핑하여 행렬 처리

설명

예제

딥러닝 워크플로를 위한 데이터를 다시 스케일링하려면 입력 계층에 Normalization 이름-값 쌍을 사용하십시오.

[Y,PS] = mapminmax(X,YMIN,YMAX)N×Q 행렬 X와 선택적으로 Y의 각 행에 대한 최솟값과 최댓값 YMINYMAX를 받습니다. 그런 다음 N×Q 행렬 Y와 함께, 값을 일관되게 처리할 수 있는 처리 설정 PS를 반환합니다.

mapminmax는 행렬의 각 행의 최솟값과 최댓값을 [YMIN, YMAX]로 정규화하여 행렬을 처리합니다.

[Y,PS] = mapminmax(X,FP)는 파라미터를 구조체 FP.ymin, FP.ymax로 받습니다.

Y = mapminmax('apply',X,PS)X와 설정 PS를 받아서 Y를 반환합니다.

X = mapminmax('reverse',Y,PS)Y와 설정 PS를 받아서 X를 반환합니다.

dx_dy = mapminmax('dx_dy',X,Y,PS)는 역도함수를 반환합니다.

예제

모두 축소

이 예제에서는 각 행의 최솟값과 최댓값이 디폴트 구간 [-1,+1]로 매핑되도록 행렬의 형식을 지정하는 방법을 보여줍니다.

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

다음으로, 새 값에 동일한 처리 설정을 적용합니다.

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

y1의 처리 과정을 역으로 하여 x1을 다시 얻습니다.

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

입력 인수

모두 축소

처리할 행렬로, N×Q 행렬로 지정됩니다.

출력 행렬 Y의 각 행의 최솟값으로, 스칼라로 지정됩니다.

출력 행렬 Y의 각 행의 최댓값으로, 스칼라로 지정됩니다.

출력 인수

모두 축소

처리된 행렬로, N×Q 행렬로 반환됩니다.

값이 일관적으로 처리되도록 하는 처리 설정으로, 구조체로 반환됩니다.

세부 정보

모두 축소

mapminmax를 사용하여 입력값과 목표값 정규화하기

훈련 전에 입력값과 목표값이 항상 지정된 범위에 속하도록 스케일링하는 것이 유용한 경우가 많습니다. 함수 mapminmax는 입력값과 목표값이 [–1,1] 범위에 속하도록 스케일링합니다. 다음 코드는 이 함수를 사용하는 방법을 보여줍니다.

[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
net = train(net,pn,tn);

신경망의 원래 입력값과 목표값은 행렬 pt에 있습니다. 반환되는 정규화된 입력값과 목표값 pntn은 모두 [–1,1] 구간에 속합니다. 구조체 psts에는 설정값이 들어 있습니다. 이 경우에는 원래 입력값과 목표값의 최솟값과 최댓값이 됩니다. 신경망을 훈련시킨 후, 향후 신경망에 적용할 입력값은 ps 설정을 사용해 변환해야 합니다. 설정은 신경망 가중치와 편향처럼 실질적으로 신경망의 일부가 됩니다.

목표값을 스케일링하는 데 mapminmax가 사용된 경우, 신경망의 출력값은 [–1,1] 범위에 속하는 출력값을 생성하도록 훈련됩니다. 이러한 출력값을 원래 목표값에 사용된 것과 동일한 단위로 다시 변환하려면 설정 ts를 사용하십시오. 다음 코드는 이전 코드에서 훈련된 신경망을 시뮬레이션한 다음 신경망 출력값을 원래 단위로 다시 변환합니다.

an = sim(net,pn);
a = mapminmax('reverse',an,ts);

신경망 출력값 an은 정규화된 목표값 tn에 대응됩니다. 정규화되지 않은 신경망 출력값 a의 단위는 원래 목표값 t의 단위와 같습니다.

훈련 세트 데이터를 전처리하는 데 mapminmax가 사용된 경우, 훈련된 신경망에서 새로운 입력값을 사용할 때마다 새로운 입력값을 설정 ps에 저장된 훈련 세트에 대해 계산된 최솟값과 최댓값을 사용하여 전처리해야 합니다. 다음 코드는 이미 훈련된 신경망에 새로운 입력값 세트를 적용합니다.

pnewn = mapminmax('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapminmax('reverse',anewn,ts);

feedforwardnet을 비롯한 대부분의 신경망에서 이러한 단계가 자동으로 수행되므로 사용자는 sim 명령을 사용하기만 하면 됩니다.

알고리즘

X는 유한한 실수 값만 갖고 각 행의 요소가 모두 같지는 않다고 가정합니다. (xmax=xmin이거나 xmax 또는 xmin이 유한하지 않으면 y=x이고 아무것도 바뀌지 않습니다.)

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

버전 내역

R2006a에 개발됨

참고 항목

| |