Main Content

ClassificationOutputLayer

(非推奨) 分類出力層

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

説明

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

作成

分類層は classificationLayer を使用して作成します。

プロパティ

すべて展開する

分類出力

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

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

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

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

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

この プロパティ は読み取り専用です。

出力のサイズ。正の整数として指定します。この値は、データに含まれるラベルの数です。学習前に、出力サイズが 'auto' に設定されます。

この プロパティ は読み取り専用です。

学習用の損失関数。"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 には次の利点があるため、代わりにこの関数を使うことを推奨します。

  • 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 で同じネットワークを指定しています。