Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

classificationLayer

説明

分類層は、互いに排他的なクラスをもつ分類タスクおよび重み付き分類タスクの交差エントロピー損失を計算します。

この層は、前の層の出力サイズからクラスの数を推測します。たとえば、ネットワークのクラスの数 K を指定するには、分類層の前に出力サイズが K の全結合層とソフトマックス層を含めます。

layer = classificationLayer は、分類層を作成します。

layer = classificationLayer(Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、オプションの NameClassWeights、および 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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

"cat"、"dog"、"fish" という名前をもち、重みがそれぞれ 0.7、0.2、0.1 である 3 つのクラスに対する重み付き分類層を作成します。

classes = ["cat" "dog" "fish"];
classWeights = [0.7 0.2 0.1];

layer = classificationLayer( ...
    'Classes',classes, ...
    'ClassWeights',classWeights)
layer = 
  ClassificationOutputLayer with properties:

            Name: ''
         Classes: [cat    dog    fish]
    ClassWeights: [3x1 double]
      OutputSize: 3

   Hyperparameters
    LossFunction: 'crossentropyex'

Layer 配列に重み付き分類出力層を含めます。

numClasses = numel(classes);

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer('Classes',classes,'ClassWeights',classWeights)]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         3 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   Class weighted crossentropyex with 'cat' and 2 other classes

入力引数

すべて折りたたむ

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: classificationLayer('Name','output') は、'output' という名前の分類層を作成します。

層の名前。文字ベクトルまたは string スカラーとして指定します。Layer 配列入力の場合、関数 trainNetworkassembleNetworklayerGraph、および dlnetwork は、名前が '' の層に自動的に名前を割り当てます。

データ型: char | string

交差エントロピー損失のクラスの重み。正の数値のベクトルまたは 'none' として指定します。

クラスの重みをベクトルで指定した場合、各要素は、Classes プロパティで該当するクラスの重みを表します。クラスの重みのベクトルを指定するには、'Classes' を使用してクラスも指定しなければなりません。

ClassWeights プロパティが 'none' の場合は、重みなしの交差エントロピー損失が層に適用されます。

出力層のクラス。categorical ベクトル、string 配列、文字ベクトルの cell 配列、または 'auto' として指定します。Classes'auto' の場合、学習時にクラスが自動的に設定されます。string 配列または文字ベクトルの cell 配列 str を指定すると、出力層のクラスが categorical(str,str) に設定されます。

データ型: char | categorical | string | cell

出力引数

すべて折りたたむ

分類層。ClassificationOutputLayer オブジェクトとして返されます。

層の連結による畳み込みニューラル ネットワーク アーキテクチャの構築の詳細は、Layer を参照してください。

詳細

すべて折りたたむ

分類層

分類層は、互いに排他的なクラスをもつ分類タスクおよび重み付き分類タスクの交差エントロピー損失を計算します。

一般的な分類ネットワークでは、通常、分類層がソフトマックス層の後に続きます。分類層では、trainNetwork がソフトマックス関数から値を取得し、1 対 K 符号化方式の交差エントロピー関数を使用して、K 個の互いに排他的なクラスのうちの 1 つに各入力を割り当てます[1]

loss=1Nn=1Ni=1Kwitnilnyni,

ここで、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++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2016a で導入