メインコンテンツ

softmax

チャネル次元へのソフトマックス活性化の適用

説明

ソフトマックス活性化演算は、入力データのチャネルの次元にソフトマックス関数を適用します。

ソフトマックス関数は、和が 1 となるように入力データの値をチャネル次元全体で正規化します。ソフトマックス関数の出力は、確率分布とみなすことができます。

メモ

この関数は、ソフトマックス演算を dlarray データに適用します。dlnetwork オブジェクト内にソフトマックスを適用する場合は、softmaxLayer を使用します。

Y = softmax(X) は、入力データのチャネルの次元にソフトマックス伝達関数を適用し、入力 X のソフトマックス活性化を計算します。Y のすべての値は 01 になり、和は 1 になります。入力 X は、形式を整えた dlarray でなければなりません。出力 Y は、X と同じ次元形式をもち、形式を整えた dlarray になります。

X が、形式を整えていない dlarray である場合、Y = softmax(X,'DataFormat',FMT) は、次元形式 FMT も指定します。出力 Y は、X と同じ順序で次元が並べられた、形式を整えていない dlarray になります。

すべて折りたたむ

すべてのチャネルにわたって合計した和が 1 となるように、関数 softmax を使用して入力データのすべての値を 01 に収まる値に設定します。

入力分類データを、確率変数による 2 つの観測値として作成します。データは 10 個のカテゴリのいずれかになります。

numCategories = 10;
observations = 2;

X = rand(numCategories,observations);
X = dlarray(X,'CB');

softmax 活性化を計算します。

Y = softmax(X)
totalProb = sum(Y,1)
Y =

  10(C) x 2(B) dlarray

    0.1151    0.0578
    0.1261    0.1303
    0.0579    0.1285
    0.1270    0.0802
    0.0959    0.1099
    0.0562    0.0569
    0.0673    0.0753
    0.0880    0.1233
    0.1328    0.1090
    0.1337    0.1288
totalProb =

  1(C) x 2(B) dlarray

    1.0000    1.0000

Y のすべての値が、01 の範囲になります。各観測値をすべてのチャネルにわたって合計した和は 1 になります。

入力引数

すべて折りたたむ

入力データ。形式を整えた dlarray または形式を整えていない dlarray として指定します。X が、形式を整えた dlarray でない場合、'DataFormat',FMT を使用して次元ラベルの形式を指定しなければなりません。

X には、'C' チャネル次元が含まれていなければなりません。

データ型: single | double

データの次元の説明。文字ベクトルまたは string スカラーとして指定します。

データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

各文字は以下のとおりです。

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。

"S" または "U" のラベルが付いた次元については、複数回指定できます。ラベル "C""B"、および "T" はそれぞれ 1 回まで使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。

入力データが、形式を整えた dlarray オブジェクトでない場合は、FMT オプションを指定しなければなりません。

詳細については、深層学習のデータ形式を参照してください。

データ型: char | string

出力引数

すべて折りたたむ

ソフトマックス活性化。dlarray として返されます。Y のすべての値は 01 になります。出力 Y の基となるデータ型は、入力 X と同じです。

入力データ X が、形式を整えた dlarray である場合、Y の次元形式は X と同じになります。入力データが、形式を整えた dlarray でない場合、Y は、入力データと同じ次元の順序をもち、形式を整えていない dlarray になります。

アルゴリズム

すべて折りたたむ

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

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

バージョン履歴

R2019b で導入