Main Content

dlarray

사용자 지정 훈련 루프를 위한 딥러닝 배열

설명

딥러닝 배열은 사용자 지정 훈련 루프를 위해 선택적 데이터 형식 레이블을 사용하여 데이터를 저장하고, 함수가 자동 미분을 통해 도함수를 계산하고 사용할 수 있도록 합니다.

대부분의 딥러닝 작업의 경우, 사전 훈련된 신경망을 사용하고 이를 사용자 자신의 데이터에 맞게 적응시킬 수 있습니다. 새로운 영상 세트를 분류할 수 있도록 전이 학습을 사용하여 컨벌루션 신경망을 다시 훈련시키는 방법을 보여주는 예제는 새로운 영상을 분류하도록 딥러닝 신경망 훈련시키기 항목을 참조하십시오. 또는 layerGraph 객체를 trainNetwork 함수 및 trainingOptions 함수와 함께 사용하여 신경망을 처음부터 만들고 훈련시킬 수 있습니다.

trainingOptions 함수가 작업에 필요한 훈련 옵션을 제공하지 않는다면 자동 미분을 사용하여 사용자 지정 훈련 루프를 만들 수 있습니다. 자세한 내용은 사용자 지정 훈련 루프를 위한 딥러닝 신경망 정의하기 항목을 참조하십시오.

생성

설명

예제

dlX = dlarray(X)X를 나타내는 dlarray 객체를 반환합니다. Xdlarray이면 dlXX의 복사본입니다.

예제

dlX = dlarray(X,fmt)fmt의 데이터 형식에 따라 차원 레이블을 사용하여 dlX의 데이터 형식을 지정합니다. 차원 레이블은 함수 간에 딥러닝 데이터를 전달하는 데 도움이 됩니다. 차원 레이블에 대한 자세한 내용은 사용법 항목을 참조하십시오. X가 형식이 지정된 dlarray이면 fmt가 기존 형식을 바꿉니다.

예제

dlX = dlarray(v,dim)은 벡터 v와 단일 문자 형식 dim을 받고 열 벡터 dlarray를 반환합니다. dlX의 첫 번째 차원은 차원 레이블 dim을 가지고 두 번째(한원소) 차원은 차원 레이블 'U'를 가집니다.

입력 인수

모두 확장

데이터 배열로, double형 또는 single형 숫자형 배열, logical형 배열, gpuArray 객체, 또는 dlarray 객체로 지정됩니다. X는 희소 형식이 아닌 비희소 형식이어야 합니다.

예: rand(31*23,23)

데이터형: single | double | logical
복소수 지원 여부:

데이터 형식으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 문자열의 각 문자는 다음 차원 레이블 중 하나여야 합니다.

  • "S" — 공간

  • "C" — 채널

  • "B" — 배치

  • "T" — 시간

  • "U" — 지정되지 않음

"S" 레이블 및 "U" 레이블의 개수를 원하는 대로 지정할 수 있습니다 "C", "B", "T" 레이블 각각에 대해 최대 한 개를 지정할 수 있습니다.

fmt의 각 요소는 입력 데이터의 매칭되는 차원에 레이블을 지정합니다. fmt가 나열된 순서('S' 다음에 'C'가 오는 등의 순서임)와 맞지 않으면, dlarray는 데이터 저장을 변경하지 않고 순서와 일치하도록 fmt와 데이터를 암묵적으로 치환합니다.

fmt는 적어도 입력 데이터의 차원 수와 같은 개수의 차원 레이블을 포함해야 합니다. 이 차원 레이블 개수보다 많이 지정하면 dlarray는 추가 레이블에 대해 빈(한원소) 차원을 생성합니다.

다음 표는 일반적인 유형의 데이터에 권장되는 데이터 형식을 나타냅니다.

데이터
형태데이터 형식
2차원 영상

h×w×c×n 숫자형 배열로, 여기서 h, w, c, n은 각각 영상의 높이, 너비, 채널 개수, 관측값의 개수입니다.

"SSCB"
3차원 영상h×w×d×c×n 숫자형 배열로, 여기서 h, w, d, c, n은 각각 영상의 높이, 너비, 깊이, 채널 개수, 영상 관측값의 개수입니다."SSSCB"
벡터 시퀀스

c×s×n 행렬로, 여기서 c는 시퀀스의 특징 개수이고 s는 시퀀스 길이, n은 시퀀스 관측값의 개수입니다.

"CTB"
2차원 영상 시퀀스

h×w×c×s×n 배열로, 여기서 h, w, c는 각각 영상의 높이, 너비, 채널 개수이고 s는 시퀀스 길이, n은 영상 시퀀스 관측값의 개수입니다.

