predict
(권장되지 않음) 훈련된 딥러닝 신경망을 사용하여 응답 변수 예측
predict는 권장되지 않습니다. 대신 minibatchpredict 또는 predict(dlnetwork) 함수를 사용하십시오. 자세한 내용은 버전 내역을 참조하십시오.
구문
설명
CPU 또는 GPU에서 딥러닝을 위해 훈련된 신경망을 사용하여 예측을 수행할 수 있습니다. GPU를 사용하려면 Parallel Computing Toolbox™ 라이선스와 지원되는 GPU 장치가 필요합니다. 지원되는 장치에 대한 자세한 내용은 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오. 하드웨어 요구 사항은 이름-값 인수 ExecutionEnvironment를 사용하여 지정하십시오.
[는 위에 열거된 입력 인수 중 하나를 사용하여 다중 출력 신경망의 Y1,...,YM] = predict(___)M개 출력값에 대한 응답 변수를 예측합니다. 출력값 Yj는 신경망 출력값 net.OutputNames(j)에 대응됩니다. 분류 출력 계층에 대한 categorical형 출력값을 반환하려면 ReturnCategorical 옵션을 1(true)로 설정하십시오.
___ = predict(___,는 하나 이상의 이름-값 인수로 지정된 추가 옵션을 사용하여 응답 변수를 예측합니다.Name=Value)
팁
predict함수를 사용하여 회귀 신경망으로 응답 변수를 예측하거나 다중 출력 신경망으로 데이터를 분류합니다. 출력값이 하나인 분류 신경망을 사용하여 데이터를 분류하려면classify함수를 사용하십시오.서로 길이가 다른 시퀀스를 사용하여 예측을 수행할 때는 미니 배치 크기가 입력 데이터에 추가되는 채우기 양에 영향을 주어 서로 다른 예측값이 나올 수 있습니다. 이 경우 여러 값을 사용해 보며 어느 것이 신경망에 가장 적합한지 살펴보십시오. 미니 배치 크기와 채우기 옵션을 지정하려면 각각
MiniBatchSize옵션과SequenceLength옵션을 사용하십시오.dlnetwork객체를 사용하여 응답 변수를 예측하려면predict항목을 참조하십시오.
예제
훈련된 컨벌루션 신경망을 사용하여 숫자형 응답 변수를 예측합니다.
사전 훈련된 SqueezeNet 신경망을 불러옵니다.
net = squeezenet;
예제 영상을 읽어 들여 표시합니다.
I = imread("peppers.png");
figure
imshow(I)
신경망의 입력 크기에 맞게 영상 크기를 조정합니다.
sz = net.Layers(1).InputSize; I = imresize(I,sz(1:2));
predict 함수를 사용하여 예측을 수행합니다. 신경망이 분류 신경망이므로 predict 함수의 출력값은 클래스 확률입니다. 회귀 신경망의 경우 함수는 예측된 숫자형 응답을 출력합니다.
Y = predict(net,I);
확률을 막대 차트로 표시합니다.
figure bar(Y) xlabel("Class") ylabel("Probability")

