Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fullyconnect

すべての重み付き入力データの加算とバイアスの適用

R2019b 以降

説明

全結合演算は、入力に重み行列を乗算してから、バイアス ベクトルを加算します。

メモ

この関数は、全結合演算を dlarray データに適用します。layerGraph オブジェクトまたは Layer 配列内に全結合演算を適用する場合は、次の層を使用します。

Y = fullyconnect(X,weights,bias) は、weights で指定された重みを使用して、X に含まれる空間データ、チャネル データ、未指定データの重み付き和を計算し、さらにバイアスを追加します。入力 X は、書式化された dlarray でなければなりません。出力 Y は、書式化された dlarray です。

X が書式設定されていない dlarray である場合、Y = fullyconnect(X,weights,bias,'DataFormat',FMT) は、次元形式 FMT も指定します。出力 Y は、書式化されていない dlarray です。

すべて折りたたむ

関数 fullyconnect は、重み付き和を使用して、観測値のすべての入力を各出力特徴に接続します。

入力データを、高さと幅が 12、チャネル数が 32 の乱数値による単一の観測値として作成します。

height = 12;
width = 12;
channels = 32;
observations = 1;

X = rand(height,width,channels,observations);
X = dlarray(X,'SSCB');

学習可能なパラメーターを作成します。この演算では 10 個の出力特徴があります。

outputFeatures = 10;

weights = ones(outputFeatures,height,width,channels);
bias = ones(outputFeatures,1);

fullyconnect 演算を適用します。

Y = fullyconnect(X,weights,bias);
Y = 
  10(C) × 1(B) dlarray

   1.0e+03 *

    2.3266
    2.3266
    2.3266
    2.3266
    2.3266
    2.3266
    2.3266
    2.3266
    2.3266
    2.3266

出力 Y は、サイズが 10 である 1 つのチャネル次元、および大きさが 1 である 1 つのバッチ次元をもつ 2 次元の dlarray です。

入力引数

すべて折りたたむ

入力データ。書式化された dlarray、書式化されていない dlarray、または数値配列として指定します。X が書式化された dlarray でない場合、'DataFormat',FMT を使用して次元ラベルの形式を指定しなければなりません。X が数値配列の場合、少なくとも weightsbias のいずれかが dlarray でなければなりません。

fullyconnect 演算は、weights で指定された各出力特徴について、X'S' 次元、'C' 次元、および 'U' 次元の和の演算を実行します。X'B' 次元または 'T' 次元のサイズは保持されます。

データ型: single | double

重み。書式化された dlarray、書式化されていない dlarray、または数値配列として指定します。

weights が書式化されていない dlarray または数値配列の場合、weights の最初の次元は出力特徴の数と一致しなければなりません。weights が書式化された dlarray の場合、'C' 次元のサイズは出力特徴の数と一致しなければなりません。weights には、入力 X'S' 次元、'C' 次元、および 'U' 次元の結合後のサイズに出力特徴の数が乗算されたのと同じ数の要素が含まれていなければなりません。

データ型: single | double

バイアス定数。書式化された dlarray、書式化されていない dlarray、または数値配列として指定します。

bias の各要素は、対応する特徴出力に適用されたバイアスです。bias の要素の数は、weights の最初の次元によって指定された出力特徴の数と一致しなければなりません。

bias が書式化された dlarray の場合、大きさが 1 でない次元は '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 の基となるデータ型は、入力 X と同じです。

入力 X が書式化された dlarray の場合、出力 Y は、出力特徴を表す 'C' のラベルが付いた次元を 1 つもち、さらに、入力 X に含まれているのと同じ数の 'B' 次元または 'T' 次元をもちます (それらのいずれかまたは両方の次元が存在する場合)。X'B' 次元も 'T' 次元も含まれていない場合、Y の形式は 'CB' になります。ここで、'B' は大きさが 1 の次元です。

入力 X が書式化された dlarray ではない場合、出力 Y は書式化されません。Y の最初の次元に出力特徴が格納されます。Y のその他の次元は、X'B' 次元および 'T' 次元に対応し (それらのいずれかまたは両方の次元が存在する場合)、FMT での順序と同じ順序で与えられます。X'B' 次元も 'T' 次元も含まれていない場合、Y の最初の次元に出力特徴が格納され、2 番目の次元は大きさが 1 になります。

アルゴリズム

すべて折りたたむ

全結合演算

関数 fullyconnect は、前の演算で得られたすべての出力を関数 fullyconnect の出力に結合します。詳細については、fullyConnectedLayer のリファレンス ページに記載された全結合層の定義を参照してください。

深層学習配列の形式

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

たとえば、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 で導入