주요 콘텐츠

dlarray

R2026b

사용자 지정을 위한 딥러닝 배열

설명

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

팁

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

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

trainnet 함수가 작업에 필요한 손실 함수를 제공하지 않는다면 사용자 지정 손실 함수를 trainnet에 함수 핸들로 지정할 수 있습니다. 예측값과 목표값보다 더 많은 입력값이 필요한 손실 함수(예: 신경망 또는 추가 입력값에 액세스해야 하는 손실 함수)의 경우 사용자 지정 훈련 루프를 사용하여 모델을 훈련시킵니다. 자세한 내용은 사용자 지정 훈련 루프를 사용하여 신경망 훈련시키기 항목을 참조하십시오.

Deep Learning Toolbox™가 작업에 필요한 계층을 제공하지 않는다면 사용자 지정 계층을 만들 수 있습니다. 자세한 내용은 사용자 지정 딥러닝 계층 정의하기 항목을 참조하십시오. 계층 신경망으로 지정할 수 없는 모델의 경우 모델을 함수로 정의할 수 있습니다. 자세한 내용은 Train Network Using Model Function 항목을 참조하십시오.

어느 훈련 방법을 어느 작업에 사용해야 하는지에 대한 자세한 내용은 Train Deep Learning Model in MATLAB 항목을 참조하십시오.

생성

설명

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

예제

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

fmt를 ""로 설정해도 데이터에서 형식이 제거되지 않습니다. stripdims를 대신 사용하십시오.

예제

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

예제

입력 인수

모두 확장

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

예: rand(31*23,23)

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

데이터 형식으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.

fmt가 ""이면 dlX의 형식은 입력 X에 따라 달라집니다.

  • X가 형식 지정된 dlarray 객체가 아니면 출력 dlX는 형식이 없습니다.

  • X가 형식 지정된 dlarray 객체이면 출력 dlX는 X와 형식이 같습니다.

경고

fmt를 ""로 설정해도 데이터에서 형식이 제거되지 않습니다. stripdims를 대신 사용하십시오.

fmt가 비어 있지 않으면 문자열의 각 문자는 다음 차원 레이블 중 하나여야 합니다.

  • "S" — 공간

  • "C" — 채널

  • "B" — 배치

  • "T" — 시간

  • "U" — 지정되지 않음

"S" 또는 "U" 레이블의 차원은 여러 개 지정할 수 있습니다. 레이블 "C", "B", "T"는 각각 최대 한 번만 사용할 수 있습니다. 두 번째 차원 뒤의 한원소 후행 "U" 차원은 무시됩니다.

형식이 지정된 dlarray 객체를 만들면 형식의 차원 순서가 다음과 같도록 차원이 자동으로 치환됩니다.

  • "S"

  • "C"

  • "B"

  • "T"

  • "U"

예를 들어, 사용자가 형식을 "TCB"(시간, 채널, 배치)로 지정했다면 "CBT"(채널, 배치, 시간) 형식이 되도록 차원이 자동으로 치환됩니다.

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 객체로 반환됩니다. dlX는 dlgradient 및 dlfeval을 사용하여 자동 미분을 활성화합니다. fmt 인수를 제공하면 dlX가 레이블을 갖습니다.

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

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

객체 함수

dimsdlarray 객체의 데이터 형식
dlgradient자동 미분을 사용하여 사용자 지정 훈련 루프 기울기 계산
extractdatadlarray 객체에서 데이터 추출
finddimFind dimensions with specified label
stripdimsRemove dlarray data format

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

예제

모두 축소

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

X = randn(3,5);
dlX = dlarray(X)
dlX = 
  3×5 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) × 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) × 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) × 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) × 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 항목을 참조하십시오.

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

확장 기능

모두 확장

버전 내역

R2019b에 개발됨

모두 확장