Main Content

softmax

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

R2019b 以降

説明

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

ソフトマックス関数は、和が 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 オプションを指定しなければなりません。

詳細については、Deep Learning Data Formatsを参照してください。

データ型: char | string

出力引数

すべて折りたたむ

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

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

アルゴリズム

すべて折りたたむ

ソフトマックス活性化

関数 softmax は、和が 1 となるようにチャネル次元全体で入力を正規化します。詳細については、softmaxLayer のリファレンス ページに記載されたソフトマックス層の定義を参照してください。

深層学習配列の形式

深層学習のほとんどのネットワークと関数は、入力データの各次元に対して異なる方法で演算を行います。

たとえば、LSTM 演算は入力データの時間次元を反復処理し、バッチ正規化演算は入力データのバッチ次元を正規化します。

ラベルが付いた次元をもつ入力データ、または追加のレイアウト情報をもつ入力データを指定するには、"データ形式" を使用します。

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

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

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

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

形式を整えた入力データを作成するには、dlarray オブジェクトを作成し、2 番目の引数を使用して形式を指定します。

形式を整えていないデータを使用して追加のレイアウト情報を指定するには、引数 FMT を使用して形式を指定します。

詳細については、Deep Learning Data Formatsを参照してください。

拡張機能

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

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

バージョン履歴

R2019b で導入