"SSCTB"
3차원 영상 시퀀스

h×w×d×c×s×n 배열로, 여기서 h, w, d, c는 각각 영상의 높이, 너비, 깊이, 채널 개수이고, s는 시퀀스 길이, n은 영상 시퀀스 관측값의 개수입니다.

"SSSCTB"
특징c×n 배열로, 여기서 c는 특징의 개수이고 n은 관측값의 개수입니다."CB"

데이터 벡터로, double형 또는 single형의 숫자형 벡터, 논리형 벡터 또는 dlarray 벡터 객체로 지정됩니다. 여기서 "벡터"는 정확히 하나의 비한원소 차원을 갖는 임의의 배열을 의미합니다.

예: rand(100,1)

차원 레이블로, fmt에 허용되는 유형의 단일 문자로 지정됩니다.

예: "S"

예: 'S'

출력 인수

모두 확장

딥러닝 배열로, dlarray 객체로 반환됩니다. dlXdlgradientdlfeval을 사용하여 자동 미분을 활성화합니다. fmt 인수를 제공하면 dlX가 레이블을 갖습니다.

  • X가 숫자형 배열 또는 논리형 배열이면 dlX가 배열의 데이터를 포함하며, 그 순서는 fmt의 데이터 형식으로 인해 재정렬될 수 있습니다.

  • XgpuArray이면 dlX의 데이터도 GPU에 있습니다. dlX를 사용한 후속 계산은 GPU에서 수행됩니다.

사용

dlarray 데이터 형식을 사용하면 다음 표에 있는 함수를 실행할 때 데이터가 적절한 형태를 갖도록 보장할 수 있습니다.

함수연산유효성 검사 대상 입력 차원크기가 영향을 받는 입력 차원
avgpool풀 크기 파라미터로 정의된 이동 사각형(또는 직육면체) 공간('S') 영역에 대해 입력 데이터의 평균을 계산합니다.'S''S'
batchnorm입력 데이터의 각 채널('C')에 포함된 값을 정규화합니다.'C' 
crossentropy배치('B') 차원의 크기로 평균을 구한, 추정값과 목표값 사이의 교차 엔트로피를 계산합니다.'S', 'C', 'B', 'T', 'U'(추정값과 목표 배열은 크기가 동일해야 합니다.)'S', 'C', 'B', 'T', 'U'(출력값은 형식이 지정되지 않은 스칼라입니다.)
dlconv입력 데이터의 딥러닝 컨벌루션을 계산하며, 이를 위해 필터로 구성된 배열을 사용하고, 입력값의 공간('S') 차원의 수와 채널('C') 차원 또는 채널 차원의 함수를 매칭하고, 상수 편향을 더합니다.'S', 'C''S', 'C'
dltranspconv입력 데이터의 딥러닝 전치 컨벌루션을 계산하며, 이를 위해 필터로 구성된 배열을 사용하고, 입력값의 공간('S') 차원의 수와 채널('C') 차원 또는 채널 차원의 함수를 매칭하고, 상수 편향을 더합니다.'S', 'C''S', 'C'
fullyconnect입력 데이터의 가중 합을 계산하고 각 배치('B') 및 시간('T') 차원에 편향을 적용합니다.'S', 'C', 'U''S', 'C', 'B', 'T', 'U'(출력값은 항상 'CB', 'CT' 또는 'CTB' 데이터 형식을 갖습니다.)
gru

입력 데이터에 게이트 순환 유닛 계산을 적용합니다.

'S', 'C', 'T''C'
lstm

입력 데이터에 장단기 기억 계산을 적용합니다.

'S', 'C', 'T''C'
maxpool풀 크기 파라미터로 정의된 이동 사각형 공간('S') 영역에 대해 입력 데이터의 최댓값을 계산합니다.'S''S'
maxunpool공간('S') 차원에 대해 언풀링 연산을 계산합니다.'S''S'
mse배치('B') 차원의 크기로 평균을 구한, 추정값과 목표값 사이의 평균 제곱 오차의 절반을 계산합니다.'S', 'C', 'B', 'T', 'U'(추정값과 목표 배열은 크기가 동일해야 합니다.)'S', 'C', 'B', 'T', 'U'(출력값은 형식이 지정되지 않은 스칼라입니다.)
softmax입력 데이터의 각 채널('C')에 소프트맥스 활성화를 적용합니다.'C' 

