Main Content

ClassificationOutputLayer

(권장되지 않음) 분류 출력 계층

ClassificationOutputLayer 객체가 권장됩니다. 대신 trainnet 함수를 사용하고 손실 함수를 "crossentropy"로 설정하십시오. 자세한 내용은 버전 내역을 참조하십시오.

설명

분류 계층은 상호 배타적인 클래스로의 분류 및 가중 분류 작업에서 교차 엔트로피 손실을 계산합니다.

생성

classificationLayer를 사용하여 분류 계층을 만듭니다.

속성

모두 확장

분류 출력

가중 교차 엔트로피 손실에 대한 클래스 가중치로, 양수로 구성된 벡터 또는 'none'으로 지정됩니다.

벡터 클래스 가중치의 경우 각 요소는 Classes 속성에 있는 대응하는 클래스에 대한 가중치를 나타냅니다. 클래스 가중치로 구성된 벡터를 지정하려면 Classes 옵션을 사용하여 클래스도 지정해야 합니다.

ClassWeights 속성이 'none'이면 계층은 비가중 교차 엔트로피 손실을 적용합니다.

출력 계층의 클래스로, categorical형 벡터, string형 배열, 문자형 벡터로 구성된 셀형 배열 또는 "auto"로 지정됩니다. Classes"auto"인 경우, 소프트웨어가 훈련 시점에 자동으로 클래스를 설정합니다. string형 배열 또는 문자형 벡터로 구성된 셀형 배열 str을 지정하면, 출력 계층의 클래스가 categorical(str,str)로 설정됩니다.

데이터형: char | categorical | string | cell

읽기 전용 속성입니다.

출력 크기로, 양의 정수로 지정됩니다. 이 값은 데이터에 있는 레이블의 개수입니다. 훈련 전에는 출력 크기가 'auto'로 설정됩니다.

읽기 전용 속성입니다.

훈련에 대한 손실 함수로, Cross Entropy Function for k Mutually Exclusive Classes(k개의 상호 배타적인 클래스에 대한 교차 엔트로피 함수)를 나타내는 'crossentropyex'로 지정됩니다.

계층

계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. Layer 배열 입력값에 대해 trainNetwork 함수는 이름이 ""인 계층에 자동으로 이름을 할당합니다.

ClassificationOutputLayer 객체는 이 속성을 문자형 벡터로 저장합니다.

데이터형: char | string

계층에 대한 입력값의 개수로, 1로 반환됩니다. 이 계층은 단일 입력값만 받습니다.

데이터형: double

입력값 이름으로, {'in'}으로 반환됩니다. 이 계층은 단일 입력값만 받습니다.

데이터형: cell

계층의 출력값 개수로, 0으로 반환됩니다. 이 계층에는 출력값이 없습니다.

데이터형: double

계층의 출력값 이름으로, {}로 반환됩니다. 이 계층에는 출력값이 없습니다.

데이터형: cell

예제

모두 축소

분류 계층을 만듭니다.

이름이 '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

세부 정보

모두 확장

참고 문헌

[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.

버전 내역

R2016a에 개발됨

모두 확장

R2024a: 권장되지 않음

R2024a부터 ClassificationOutputLayer 객체는 권장되지 않습니다. 대신 trainnet을 사용하고 손실 함수를 "crossentropy"로 설정하십시오.

ClassificationOutputLayer 객체에 대한 지원을 제거할 계획은 없습니다. 하지만 다음과 같은 이점이 있는 trainnet 함수가 대신 권장됩니다.

  • trainnet은 외부 플랫폼에서 만들거나 가져올 수 있는 더 넓은 범위의 신경망 아키텍처를 지원하는 dlnetwork 객체를 지원합니다.

  • trainnet을 사용하면 손실 함수를 쉽게 지정할 수 있습니다. 내장 손실 함수 중에서 선택하거나 사용자 지정 손실 함수를 지정할 수 있습니다.

  • trainnet은 신경망 구축, 예측, 기본 제공 훈련, 시각화, 압축, 검증, 사용자 지정 훈련 루프를 지원하는 통합 데이터형인 dlnetwork 객체를 출력합니다.

  • trainnettrainNetwork보다 일반적으로 더 빠릅니다.

다음 표에서는 trainNetwork 함수를 ClassificationOutputLayer 객체와 함께 사용하는 몇 가지 방법과 trainnet 함수를 대신 사용하도록 코드를 업데이트하는 방법을 보여줍니다.

권장되지 않음권장됨
net = trainNetwork(data,layers,options). 여기서 layersClassificationOutputLayer 객체를 포함합니다.

net = trainnet(data,layers,"crossentropy",options);
이 예에서 layersClassificationOutputLayer 객체가 포함되지 않은 동일한 신경망을 지정합니다.

net = trainNetwork(data,layers,options). 여기서 layersClassWeights가 숫자형 벡터로 설정된 ClassificationOutputLayer 객체를 포함합니다.

lossFcn = @(Y,T) crossentropy(Y,T,Weights=weights);
net = trainnet(data,layers,"crossentropy",options);
이 예에서 weights는 클래스 가중치를 지정하고 layersClassificationOutputLayer 객체가 포함되지 않은 동일한 신경망을 지정합니다.