이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
classificationLayer
(권장되지 않음) 분류 출력 계층
classificationLayer
는 권장되지 않습니다. 대신 trainnet
함수를 사용하고 손실 함수를 "crossentropy"
로 설정하십시오. 자세한 내용은 버전 내역을 참조하십시오.
설명
분류 계층은 상호 배타적인 클래스로의 분류 및 가중 분류 작업에서 교차 엔트로피 손실을 계산합니다.
이 계층은 이전 계층의 출력 크기로부터 클래스의 개수를 추정합니다. 예를 들어, 신경망의 클래스 개수 K를 지정하려면 분류 계층 앞에 출력 크기가 K인 완전 연결 계층 1개, 그리고 소프트맥스 계층 1개를 삽입하면 됩니다.
는 하나 이상의 이름-값 쌍을 사용하여 선택적으로 layer
= classificationLayer(Name,Value
)Name
, ClassWeights
, Classes
속성을 설정합니다. 예를 들어, classificationLayer('Name','output')
은 이름이 'output'
인 분류 계층을 만듭니다.
예제
분류 계층 만들기
분류 계층을 만듭니다.
이름이 'output'
인 분류 계층을 만듭니다.
layer = classificationLayer('Name','output')
layer = ClassificationOutputLayer with properties: Name: 'output' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
Layer
배열에 분류 출력 계층을 삽입합니다.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
layers = 7x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' 2-D Max Pooling 2x2 max pooling with stride [2 2] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax 7 '' Classification Output crossentropyex
입력 인수
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: classificationLayer('Name','output')
은 이름이 'output'
인 분류 계층을 만듭니다.
Name
— 계층 이름
""
(디폴트 값) | 문자형 벡터 | string형 스칼라
계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. Layer
배열 입력값에 대해 trainNetwork
함수는 이름이 ""
인 계층에 자동으로 이름을 할당합니다.
ClassificationOutputLayer
객체는 이 속성을 문자형 벡터로 저장합니다.
데이터형: char
| string
ClassWeights
— 가중 교차 엔트로피 손실에 대한 클래스 가중치
'none'
(디폴트 값) | 양수로 구성된 벡터
가중 교차 엔트로피 손실에 대한 클래스 가중치로, 양수로 구성된 벡터 또는 'none'
으로 지정됩니다.
벡터 클래스 가중치의 경우 각 요소는 Classes
속성에 있는 대응하는 클래스에 대한 가중치를 나타냅니다. 클래스 가중치로 구성된 벡터를 지정하려면 Classes
옵션을 사용하여 클래스도 지정해야 합니다.
ClassWeights
속성이 'none'
이면 계층은 비가중 교차 엔트로피 손실을 적용합니다.
Classes
— 출력 계층의 클래스
"auto"
(디폴트 값) | categorical형 벡터 | string형 배열 | 문자형 벡터로 구성된 셀형 배열
출력 계층의 클래스로, categorical형 벡터, string형 배열, 문자형 벡터로 구성된 셀형 배열 또는 "auto"
로 지정됩니다. Classes
가 "auto"
인 경우, 소프트웨어가 훈련 시점에 자동으로 클래스를 설정합니다. string형 배열 또는 문자형 벡터로 구성된 셀형 배열 str
을 지정하면, 출력 계층의 클래스가 categorical(str,str)
로 설정됩니다.
데이터형: char
| categorical
| string
| cell
출력 인수
layer
— 분류 계층
ClassificationOutputLayer
객체
분류 계층으로, ClassificationOutputLayer
객체로 반환됩니다.
계층을 결합하여 컨벌루션 신경망 아키텍처를 생성하는 방법은 Layer
를 참조하십시오.
세부 정보
분류 계층
분류 계층은 상호 배타적인 클래스로의 분류 및 가중 분류 작업에서 교차 엔트로피 손실을 계산합니다.
일반적인 분류 신경망에서 분류 계층은 대개 소프트맥스 계층 뒤에 옵니다. 분류 계층에서 trainNetwork
는 다음과 같이 소프트맥스 함수에서 값을 가져와서 1-of-K 코딩 체계에 대한 교차 엔트로피 함수를 사용하여 각 입력값을 K개의 상호 배타적인 클래스 중 하나에 할당합니다[1].
여기서 N은 샘플의 개수이고, K는 클래스의 개수이고, wi는 클래스 i의 가중치이고, tni는 샘플 n이 클래스 i에 속한다는 표시자이고, yni는 클래스 i의 샘플 n에 대한 출력값인데, 이 경우에는 소프트맥스 함수에서 가져온 값이 됩니다. 다시 말해서, yni는 신경망이 관측값 n을 클래스 i에 연결할 확률입니다.
참고 문헌
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
코드 생성기는 문자를 로캘 설정에 따라 결정되는 8비트 ASCII 코드 집합으로 표현합니다. 따라서 클래스 이름, 계층 이름, 계층 설명 또는 신경망 이름에 비ASCII 문자를 사용하면 오류가 발생할 수 있습니다. 자세한 내용은 코드 생성 시 문자 인코딩 (MATLAB Coder) 항목을 참조하십시오.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
GPU Coder™를 사용하여 CUDA® 또는 C++ 코드를 생성하려면 먼저 심층 신경망을 생성하고 훈련시켜야 합니다. 신경망이 훈련되고 평가된 후에는 코드를 생성하고 NVIDIA® 또는 ARM® GPU 프로세서를 사용하는 플랫폼에 컨벌루션 신경망을 배포하도록 코드 생성기를 구성할 수 있습니다. 자세한 내용은 GPU Coder를 사용한 딥러닝 (GPU Coder) 항목을 참조하십시오.
이 계층의 경우 NVIDIA CUDA 심층 신경망 라이브러리(cuDNN), NVIDIA TensorRT™ 고성능 추론 라이브러리 또는 Mali GPU용 ARM
Compute Library
를 사용하는 코드를 생성할 수 있습니다.코드 생성기는 문자를 로캘 설정에 따라 결정되는 8비트 ASCII 코드 집합으로 표현합니다. 따라서 클래스 이름, 계층 이름, 계층 설명 또는 신경망 이름에 비ASCII 문자를 사용하면 오류가 발생할 수 있습니다. 자세한 내용은 코드 생성 시 문자 인코딩 (MATLAB Coder) 항목을 참조하십시오.
버전 내역
R2016a에 개발됨R2024a: 권장되지 않음
R2024a부터 ClassificationOutputLayer
객체는 권장되지 않습니다. 대신 trainnet
을 사용하고 손실 함수를 "crossentropy"
로 설정하십시오.
ClassificationOutputLayer
객체에 대한 지원을 제거할 계획은 없습니다. 하지만 다음과 같은 이점이 있는 trainnet
함수가 대신 권장됩니다.
trainnet
은 외부 플랫폼에서 만들거나 가져올 수 있는 더 넓은 범위의 신경망 아키텍처를 지원하는dlnetwork
객체를 지원합니다.trainnet
을 사용하면 손실 함수를 쉽게 지정할 수 있습니다. 내장 손실 함수 중에서 선택하거나 사용자 지정 손실 함수를 지정할 수 있습니다.trainnet
은 신경망 구축, 예측, 기본 제공 훈련, 시각화, 압축, 검증, 사용자 지정 훈련 루프를 지원하는 통합 데이터형인dlnetwork
객체를 출력합니다.trainnet
이trainNetwork
보다 일반적으로 더 빠릅니다.
다음 표에서는 trainNetwork
함수를 ClassificationOutputLayer
객체와 함께 사용하는 몇 가지 방법과 trainnet
함수를 대신 사용하도록 코드를 업데이트하는 방법을 보여줍니다.
권장되지 않음 | 권장됨 |
---|---|
net = trainNetwork(data,layers,options) . 여기서 layers 는 ClassificationOutputLayer 객체를 포함합니다. | net = trainnet(data,layers,"crossentropy",options); layers 는 ClassificationOutputLayer 객체가 포함되지 않은 동일한 신경망을 지정합니다. |
net = trainNetwork(data,layers,options) . 여기서 layers 는 ClassWeights 가 숫자형 벡터로 설정된 ClassificationOutputLayer 객체를 포함합니다. | lossFcn = @(Y,T) crossentropy(Y,T,Weights=weights);
net = trainnet(data,layers,"crossentropy",options); weights 는 클래스 가중치를 지정하고 layers 는 ClassificationOutputLayer 객체가 포함되지 않은 동일한 신경망을 지정합니다. |
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)