Main Content

classificationLayer

(非推奨) 分類出力層

classificationLayer は推奨されません。代わりに、関数 trainnet を使用し、損失関数を "crossentropy" に設定します。詳細については、バージョン履歴を参照してください。

説明

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

この層は、前の層の出力サイズからクラスの数を推測します。たとえば、ネットワークのクラスの数 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   ''   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' という名前の分類層を作成します。

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

ClassificationOutputLayer オブジェクトは、このプロパティを文字ベクトルとして格納します。

データ型: 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.

拡張機能

バージョン履歴

R2016a で導入

すべて折りたたむ

R2024a: 非推奨

R2024a 以降、ClassificationOutputLayer オブジェクトは非推奨となりました。代わりに、trainnet を使用し、損失関数を "crossentropy" に設定してください。

ClassificationOutputLayer オブジェクトのサポートを削除する予定はありません。ただし、関数 trainnet には次の利点があるため、代わりにこの関数を使うことを推奨します。

  • trainnetdlnetwork オブジェクトをサポートしています。このオブジェクトは、ユーザーが作成したり外部のプラットフォームからインポートしたりできる、さまざまなネットワーク アーキテクチャをサポートしています。

  • trainnet を使用すると、損失関数を簡単に指定できます。組み込みの損失関数を選択するか、カスタム損失関数を指定できます。

  • trainnetdlnetwork オブジェクトを出力します。このオブジェクトは、ネットワークの構築、予測、組み込み学習、可視化、圧縮、検証、およびカスタム学習ループをサポートする統合されたデータ型です。

  • trainnet は、通常、trainNetwork よりも高速です。

関数 trainNetworkClassificationOutputLayer オブジェクトを組み合わせた代表的な使用法と、代わりに関数 trainnet を使用するためのコードの更新方法を、次の表に示します。

非推奨推奨
net = trainNetwork(data,layers,options)layers には ClassificationOutputLayer オブジェクトが含まれています。

net = trainnet(data,layers,"crossentropy",options);
この例では、ClassificationOutputLayer オブジェクトを使用せずに、layers で同じネットワークを指定しています。

net = trainNetwork(data,layers,options)layers には、ClassWeights が数値ベクトルに設定された ClassificationOutputLayer オブジェクトが含まれています。

lossFcn = @(Y,T) crossentropy(Y,T,Weights=weights);
net = trainnet(data,layers,"crossentropy",options);
この例では、ClassificationOutputLayer オブジェクトを使用せずに、weights でクラスの重みを指定し、layers で同じネットワークを指定しています。