이러한 함수를 사용하려면 각 차원이 레이블을 가져야 합니다. 첫 번째 입력값을 형식이 지정된 dlarray로 제공하거나 함수의 'DataFormat' 이름-값 인수를 사용하여 차원 레이블 형식을 지정할 수 있습니다.

dlarray는 차원 레이블 순서를 'SCBTU'로 적용합니다. 이렇게 적용하면 입력값들 사이에 레이블을 암묵적으로 매칭시키는 연산에서 모호한 의미 체계를 제거할 수 있습니다. dlarray는 또한 차원 레이블 'C', 'B', 'T'가 각각 최대 한 번만 나오도록 적용합니다. 이러한 차원 레이블을 사용하는 함수는 각 레이블에 대해 최대 하나의 차원을 허용합니다.

dlarraydlarray와 연관된 데이터 형식을 가져오는 함수(dims), 데이터 형식을 제거하는 함수(stripdims), 특정 차원 레이블과 연관된 차원을 가져오는 함수(finddim)를 제공합니다.

형식에 따른 dlarray의 동작에 대한 자세한 내용은 Notable dlarray Behaviors 항목을 참조하십시오.

객체 함수

avgpoolPool data to average values over spatial dimensions
batchnormNormalize data across all observations for each channel independently
crossentropyCross-entropy loss for classification tasks
dimsdlarray의 차원 레이블
dlconvDeep learning convolution
dlgradientCompute gradients for custom training loops using automatic differentiation
dltranspconvDeep learning transposed convolution
extractdatadlarray에서 데이터 추출
finddimFind dimensions with specified label
fullyconnectSum all weighted input data and apply a bias
gruGated recurrent unit
leakyreluApply leaky rectified linear unit activation
lstmLong short-term memory
maxpoolPool data to maximum value
maxunpoolUnpool the output of a maximum pooling operation
mseHalf mean squared error
reluReLU(Rectified Linear Unit) 활성화 적용
sigmoid시그모이드 활성화 적용
softmaxApply softmax activation to channel dimension
stripdimsRemove dlarray data format

dlarray는 숫자, 행렬 및 기타 연산에 대한 함수도 허용합니다. List of Functions with dlarray Support에서 전체 목록을 참조하십시오.

예제

모두 축소

행렬에서 형식이 지정되지 않은 dlarray를 만듭니다.

X = randn(3,5);
dlX = dlarray(X)
dlX = 
  3x5 dlarray

    0.5377    0.8622   -0.4336    2.7694    0.7254
    1.8339    0.3188    0.3426   -1.3499   -0.0631
   -2.2588   -1.3077    3.5784    3.0349    0.7147

차원 레이블 'S''C'를 포함하는 데이터 형식을 갖는 dlarray를 만듭니다.

X = randn(3,5);
dlX = dlarray(X,'SC')
dlX = 
  3(S) x 5(C) dlarray

    0.5377    0.8622   -0.4336    2.7694    0.7254
    1.8339    0.3188    0.3426   -1.3499   -0.0631
   -2.2588   -1.3077    3.5784    3.0349    0.7147

차원 레이블을 역순으로 지정하면 dlarray는 기본 데이터를 암묵적으로 재정렬합니다.

dlX = dlarray(X,'CS')
dlX = 
  5(S) x 3(C) dlarray

    0.5377    1.8339   -2.2588
    0.8622    0.3188   -1.3077
   -0.4336    0.3426    3.5784
    2.7694   -1.3499    3.0349
    0.7254   -0.0631    0.7147

첫 번째 차원 레이블 'T'를 갖는 dlarray 벡터를 만듭니다. 두 번째 차원 레이블은 dlarray가 자동으로 생성하며 해당 레이블은 'U'입니다.

X = randn(6,1);
dlX = dlarray(X,'T')
dlX = 
  6(T) x 1(U) dlarray

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077

X에 대해 행 벡터를 지정하면 dlarray는 열 벡터가 되도록 결과를 암묵적으로 재정렬합니다.

X = X';
dlX = dlarray(X,'T')
dlX = 
  6(T) x 1(U) dlarray

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077

  • dlgradient 호출은 함수 내에 있어야 합니다. 기울기의 숫자형 값을 구하려면 dlfeval을 사용하여 함수를 계산해야 하고 함수에 대한 인수는 dlarray여야 합니다. Use Automatic Differentiation In Deep Learning Toolbox 항목을 참조하십시오.

  • 기울기가 올바로 계산될 수 있도록 하려면 dlfevaldlarray에 대해 지원되는 함수만 사용하는 함수를 호출해야 합니다. List of Functions with dlarray Support 항목을 참조하십시오.

확장 기능

버전 내역

R2019b에 개발됨

모두 확장