classificationLayer
(非推奨) 分類出力層
classificationLayer
は推奨されません。代わりに、関数 trainnet
を使用し、損失関数を "crossentropy"
に設定します。詳細については、バージョン履歴を参照してください。
説明
分類層は、互いに排他的なクラスをもつ分類タスクおよび重み付き分類タスクのクロスエントロピー損失を計算します。
この層は、前の層の出力サイズからクラスの数を推測します。たとえば、ネットワークのクラスの数 K を指定するには、分類層の前に出力サイズが K の全結合層とソフトマックス層を含めます。
は、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 配列 | 文字ベクトルの cell 配列
出力層のクラス。categorical ベクトル、string 配列、文字ベクトルの cell 配列、または "auto"
として指定します。Classes
が "auto"
の場合、学習時にクラスが自動的に設定されます。string 配列または文字ベクトルの cell 配列 str
を指定すると、出力層のクラスが categorical(str,str)
に設定されます。
データ型: char
| categorical
| string
| cell
出力引数
layer
— 分類層
ClassificationOutputLayer
オブジェクト
分類層。ClassificationOutputLayer
オブジェクトとして返されます。
層の連結による畳み込みニューラル ネットワーク アーキテクチャの構築の詳細は、Layer
を参照してください。
詳細
分類層
分類層は、互いに排他的なクラスをもつ分類タスクおよび重み付き分類タスクのクロスエントロピー損失を計算します。
一般的な分類ネットワークでは、通常、分類層がソフトマックス層の後に続きます。分類層では、trainNetwork
がソフトマックス関数から値を取得し、1 対 K 符号化方式のクロス エントロピー関数を使用して、K 個の互いに排他的なクラスのうちの 1 つに各入力を割り当てます[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); 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 で同じネットワークを指定しています。 |
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)