주요 콘텐츠

predict

추론에 사용할 딥러닝 신경망 출력값 계산

설명

일부 딥러닝 계층은 훈련 중과 추론(예측) 중에 서로 다르게 동작합니다. 예를 들어, 훈련 중에는 드롭아웃 계층이 과적합 방지를 돕기 위해 입력 요소를 임의로 0으로 설정하지만, 추론 중에는 드롭아웃 계층이 입력값을 변경하지 않습니다.

[Y1,...,YN] = predict(net,X1,...,XM)은 입력 데이터 X1, …, XM과 신경망 net이 주어진 경우 추론에 사용할 신경망 출력값 Y1, …, YN을 반환합니다.

예제

[Y1,...,YN,state] = predict(___)는 업데이트된 신경망 상태도 반환합니다.

___ = predict(___,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 추가 옵션을 지정합니다.

예제

모두 축소

사전 훈련된 SqueezeNet 신경망을 작업 공간에 불러옵니다.

[net,classNames] = imagePretrainedNetwork;

PNG 파일에서 영상을 읽어 들이고 분류합니다. 영상을 분류하기 위해 먼저 영상을 single형으로 변환합니다.

im = imread("peppers.png");
figure
imshow(im)

Figure contains an axes object. The hidden axes object contains an object of type image.

X = single(im);
scores = predict(net,X);
[label,score] = scores2label(scores,classNames);

영상을 예측 레이블 및 그에 대응되는 점수와 함께 표시합니다.

figure
imshow(im)
title(string(label) + " (Score: " + score + ")")

Figure contains an axes object. The hidden axes object with title bell pepper (Score: 0.89394) contains an object of type image.

입력 인수

모두 축소

신경망으로, 다음 값 중 하나로 지정됩니다.

  • dlnetwork 객체 — 사용자 지정 훈련 루프를 위한 신경망.

  • TaylorPrunableNetwork 객체 — 사용자 지정 가지치기 루프를 위한 신경망.

심층 신경망을 가지치기하려면 Deep Learning Toolbox™ Model Compression Library 지원 패키지가 필요합니다. 이 지원 패키지는 애드온 탐색기를 사용하여 다운로드할 수 있는 무료 애드온입니다. 또는 Deep Learning Toolbox Model Compression Library 항목을 참조하십시오.

입력 데이터로, 다음 값 중 하나로 지정됩니다.

  • 형식이 지정된 dlarray 객체

  • 형식이 지정되지 않은 dlarray 객체 (R2023b 이후)

  • 숫자형 배열 (R2023b 이후)

신경망에는 특정 레이아웃의 입력 데이터가 필요합니다. 예를 들어 벡터 시퀀스 분류 신경망에서 벡터 시퀀스 표현은 일반적으로 t×c 배열이어야 합니다. 여기서 tc는 각각 시퀀스의 시간 스텝 개수와 채널 개수입니다. 일반적으로 신경망에는 필요한 데이터 레이아웃을 지정하는 입력 계층이 있습니다.

대부분의 데이터저장소와 함수는 신경망에 필요한 레이아웃으로 데이터를 출력합니다. 데이터의 레이아웃이 신경망에 필요한 것과 다른 경우 InputDataFormats 옵션을 사용하거나 입력 데이터를 형식이 지정된 dlarray 객체로 지정하여 데이터의 레이아웃이 다르다는 것을 나타내십시오. 보통 InputDataFormats 훈련 옵션을 조정하는 편이 입력 데이터를 전처리하는 것보다 쉽습니다.

자세한 내용은 Deep Learning Data Formats 항목을 참조하십시오.

형식이 지정되지 않은 데이터를 받는 신경망을 만들려면 inputLayer 객체를 사용하고 형식을 지정하지 마십시오. 형식이 지정되지 않은 데이터를 신경망에 바로 입력하려면 InputDataFormats 인수를 지정하지 마십시오. (R2025a 이후)

R2025a 이전: 입력 계층이 없는 신경망의 경우 InputDataFormats 인수를 사용하여 형식을 지정하거나 형식이 지정된 dlarray 객체를 입력값으로 사용해야 합니다.

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: Y = predict(net,X,InputDataFormats="CBT")"CBT"(채널, 배치, 시간) 형식의 시퀀스 데이터를 사용하여 예측을 수행합니다.

신경망 출력값으로, string형 배열 또는 계층 이름이나 계층 출력 경로의 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 다음 형식 중 하나를 사용하여 출력값을 지정하십시오.

  • "layerName". 여기서 layerName은 단일 출력값을 갖는 계층의 이름입니다.

  • "layerName/outputName". 여기서 layerName은 계층의 이름이고 outputName은 계층 출력의 이름입니다. 출력값이 여러 개 있는 계층에 이 옵션을 사용하십시오.

networkLayer 객체 내 계층의 출력값을 사용하려면 먼저 expandLayers 함수를 사용하여 중첩 신경망을 확장하십시오.

출력값을 추출할 계층을 지정하지 않으면 기본적으로 net.Outputs에 지정된 출력값이 사용됩니다.

R2023b 이후

입력 데이터 차원에 대한 설명으로, string형 배열, 문자형 벡터, 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

InputDataFormats"auto"이면 신경망 입력에 필요한 형식이 사용됩니다. 그렇지 않으면 해당 신경망 입력에 대해 지정된 형식이 사용됩니다.

데이터 형식은 문자들로 구성된 문자열로, 각 문자는 대응되는 데이터 차원의 유형을 설명합니다.

문자는 다음을 나타냅니다.

  • "S" — 공간

  • "C" — 채널

  • "B" — 배치

  • "T" — 시간

  • "U" — 지정되지 않음

예를 들어, 첫 번째, 두 번째, 세 번째 차원이 각각 채널, 관측값, 시간 스텝에 대응되는 시퀀스 배치를 나타내는 배열이 있다고 가정하겠습니다. 데이터를 "CBT"(채널, 배치, 시간) 형식으로 설명할 수 있습니다.

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

복수의 입력값이 포함된 net을 사용하는 신경망인 경우, 입력 데이터 형식으로 구성된 배열을 지정하십시오. 여기서 InputDataFormats(i)는 입력값 net.InputNames(i)에 대응됩니다.

자세한 내용은 Deep Learning Data Formats 항목을 참조하십시오.

형식이 지정되지 않은 데이터를 받는 신경망을 만들려면 inputLayer 객체를 사용하고 형식을 지정하지 마십시오. 형식이 지정되지 않은 데이터를 신경망에 바로 입력하려면 InputDataFormats 인수를 지정하지 마십시오. (R2025a 이후)

R2025a 이전: 입력 계층이 없는 신경망의 경우 InputDataFormats 인수를 사용하여 형식을 지정하거나 형식이 지정된 dlarray 객체를 입력값으로 사용해야 합니다.

데이터형: char | string | cell

R2023b 이후

출력 데이터 차원에 대한 설명으로, 다음 값 중 하나로 지정됩니다.

  • "auto" — 출력 데이터의 차원 수가 입력 데이터와 동일한 경우 predict 함수는 InputDataFormats에서 지정한 형식을 사용합니다. 출력 데이터의 차원 수가 입력 데이터와 다른 경우 predict 함수는 출력 데이터의 차원이 신경망 입력 계층 또는 InputDataFormats 값과 일치하도록 출력 데이터의 차원을 자동으로 치환합니다.

  • string형, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열 — predict 함수는 지정된 데이터 형식을 사용합니다.

데이터 형식은 문자들로 구성된 문자열로, 각 문자는 대응되는 데이터 차원의 유형을 설명합니다.

문자는 다음을 나타냅니다.

  • "S" — 공간

  • "C" — 채널

  • "B" — 배치

  • "T" — 시간

  • "U" — 지정되지 않음

예를 들어, 첫 번째, 두 번째, 세 번째 차원이 각각 채널, 관측값, 시간 스텝에 대응되는 시퀀스 배치를 나타내는 배열이 있다고 가정하겠습니다. 데이터를 "CBT"(채널, 배치, 시간) 형식으로 설명할 수 있습니다.

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

자세한 내용은 Deep Learning Data Formats 항목을 참조하십시오.

데이터형: char | string | cell

성능 최적화로, 다음 값 중 하나로 지정됩니다.

  • "auto" — 입력 신경망 및 하드웨어 리소스에 적합한 여러 최적화를 자동으로 적용합니다.

  • "mex" — MEX 함수를 컴파일하고 실행합니다. 이 옵션은 GPU를 사용하는 경우에만 사용할 수 있습니다. 입력 데이터 또는 신경망의 학습 가능한 파라미터를 gpuArray 객체로 저장해야 합니다. GPU를 사용하려면 Parallel Computing Toolbox™와 지원되는 GPU 장치가 필요합니다. 지원되는 장치에 대한 자세한 내용은 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오. Parallel Computing Toolbox 또는 적당한 GPU를 사용할 수 없는 경우, 오류가 반환됩니다.

  • "none" — 모든 가속을 비활성화합니다.

"auto" 또는 "mex" 옵션을 사용하면 초기 실행 시간이 늘어나는 대신 성능이 향상될 수 있습니다. 일반적으로 함수에 대한 후속 호출의 속도가 더 빨라집니다. 성능 최적화는 서로 다른 입력 데이터를 사용하여 함수를 여러 번 호출하는 경우에 사용하십시오.

Acceleration"mex"이면 모델과 함수 호출에서 지정한 파라미터에 따라 MEX 함수를 생성하고 실행합니다. 단일 모델에 한 번에 여러 개의 MEX 함수가 연결되어 있을 수 있습니다. 모델 변수를 지우면 해당 모델에 연결된 모든 MEX 함수도 지워집니다.

Acceleration"auto"이면 MEX 함수가 생성되지 않습니다.

"mex" 옵션은 GPU를 사용하는 경우에만 사용할 수 있습니다. C/C++ 컴파일러가 설치되어 있어야 하며 GPU Coder™ Interface for Deep Learning 지원 패키지가 필요합니다. MATLAB®의 애드온 탐색기를 사용하여 지원 패키지를 설치하십시오. 설정 지침은 컴파일러 설정하기 (GPU Coder) 항목을 참조하십시오. GPU Coder는 필요하지 않습니다.

"mex" 옵션에는 다음과 같은 제한 사항이 있습니다.

  • state 출력 인수는 지원되지 않습니다.

  • single 정밀도만 지원됩니다. 입력 데이터 또는 신경망의 학습 가능한 파라미터의 기본 유형은 single형이어야 합니다.

  • 입력 계층과 연결되지 않은 입력이 있는 신경망은 지원되지 않습니다.

  • 추적되는 dlarray 객체는 지원되지 않습니다. 즉, dlfeval 호출 내에서는 "mex" 옵션이 지원되지 않습니다.

  • 일부 계층은 지원되지 않습니다. 지원되는 계층 목록은 지원되는 계층 (GPU Coder) 항목을 참조하십시오.

  • "mex" 옵션을 사용할 경우 MATLAB Compiler™는 신경망 배포를 지원하지 않습니다.

양자화된 신경망의 경우, "mex" 옵션을 사용하려면 Compute Capability 6.1, 6.3 또는 그 이상을 갖춘 CUDA® 지원 NVIDIA® GPU가 필요합니다.

출력 인수

모두 축소

여러 개의 출력값을 갖는 신경망의 출력 데이터로, 다음 값 중 하나로 반환됩니다.

  • 형식이 지정된 dlarray 객체

  • 형식이 지정되지 않은 dlarray 객체 (R2023b 이후)

  • 숫자형 배열 (R2023b 이후)

데이터형은 입력 데이터의 데이터형과 일치합니다.

출력값 Y1, …, YN의 순서는 Outputs 인수로 지정된 출력값 순서와 일치합니다.

분류 신경망의 경우 출력 요소는 각 클래스의 점수에 대응됩니다. 점수 순서는 훈련 데이터의 범주 순서와 일치합니다. 예를 들어 categorical형 레이블 TTrain을 사용하여 신경망을 훈련시킬 경우 점수 순서는 categories(TTrain)에 의해 지정된 범주 순서와 일치합니다.

업데이트된 신경망 상태로, 테이블로 반환됩니다.

신경망 상태는 다음 3개의 열을 가진 테이블입니다.

  • Layer – 계층 이름으로, string형 스칼라로 지정됩니다.

  • Parameter – 상태 파라미터 이름으로, string형 스칼라로 지정됩니다.

  • Value – 상태 파라미터 값으로, dlarray 객체로 지정됩니다.

계층 연산 동안 계산된 정보는 계층 상태에서 유지되어 그 계층의 후속하는 순방향 통과에 사용됩니다. 예를 들어, LSTM 계층은 셀 상태와 은닉 상태를 포함하고 배치 정규화 계층은 동적 통계량(running statistics)을 계산합니다.

HasStateInputs 속성이 1(true)로 설정된 순환 계층(예: LSTM 계층)의 경우 상태 테이블은 계층의 상태에 대한 항목을 포함하지 않습니다.

dlnetwork의 상태는 State 속성을 사용하여 업데이트하십시오.

알고리즘

모두 축소

확장 기능

모두 확장

버전 내역

R2019b에 개발됨

모두 확장