입력 인수
훈련된 신경망으로, SeriesNetwork 또는 DAGNetwork 객체로 지정됩니다. 사전 훈련된 신경망을 가져오거나(예: googlenet 함수 사용) trainNetwork를 사용하여 자신만의 고유한 신경망을 훈련시켜 훈련된 신경망을 얻을 수 있습니다.
dlnetwork 객체를 사용한 응답 변수 예측에 관한 자세한 내용은 predict 항목을 참조하십시오.
영상 데이터로, 다음 중 하나로 지정됩니다.
| 데이터형 | 설명 | 대표적인 사용법 | |
|---|---|---|---|
| 데이터저장소 | ImageDatastore | 디스크에 저장된 영상의 데이터저장소 | 디스크에 저장된 같은 크기의 영상들을 사용하여 예측을 수행합니다. 영상 크기가 서로 다른 경우 |
augmentedImageDatastore | 크기 조정, 회전, 반사, 전단, 평행 이동을 비롯한 무작위 아핀 기하 변환을 적용하는 데이터저장소 | 디스크에 저장된 서로 다른 크기의 영상들을 사용하여 예측을 수행합니다. | |
TransformedDatastore | 사용자 지정 변환 함수를 사용하여 기본 데이터저장소에서 읽어 들인 데이터 배치를 변환하는 데이터저장소 |
| |
CombinedDatastore | 둘 이상의 기본 데이터저장소에서 읽어 들인 데이터저장소 |
| |
| 사용자 지정 미니 배치 데이터저장소 | 데이터의 미니 배치를 반환하는 사용자 지정 데이터저장소 | 다른 데이터저장소에서 지원하지 않는 형식의 데이터를 사용하여 예측을 수행합니다. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오. | |
| 숫자형 배열 | 숫자형 배열로 지정된 영상 | 메모리에 맞고 크기 조정과 같은 추가 처리가 필요하지 않은 데이터를 사용하여 예측을 수행합니다. | |
| 테이블 | 테이블로 지정된 영상 | 테이블에 저장된 데이터를 사용하여 예측을 수행합니다. | |
여러 개의 입력값을 갖는 신경망에 데이터저장소를 사용하는 경우, 데이터저장소는 TransformedDatastore 객체이거나 CombinedDatastore 객체여야 합니다.
팁
비디오 데이터와 같은 영상 시퀀스의 경우 sequences 입력 인수를 사용하십시오.
데이터저장소
데이터저장소는 영상 및 응답 변수의 미니 배치를 읽어 들입니다. 데이터저장소는 메모리에 맞지 않는 데이터가 있거나 입력 데이터의 크기를 조정하려는 경우에 사용하십시오.
다음 데이터저장소는 영상 데이터에 대해 predict 함수와 직접 호환됩니다.
사용자 지정 미니 배치 데이터저장소. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오.
팁
영상의 크기 조정을 비롯하여 딥러닝에 사용할 영상을 효율적으로 전처리하려면 augmentedImageDatastore를 사용하십시오. ImageDatastore 객체의 ReadFcn 옵션을 사용하지 마십시오.
ImageDatastore는 프리페치 방식을 사용해 JPG 또는 PNG 영상 파일을 배치로 읽어올 수 있습니다. ReadFcn 옵션을 사용자 지정 함수로 설정하면 ImageDatastore가 프리페치를 수행하지 않으며, 이 경우 일반적으로 속도가 상당히 느려집니다.
transform 함수와 combine 함수를 사용하여 예측을 수행하기 위해 다른 내장 데이터저장소를 사용할 수 있습니다. 이러한 함수는 데이터저장소에서 읽어 들인 데이터를 classify에 필요한 형식으로 변환할 수 있습니다.
데이터저장소 출력값의 필요한 형식은 신경망 아키텍처에 따라 달라집니다.
| 신경망 아키텍처 | 데이터저장소 출력값 | 출력값의 예 |
|---|---|---|
| 단일 입력값 | 테이블 또는 셀형 배열로, 여기서 첫 번째 열은 예측 변수를 지정합니다. 테이블 요소는 스칼라 또는 행 벡터이거나 숫자형 배열을 포함하는 1×1 셀형 배열이어야 합니다. 사용자 지정 데이터저장소는 테이블을 출력해야 합니다. | data = read(ds) data =
4×1 table
Predictors
__________________
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
|
data = read(ds) data =
4×1 cell array
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
{224×224×3 double} | ||
| 다중 입력값 | 열 개수가 처음 입력값의 순서는 신경망의 | data = read(ds) data =
4×2 cell array
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double} |
예측 변수의 형식은 데이터의 유형에 따라 달라집니다.
| 데이터 | 형식 |
|---|---|
| 2차원 영상 | h×w×c 숫자형 배열로, 여기서 h, w, c는 각각 영상의 높이, 너비, 채널 개수입니다. |
| 3차원 영상 | h×w×d×c 숫자형 배열로, 여기서 h, w, d, c는 각각 영상의 높이, 너비, 깊이, 채널 개수입니다. |
자세한 내용은 Datastores for Deep Learning 항목을 참조하십시오.
숫자형 배열
메모리에 맞고 증강과 같은 추가 처리가 필요하지 않은 데이터의 경우 영상 데이터 세트를 숫자형 배열로 지정할 수 있습니다.
숫자형 배열의 크기와 형태는 영상 데이터의 유형에 따라 달라집니다.
| 데이터 | 형식 |
|---|---|
| 2차원 영상 | h×w×c×N 숫자형 배열로, 여기서 h, w, c는 각각 영상의 높이, 너비, 채널 개수이고 N은 영상 개수입니다. |
| 3차원 영상 | h×w×d×c×N 숫자형 배열로, 여기서 h, w, d, c는 각각 영상의 높이, 너비, 깊이, 채널 개수이고 N은 영상 개수입니다. |
테이블
데이터저장소 또는 숫자형 배열의 대안으로 테이블에 영상을 지정할 수도 있습니다.
테이블에 영상을 지정할 때 테이블의 각 행은 관측값 하나에 대응됩니다.
영상 입력의 경우 예측 변수는 다음 중 하나로 지정된 테이블의 첫 번째 열에 있어야 합니다.
영상에 대한 상대 또는 절대 파일 경로로, 문자형 벡터로 지정됩니다.
2차원 영상을 나타내는 h×w×c 숫자형 배열을 포함하는 1×1 셀형 배열로, 여기서 h, w, c는 각각 영상의 높이, 너비, 채널의 개수입니다.
팁
이 인수는 복소수 값 예측 변수를 지원합니다. 복소수 값 데이터를 SeriesNetwork 객체 또는 DAGNetwork 객체에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1(true)이어야 합니다.
시퀀스 또는 시계열 데이터로, 다음 중 하나로 지정됩니다.
| 데이터형 | 설명 | 대표적인 사용법 | |
|---|---|---|---|
| 데이터저장소 | TransformedDatastore | 사용자 지정 변환 함수를 사용하여 기본 데이터저장소에서 읽어 들인 데이터 배치를 변환하는 데이터저장소 |
|
CombinedDatastore | 둘 이상의 기본 데이터저장소에서 읽어 들인 데이터저장소 |
| |
| 사용자 지정 미니 배치 데이터저장소 | 데이터의 미니 배치를 반환하는 사용자 지정 데이터저장소 | 다른 데이터저장소에서 지원하지 않는 형식의 데이터를 사용하여 예측을 수행합니다. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오. | |
| 숫자형 또는 셀형 배열 | 숫자형 배열로 지정된 단일 시퀀스 또는 숫자형 배열로 구성된 셀형 배열로 지정된 시퀀스 데이터 세트 | 메모리에 맞고 사용자 지정 변환과 같은 추가 처리가 필요하지 않은 데이터를 사용하여 예측을 수행합니다. | |
데이터저장소
데이터저장소는 시퀀스 및 응답 변수의 미니 배치를 읽어 들입니다. 메모리에 맞지 않는 데이터가 있거나 데이터에 변환을 적용하려는 경우에 데이터저장소를 사용하십시오.
다음 데이터저장소는 시퀀스 데이터에 대해 predict 함수와 직접 호환됩니다.
사용자 지정 미니 배치 데이터저장소. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오.
transform 함수와 combine 함수를 사용하여 예측을 수행하기 위해 다른 내장 데이터저장소를 사용할 수 있습니다. 이러한 함수는 데이터저장소에서 읽어 들인 데이터를 predict 함수에 필요한 테이블 또는 셀형 배열 형식으로 변환할 수 있습니다. 예를 들어, 각각 ArrayDatastore 객체 및 TabularTextDatastore 객체를 사용하여 메모리 내 배열 및 CSV 파일에서 읽어 들인 데이터를 변환하고 결합할 수 있습니다.
데이터저장소는 데이터를 테이블 또는 셀형 배열로 반환해야 합니다. 사용자 지정 미니 배치 데이터저장소는 테이블을 출력해야 합니다.
| 데이터저장소 출력값 | 출력값의 예 |
|---|---|
| 테이블 | data = read(ds) data =
4×2 table
Predictors
__________________
{12×50 double}
{12×50 double}
{12×50 double}
{12×50 double} |
| 셀형 배열 | data = read(ds) data =
4×2 cell array
{12×50 double}
{12×50 double}
{12×50 double}
{12×50 double} |
예측 변수의 형식은 데이터의 유형에 따라 달라집니다.
| 데이터 | 예측 변수의 형식 |
|---|---|
| 벡터 시퀀스 | c×s 행렬로, 여기서 c는 시퀀스의 특징 개수이고, s는 시퀀스 길이입니다. |
| 1차원 영상 시퀀스 | h×c×s 배열로, 여기서 h, c는 각각 영상의 높이와 채널 개수이고, s는 시퀀스 길이입니다. 미니 배치의 각 시퀀스는 시퀀스 길이가 같아야 합니다. |
| 2차원 영상 시퀀스 | h×w×c×s 배열로, 여기서 h, w, c는 각각 영상의 높이, 너비, 채널 개수이고, s는 시퀀스 길이입니다. 미니 배치의 각 시퀀스는 시퀀스 길이가 같아야 합니다. |
| 3차원 영상 시퀀스 | h×w×d×c×s 배열로, 여기서 h, w, d, c는 각각 영상의 높이, 너비, 깊이, 채널 개수이고, s는 시퀀스 길이입니다. 미니 배치의 각 시퀀스는 시퀀스 길이가 같아야 합니다. |
테이블로 반환되는 예측 변수의 경우, 요소는 숫자형 스칼라 또는 숫자형 행 벡터를 포함하거나 숫자형 배열을 포함하는 1×1 셀형 배열을 포함해야 합니다.
자세한 내용은 Datastores for Deep Learning 항목을 참조하십시오.
숫자형 또는 셀형 배열
메모리에 맞고 사용자 지정 변환과 같은 추가 처리가 필요하지 않은 데이터의 경우 단일 시퀀스를 숫자형 배열로 지정하거나 시퀀스 데이터 세트를 숫자형 배열로 구성된 셀형 배열로 지정할 수 있습니다.
셀형 배열 입력값의 경우 셀형 배열은 숫자형 배열로 구성된 N×1 셀형 배열이어야 합니다. 여기서 N은 관측값의 개수입니다. 시퀀스를 나타내는 숫자형 배열의 크기와 형태는 시퀀스 데이터의 유형에 따라 달라집니다.
| 입력 | 설명 |
|---|---|
| 벡터 시퀀스 | c×s 행렬로, 여기서 c는 시퀀스의 특징 개수이고 s는 시퀀스 길이입니다. |
| 1차원 영상 시퀀스 | h×c×s 배열로, 여기서 h, c는 각각 영상의 높이, 채널 개수이고 s는 시퀀스 길이입니다. |
| 2차원 영상 시퀀스 | h×w×c×s 배열로, 여기서 h, w, c는 영상의 높이, 너비, 채널 개수이고 s는 시퀀스 길이입니다. |
| 3차원 영상 시퀀스 | h×w×d×c×s 배열로, 여기서 h, w, d, c는 3차원 영상의 높이, 너비, 깊이, 채널 개수이고 s는 시퀀스 길이입니다. |
팁
이 인수는 복소수 값 예측 변수를 지원합니다. 복소수 값 데이터를 SeriesNetwork 객체 또는 DAGNetwork 객체에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1(true)이어야 합니다.
특징 데이터로, 다음 중 하나로 지정됩니다.
| 데이터형 | 설명 | 대표적인 사용법 | |
|---|---|---|---|
| 데이터저장소 | TransformedDatastore | 사용자 지정 변환 함수를 사용하여 기본 데이터저장소에서 읽어 들인 데이터 배치를 변환하는 데이터저장소 |
|
CombinedDatastore | 둘 이상의 기본 데이터저장소에서 읽어 들인 데이터저장소 |
| |
| 사용자 지정 미니 배치 데이터저장소 | 데이터의 미니 배치를 반환하는 사용자 지정 데이터저장소 | 다른 데이터저장소에서 지원하지 않는 형식의 데이터를 사용하여 예측을 수행합니다. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오. | |
| 테이블 | 테이블로 지정된 특징 데이터 | 테이블에 저장된 데이터를 사용하여 예측을 수행합니다. | |
| 숫자형 배열 | 숫자형 배열로 지정된 특징 데이터 | 메모리에 맞고 사용자 지정 변환과 같은 추가 처리가 필요하지 않은 데이터를 사용하여 예측을 수행합니다. | |
데이터저장소
데이터저장소는 특징 데이터 및 응답 변수의 미니 배치를 읽어 들입니다. 메모리에 맞지 않는 데이터가 있거나 데이터에 변환을 적용하려는 경우에 데이터저장소를 사용하십시오.
다음 데이터저장소는 특징 데이터에 대해 predict 함수와 직접 호환됩니다.
사용자 지정 미니 배치 데이터저장소. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오.
transform 함수와 combine 함수를 사용하여 예측을 수행하기 위해 다른 내장 데이터저장소를 사용할 수 있습니다. 이러한 함수는 데이터저장소에서 읽어 들인 데이터를 predict 함수에 필요한 테이블 또는 셀형 배열 형식으로 변환할 수 있습니다. 자세한 내용은 Datastores for Deep Learning 항목을 참조하십시오.
여러 개의 입력값을 갖는 신경망의 경우, 데이터저장소는 TransformedDatastore 객체이거나 CombinedDatastore 객체여야 합니다.
데이터저장소는 데이터를 테이블 또는 셀형 배열로 반환해야 합니다. 사용자 지정 미니 배치 데이터저장소는 테이블을 출력해야 합니다. 데이터저장소 출력값의 형식은 신경망 아키텍처에 따라 달라집니다.
| 신경망 아키텍처 | 데이터저장소 출력값 | 출력값의 예 |
|---|---|---|
| 하나의 입력 계층 | 하나 이상의 열을 가진 테이블 또는 셀형 배열로, 여기서 첫 번째 열은 예측 변수를 지정합니다. 테이블 요소는 스칼라 또는 행 벡터이거나 숫자형 배열을 포함하는 1×1 셀형 배열이어야 합니다. 사용자 지정 미니 배치 데이터저장소는 테이블을 출력해야 합니다. | 1개의 입력값을 갖는 신경망에 대한 테이블입니다. data = read(ds) data =
4×2 table
Predictors
__________________
{24×1 double}
{24×1 double}
{24×1 double}
{24×1 double}
|
1개의 입력값을 갖는 신경망에 대한 셀형 배열입니다.
data = read(ds) data =
4×1 cell array
{24×1 double}
{24×1 double}
{24×1 double}
{24×1 double} | ||
| 여러 개의 입력 계층 | 열 개수가 처음 입력값의 순서는 신경망의 | 2개의 입력값을 갖는 신경망에 대한 셀형 배열입니다. data = read(ds) data =
4×3 cell array
{24×1 double} {28×1 double}
{24×1 double} {28×1 double}
{24×1 double} {28×1 double}
{24×1 double} {28×1 double} |
예측 변수는 c×1 열 벡터여야 합니다. 여기서 c는 특징의 개수입니다.
자세한 내용은 Datastores for Deep Learning 항목을 참조하십시오.
테이블
메모리에 맞고 사용자 지정 변환과 같은 추가 처리가 필요하지 않은 특징 데이터의 경우 특징 데이터와 응답 변수를 테이블로 지정할 수 있습니다.
테이블의 각 행은 관측값 하나에 대응됩니다. 테이블 열에서 예측 변수의 배치 방식은 작업 유형에 따라 달라집니다.
| 작업 | 예측 변수 |
|---|---|
| 특징 분류 | 하나 이상의 열에 스칼라로 지정된 특징. |
숫자형 배열
메모리에 맞고 사용자 지정 변환과 같은 추가 처리가 필요하지 않은 특징 데이터의 경우 특징 데이터를 숫자형 배열로 지정할 수 있습니다.
숫자형 배열은 N×numFeatures 숫자형 배열이어야 합니다. 여기서 N은 관측값의 개수이고, numFeatures는 입력 데이터의 특징의 개수입니다.
팁
이 인수는 복소수 값 예측 변수를 지원합니다. 복소수 값 데이터를 SeriesNetwork 객체 또는 DAGNetwork 객체에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1(true)이어야 합니다.
여러 개의 입력값을 갖는 신경망에 대한 숫자형 배열 또는 셀형 배열입니다.
영상, 시퀀스, 특징 예측 변수 입력값에 대해 예측 변수 형식은 각각 images, sequences, features 인수 설명에 기술된 형식과 일치해야 합니다.
여러 개의 입력값을 갖는 신경망을 훈련시키는 방법을 보여주는 예제는 영상 데이터와 특징 데이터로 신경망 훈련시키기 항목을 참조하십시오.
복소수 값 데이터를 DAGNetwork 객체 또는 SeriesNetwork 객체에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1(true)이어야 합니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell
복소수 지원 여부: 예
혼합된 데이터로, 다음 중 하나로 지정됩니다.
| 데이터형 | 설명 | 대표적인 사용법 |
|---|---|---|
TransformedDatastore | 사용자 지정 변환 함수를 사용하여 기본 데이터저장소에서 읽어 들인 데이터 배치를 변환하는 데이터저장소 |
|
CombinedDatastore | 둘 이상의 기본 데이터저장소에서 읽어 들인 데이터저장소 |
|
| 사용자 지정 미니 배치 데이터저장소 | 데이터의 미니 배치를 반환하는 사용자 지정 데이터저장소 | 다른 데이터저장소에서 지원하지 않는 형식의 데이터를 사용하여 예측을 수행합니다. 자세한 내용은 Develop Custom Mini-Batch Datastore 항목을 참조하십시오. |
transform 함수와 combine 함수를 사용하여 예측을 수행하기 위해 다른 내장 데이터저장소를 사용할 수 있습니다. 이러한 함수는 데이터저장소에서 읽어 들인 데이터를 predict 함수에 필요한 테이블 또는 셀형 배열 형식으로 변환할 수 있습니다. 자세한 내용은 Datastores for Deep Learning 항목을 참조하십시오.
데이터저장소는 데이터를 테이블 또는 셀형 배열로 반환해야 합니다. 사용자 지정 미니 배치 데이터저장소는 테이블을 출력해야 합니다. 데이터저장소 출력값의 형식은 신경망 아키텍처에 따라 달라집니다.
| 데이터저장소 출력값 | 출력값의 예 |
|---|---|
열의 개수가 입력값의 순서는 신경망의 | data = read(ds) data =
4×3 cell array
{24×1 double} {28×1 double}
{24×1 double} {28×1 double}
{24×1 double} {28×1 double}
{24×1 double} {28×1 double} |
영상, 시퀀스, 특징 예측 변수 입력값에 대해 예측 변수 형식은 각각 images, sequences, features 인수 설명에 기술된 형식과 일치해야 합니다.
여러 개의 입력값을 갖는 신경망을 훈련시키는 방법을 보여주는 예제는 영상 데이터와 특징 데이터로 신경망 훈련시키기 항목을 참조하십시오.
팁
숫자형 배열을 데이터저장소로 변환하려면 arrayDatastore를 사용하십시오.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.
예: MiniBatchSize=256은 미니 배치 크기를 256으로 지정합니다.
예측에 사용할 미니 배치의 크기로, 양의 정수로 지정됩니다. 미니 배치가 클수록 메모리가 더 많이 필요하지만 예측 속도는 빨라질 수 있습니다.
서로 길이가 다른 시퀀스를 사용하여 예측을 수행할 때는 미니 배치 크기가 입력 데이터에 추가되는 채우기 양에 영향을 주어 서로 다른 예측값이 나올 수 있습니다. 이 경우 여러 값을 사용해 보며 어느 것이 신경망에 가장 적합한지 살펴보십시오. 미니 배치 크기와 채우기 옵션을 지정하려면 각각 MiniBatchSize 옵션과 SequenceLength 옵션을 사용하십시오.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
성능 최적화로, 다음 중 하나로 지정됩니다.
"auto"— 입력 신경망 및 하드웨어 리소스에 적합한 여러 최적화를 자동으로 적용합니다."mex"— MEX 함수를 컴파일하고 실행합니다. 이 옵션은 GPU를 사용하는 경우에만 사용할 수 있습니다. GPU를 사용하려면 Parallel Computing Toolbox 라이선스와 지원되는 GPU 장치가 필요합니다. 지원되는 장치에 대한 자세한 내용은 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오. Parallel Computing Toolbox 또는 적당한 GPU를 사용할 수 없는 경우, 오류가 반환됩니다."none"— 모든 가속을 비활성화합니다.
Acceleration이 "auto"인 경우 MATLAB®은 호환되는 여러 최적화를 적용하고 MEX 함수를 생성하지 않습니다.
"auto"와 "mex" 옵션을 사용하면 초기 실행 시간이 늘어나는 대신 성능이 향상될 수 있습니다. 호환되는 파라미터를 사용한 후속 호출은 더 빨리 실행됩니다. 성능 최적화는 새 입력 데이터를 사용하여 함수를 여러 번 호출해야 하는 경우에 사용하십시오.
"mex" 옵션은 신경망과 함수 호출에서 사용된 파라미터에 따라 MEX 함수를 생성하고 실행합니다. 단일 신경망에 한 번에 여러 개의 MEX 함수가 연결되어 있을 수 있습니다. 신경망 변수를 지우면 해당 신경망에 연결된 모든 MEX 함수도 지워집니다.
"mex" 옵션은 sequenceInputLayer 객체를 제외하고 지원되는 계층 (GPU Coder) 페이지에 나열된 계층을 포함하는 신경망을 지원합니다.
"mex" 옵션은 단일 GPU를 사용하는 경우에 사용할 수 있습니다.
"mex" 옵션을 사용하려면 C/C++ 컴파일러가 설치되어 있어야 하며 GPU Coder™ Interface for Deep Learning 지원 패키지가 필요합니다. MATLAB의 애드온 탐색기를 사용하여 지원 패키지를 설치하십시오. 설정 지침은 컴파일러 설정하기 (GPU Coder) 항목을 참조하십시오. GPU Coder는 필요하지 않습니다.
양자화된 신경망의 경우, "mex" 옵션을 사용하려면 Compute Capability 6.1, 6.3 또는 그 이상을 갖춘 CUDA® 지원 NVIDIA® GPU가 필요합니다.
"mex" 옵션을 사용할 경우 MATLAB Compiler™는 신경망 배포를 지원하지 않습니다.
하드웨어 리소스로, 다음 중 하나로 지정됩니다.
"auto"— GPU를 사용할 수 있으면 GPU를 사용하고 그렇지 않으면 CPU를 사용합니다."gpu"— GPU를 사용합니다. GPU를 사용하려면 Parallel Computing Toolbox 라이선스와 지원되는 GPU 장치가 필요합니다. 지원되는 장치에 대한 자세한 내용은 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오. Parallel Computing Toolbox 또는 적당한 GPU를 사용할 수 없는 경우, 오류가 반환됩니다."cpu"— CPU를 사용합니다."multi-gpu"— 디폴트 클러스터 프로파일에 따라 로컬 병렬 풀을 사용하여 컴퓨터 1대에서 여러 개의 GPU를 사용합니다. 기존 병렬 풀이 없는 경우 사용 가능한 GPU의 개수와 동일한 풀 크기로 병렬 풀을 시작합니다."parallel"— 디폴트 클러스터 프로파일에 따라 로컬 또는 원격 병렬 풀을 사용합니다. 기존 병렬 풀이 없는 경우 디폴트 클러스터 프로파일을 사용하여 병렬 풀을 시작합니다. 풀이 GPU를 사용할 수 있는 경우, 고유한 GPU를 갖는 워커만 계산을 수행합니다. 풀에 GPU가 없는 경우, 대신 사용 가능한 모든 CPU 워커에서 계산이 이루어집니다.
서로 다른 실행 환경을 사용해야 하는 경우에 대한 자세한 내용은 Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud 항목을 참조하십시오.
"gpu", "multi-gpu", "parallel" 옵션을 사용하려면 Parallel Computing Toolbox가 필요합니다. 딥러닝을 위해 GPU를 사용하려면 지원되는 GPU 장치도 필요합니다. 지원되는 장치에 대한 자세한 내용은 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오. 이러한 옵션 중 하나를 선택했는데 Parallel Computing Toolbox 또는 적당한 GPU가 없는 경우, 오류가 반환됩니다.
ExecutionEnvironment를 "multi-gpu" 또는 "parallel"로 설정하여 순환 계층이 있는 신경망으로 병렬로 예측을 수행하려면, SequenceLength 옵션은 "shortest" 또는 "longest"여야 합니다.
State 파라미터를 포함하는 사용자 지정 계층이 있는 신경망은 병렬 예측 수행을 지원하지 않습니다.
categorical형 레이블을 반환하는 옵션으로, 0(false) 또는 1(true)로 지정됩니다.
ReturnCategorical이 1(true)인 경우 함수는 분류 출력 계층에 대한 categorical형 레이블을 반환합니다. 그렇지 않은 경우 함수는 분류 출력 계층에 대한 예측 점수를 반환합니다.
시퀀스를 채우거나 자르거나 분할하는 옵션으로, 다음 값 중 하나로 지정됩니다.
"longest"— 각 미니 배치의 시퀀스 길이가 가장 긴 시퀀스의 길이와 같아지도록 채웁니다. 이 옵션은 채우기로 인해 신경망에 잡음이 포함되더라도 데이터를 버리지 않습니다."shortest"— 각 미니 배치의 시퀀스가 가장 짧은 시퀀스와 길이가 같아지도록 자릅니다. 이 옵션은 데이터를 버리게 되더라도 채우기를 추가하지 않습니다.양의 정수 — 각 미니 배치에 대해, 미니 배치에서 가장 긴 시퀀스의 길이에 맞춰 시퀀스를 채운 다음, 지정된 길이를 갖는 더 작은 크기의 시퀀스로 분할합니다. 분할이 이루어지면 소프트웨어가 미니 배치를 추가로 만듭니다. 데이터의 시퀀스 길이가 지정된 시퀀스 길이로 균등하게 나뉘지 않는 경우, 해당 시퀀스의 끝을 포함하는 미니 배치의 길이는 지정된 시퀀스 길이보다 짧습니다. 전체 시퀀스가 메모리에 맞지 않으면 이 옵션을 사용하십시오. 또는
MiniBatchSize옵션을 더 낮은 값으로 설정하여 미니 배치당 시퀀스 개수를 줄여 보십시오.
시퀀스 채우기 및 자르기의 효과에 대한 자세한 정보는 시퀀스 채우기와 줄이기 항목을 참조하십시오.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string
채우기 또는 자르기 방향으로, 다음 중 하나로 지정됩니다.
"right"— 시퀀스들을 오른쪽에서 채우거나 자릅니다. 시퀀스들은 동일한 시간 스텝에서 시작하며 시퀀스들의 끝부분에서 자르기나 채우기를 수행합니다."left"— 시퀀스들을 왼쪽에서 채우거나 자릅니다. 시퀀스들이 동일한 시간 스텝에서 끝나도록 시퀀스들의 시작 부분에서 자르기나 채우기를 수행합니다.
순환 계층은 시퀀스 데이터를 한 번에 하나의 시간 스텝씩 처리하기 때문에 순환 계층의 OutputMode 속성이 "last"인 경우 마지막 시간 스텝에서의 채우기가 계층 출력에 부정적인 영향을 줄 수 있습니다. 시퀀스 데이터를 왼쪽에서 채우거나 자르려면 SequencePaddingDirection 옵션을 "left"로 설정하십시오.
sequence-to-sequence 신경망의 경우(각 순환 계층의 OutputMode 속성이 "sequence"인 경우), 첫 시간 스텝들에서의 채우기가 앞쪽에 있는 시간 스텝들의 예측에 부정적인 영향을 줄 수 있습니다. 시퀀스 데이터를 오른쪽에서 채우거나 자르려면 SequencePaddingDirection 옵션을 "right"로 설정하십시오.
시퀀스 채우기 및 자르기의 효과에 대한 자세한 정보는 시퀀스 채우기와 줄이기 항목을 참조하십시오.
입력 시퀀스에 채울 값으로, 스칼라로 지정됩니다.
시퀀스를 NaN으로 채우면 신경망 전체로 오류가 전파될 수 있으므로 유의하십시오.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
출력 인수
예측된 응답으로, 숫자형 배열, categorical형 배열 또는 셀형 배열입니다. Y의 형식은 문제의 유형에 따라 달라집니다.
다음 표에서는 회귀 문제의 형식을 설명합니다.
| 작업 | 형식 |
|---|---|
| 2차원 영상 회귀 |
|
| 3차원 영상 회귀 |
|
| sequence-to-one 회귀 | N×R 행렬로, 여기서 N은 시퀀스의 개수이고 R은 응답 변수의 개수입니다. |
| sequence-to-sequence 회귀 | 숫자형 시퀀스로 구성된 N×1 셀형 배열로, 여기서 N은 시퀀스의 개수입니다. 시퀀스는 R개의 행을 가진 행렬로, 여기서 R은 응답 변수의 개수입니다. 각 시퀀스는 관측값이 1개인 sequence-to-sequence 회귀 작업의 경우, |
| 특징 회귀 | N×R 행렬로, 여기서 N은 관측값의 개수이고 R은 응답 변수의 개수입니다. |
관측값이 1개인 sequence-to-sequence 회귀 문제의 경우, sequences는 행렬이 될 수 있습니다. 이 경우 Y는 응답 변수로 구성된 행렬입니다.
ReturnCategorical이 0(false)이고 신경망의 출력 계층이 분류 계층이면 Y는 예측 분류 점수입니다. 다음 표에서는 분류 작업의 점수 형식을 설명합니다.
| 작업 | 형식 |
|---|---|
| 영상 분류 | N×K 행렬로, 여기서 N은 관측값의 개수이고 K는 클래스의 개수입니다. |
| sequence-to-label 분류 | |
| 특징 분류 | |
| sequence-to-sequence 분류 | 행렬로 구성된 N×1 셀형 배열로, 여기서 N은 관측값의 개수입니다. 시퀀스는 K개의 행을 가진 행렬로, 여기서 K는 클래스의 개수입니다. 각 시퀀스는 |
ReturnCategorical이 1(true)이고 신경망의 출력 계층이 분류 계층이면 Y는 categorical형 벡터 또는 categorical형 벡터로 구성된 셀형 배열입니다. 다음 표에서는 분류 작업의 레이블 형식을 설명합니다.
| 작업 | 형식 |
|---|---|
| 영상 또는 특징 분류 | 레이블로 구성된 N×1 categorical형 벡터로, 여기서 N은 관측값의 개수입니다. |
| sequence-to-label 분류 | |
| sequence-to-sequence 분류 | 레이블로 구성된 categorical형 시퀀스의 N×1 셀형 배열로, 여기서 N은 관측값의 개수입니다. 각 시퀀스는 관측값이 1개인 sequence-to-sequence 분류 작업의 경우, |
출력값이 여러 개인 신경망의 예측 점수 또는 예측 응답 변수로, 숫자형 배열, categorical형 배열 또는 셀형 배열로 반환됩니다.
각 출력값 Yj는 신경망 출력값 net.OutputNames(j)에 대응하고 Y 출력 인수에 설명된 형식을 갖습니다.
알고리즘
trainnet 또는 trainNetwork 함수를 사용하여 신경망을 훈련시키거나 DAGNetwork 객체 및 SeriesNetwork 객체와 함께 예측 함수 또는 검증 함수를 사용할 때 소프트웨어는 단정밀도 부동소수점 연산방식을 사용하여 이러한 계산을 수행합니다. 예측 및 검증을 위한 함수는 predict, classify, activations 등이 있습니다. CPU와 GPU를 모두 사용하여 신경망을 훈련시키는 경우, 단정밀도 연산방식이 사용됩니다.
최상의 성능을 위해 MATLAB에서 GPU를 사용해 딥러닝을 실행한다고 해도 성능이 반드시 보장되는 것은 아닙니다. 신경망 아키텍처에 따라 GPU를 사용하여 두 개의 같은 신경망을 훈련시키거나 동일한 신경망 및 데이터를 사용하여 두 개의 예측값을 생성할 때 조건에 따라 결과가 달라질 수 있습니다.
대안
단일 분류 계층을 사용하는 신경망에 한해 훈련된 신경망에서 classify 함수를 사용하여 예측 클래스와 예측 점수를 계산할 수 있습니다.
신경망 계층에서 활성화 결과를 구하려면 activations 함수를 사용하십시오.
LSTM 신경망과 같은 순환 신경망의 경우 classifyAndUpdateState 및 predictAndUpdateState 함수를 사용하여 예측을 수행하고 신경망 상태를 업데이트할 수 있습니다.
참고 문헌
[1] Kudo, Mineichi, Jun Toyama, and Masaru Shimbo. “Multidimensional Curve Classification Using Passing-through Regions.” Pattern Recognition Letters 20, no. 11–13 (November 1999): 1103–11. https://doi.org/10.1016/S0167-8655(99)00077-X.
[2] UCI Machine Learning Repository: Japanese Vowels Dataset. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels.
확장 기능
사용법 관련 참고 및 제한 사항:
C++ 코드 생성 시에 다음과 같은 구문이 지원됩니다.
Y = predict(net,images), 여기서images는 숫자형 배열입니다.Y = predict(net,sequences), 여기서sequences는 셀형 배열입니다.Y = predict(net,features), 여기서features는 숫자형 배열입니다.[Y1,...,YM] = predict(__)(위에 열거된 구문에 사용할 수 있음)__ = predict(__,Name=Value)(위에 열거된 구문에 사용할 수 있음)
숫자형 입력값의 경우 입력값은 가변 크기를 가질 수 없습니다. 크기는 코드 생성 시점에 고정되어야 합니다.
벡터 시퀀스 입력값의 경우, 코드 생성 시에 특징의 개수가 상수여야 합니다. 시퀀스 길이는 가변 크기일 수 있습니다.
영상 시퀀스 입력값의 경우, 코드 생성 시에 높이, 너비, 채널 개수가 상수여야 합니다.
코드 생성 시에는
MiniBatchSize,ReturnCategorical,SequenceLength,SequencePaddingDirection및SequencePaddingValue이름-값 쌍 인수만 지원됩니다. 모든 이름-값 쌍은 컴파일타임 상수여야 합니다.코드 생성 시에는
SequenceLength이름-값 쌍의"longest"및"shortest"옵션만 지원됩니다.ReturnCategorical이1(true)이고 GCC C/C++ 컴파일러 버전 8.2 이상을 사용하면-Wstringop-overflow경고가 표시될 수 있습니다.Intel® MKL-DNN 타깃에 대한 코드 생성 시
SequenceLength="longest",SequencePaddingDirection="left"및SequencePaddingValue=0이름-값 인수의 조합은 지원되지 않습니다.
딥러닝 신경망을 위해 코드를 생성하는 방법에 대한 자세한 내용은 MATLAB Coder를 사용한 딥러닝 코드 생성 워크플로 (MATLAB Coder) 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
GPU 코드 생성 시에 다음과 같은 구문이 지원됩니다.
Y = predict(net,images), 여기서images는 숫자형 배열입니다.Y = predict(net,sequences), 여기서sequences는 셀형 배열 또는 숫자형 배열입니다.Y = predict(net,features), 여기서features는 숫자형 배열입니다.[Y1,...,YM] = predict(__)(위에 열거된 구문에 사용할 수 있음)__ = predict(__,Name=Value)(위에 열거된 구문에 사용할 수 있음)
숫자형 입력값의 경우 입력값은 가변 크기를 가질 수 없습니다. 크기는 코드 생성 시점에 고정되어야 합니다.
GPU 코드 생성 시
gpuArray입력값은predict함수에서 지원되지 않습니다.cuDNN 라이브러리는 벡터와 2차원 영상 시퀀스를 지원합니다. TensorRT 라이브러리는 벡터 입력 시퀀스만 지원합니다. GPU용 ARM®
Compute Library는 순환 신경망을 지원하지 않습니다.벡터 시퀀스 입력값의 경우, 코드 생성 시에 특징의 개수가 상수여야 합니다. 시퀀스 길이는 가변 크기일 수 있습니다.
영상 시퀀스 입력값의 경우, 코드 생성 시에 높이, 너비, 채널 개수가 상수여야 합니다.
코드 생성 시에는
MiniBatchSize,ReturnCategorical,SequenceLength,SequencePaddingDirection및SequencePaddingValue이름-값 쌍 인수만 지원됩니다. 모든 이름-값 쌍은 컴파일타임 상수여야 합니다.코드 생성 시에는
SequenceLength이름-값 쌍의"longest"및"shortest"옵션만 지원됩니다.predict함수에 대한 GPU 코드 생성에서는 반정밀도 부동소수점 데이터형으로 정의된 입력값이 지원됩니다. 자세한 내용은half(GPU Coder)를 참조하십시오.ReturnCategorical이1(true)로 설정되어 있고 GCC C/C++ 컴파일러 버전 8.2 이상을 사용하면-Wstringop-overflow경고가 표시될 수 있습니다.
계산을 병렬로 실행하려면 ExecutionEnvironment 옵션을 "multi-gpu" 또는 "parallel"로 설정하십시오.
자세한 내용은 Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud 항목을 참조하십시오.
입력 데이터가 다음과 같은 경우
ExecutionEnvironment옵션은"auto"또는"gpu"여야 합니다.gpuArraygpuArray객체를 포함하는 셀형 배열gpuArray객체를 포함하는 테이블gpuArray객체를 포함하는 셀형 배열을 출력하는 데이터저장소gpuArray객체를 포함하는 테이블을 출력하는 데이터저장소
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2016a에 개발됨R2024a부터 DAGNetwork 객체와 SeriesNetwork 객체는 권장되지 않습니다. 대신 dlnetwork 객체를 사용하십시오. 이 권장 사항은 predict 함수도 권장되지 않음을 의미합니다. 대신 minibatchpredict 함수 또는 predict(dlnetwork) 함수를 사용하십시오.
DAGNetwork 객체와 SeriesNetwork 객체에 대한 지원을 제거할 계획은 없습니다. 하지만 다음과 같은 이점이 있는 dlnetwork 객체가 대신 권장됩니다.
dlnetwork객체는 신경망 구축, 예측, 기본 제공 훈련, 시각화, 압축, 검증 및 사용자 지정 훈련 루프를 지원하는 통합 데이터형입니다.dlnetwork객체는 외부 플랫폼에서 만들거나 가져올 수 있는 더 넓은 범위의 신경망 아키텍처를 지원합니다.dlnetwork객체는trainnet함수에서 지원되기 때문에 손실 함수를 쉽게 지정할 수 있습니다. 내장 손실 함수 중에서 선택하거나 사용자 지정 손실 함수를 지정할 수 있습니다.일반적으로
dlnetwork객체를 사용한 훈련과 예측이LayerGraph와trainNetwork를 사용하는 워크플로보다 더 빠릅니다.
훈련된 DAGNetwork 또는 SeriesNetwork 객체를 dlnetwork 객체로 변환하려면 dag2dlnetwork 함수를 사용하십시오.
다음 표에서는 predict 함수의 일반적인 사용법과 dlnetwork 객체를 대신 사용하도록 코드를 업데이트하는 방법을 보여줍니다.
| 권장되지 않음 | 권장됨 |
|---|---|
Y = predict(net,X); | Y = minibatchpredict(net,X); |
R2022b부터, predict, classify, predictAndUpdateState, classifyAndUpdateState, activations 함수를 사용하여 시퀀스 데이터로 예측을 수행할 때 SequenceLength 옵션이 정수인 경우, 각 미니 배치에서 가장 긴 시퀀스의 길이에 맞춰 시퀀스들을 채운 다음 이들 시퀀스를 지정된 시퀀스 길이를 갖는 미니 배치로 분할합니다. 미니 배치의 시퀀스 길이가 SequenceLength로 균등하게 나뉘지 않는 경우, 마지막 분할 미니 배치의 길이는 SequenceLength보다 짧습니다. 이 동작은 채우기 값만 포함하는 시간 스텝이 예측에 영향을 미치는 것을 방지합니다.
이전 릴리스에서는, 미니 배치의 길이보다 크거나 같은 SequenceLength의 가장 가까운 배수에 해당하는 길이가 되도록 미니 배치 시퀀스들을 채운 다음 데이터를 분할합니다. 이 동작을 재현하려면 미니 배치의 길이가 SequenceLength의 적절한 배수가 되도록 입력 데이터를 수동으로 채우십시오. sequence-to-sequence 워크플로의 경우 채우기 값에 해당하는 출력의 시간 스텝을 수동으로 제거해야 할 수도 있습니다.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)