メインコンテンツ

fullyConnectedLayer

説明

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

作成

説明

layer = fullyConnectedLayer(outputSize) は全結合層を返し、OutputSize プロパティを設定します。

layer = fullyConnectedLayer(outputSize,dim) は、OperationDimension プロパティも設定します。 (R2026a 以降)

layer = fullyConnectedLayer(outputSize,Name=Value) は、1 つ以上の名前と値の引数を使用して、オプションのプロパティを設定します。

入力引数

すべて展開する

全結合層の出力サイズ。正の整数として指定します。

この層の演算は、OperationDimension プロパティで指定された次元をフラット化した後、重み行列を乗算し、残りの次元の各要素に対して個別にバイアス ベクトルを加算します。 (R2026a 以降)

R2026a より前: この層の演算は、入力データの "S" (空間) 次元、"C" (チャネル) 次元、"U" (指定なし) 次元をフラット化した後、重み行列を乗算し、"B" (バッチ) 次元と "T" (時間) 次元の各要素に対して個別にバイアス ベクトルを加算します。

この引数は OutputSize プロパティを設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

R2026a 以降

演算次元。次のいずれかの値として指定します。

  • "spatial-channel" — 入力データの "S" (空間) 次元と "C" (チャネル) 次元をフラット化した後、重み行列を乗算し、"B" (バッチ) 次元、"T" (時間) 次元、および "U" (指定なし) 次元の各要素に対して個別にバイアス ベクトルを加算します。

  • 正の整数 — 層の入力データ X の指定された次元を、層演算における行列乗算 Weights*X の内部次元として使用し、残りの各次元に対して個別に演算を適用します。

この引数は OperationDimension プロパティを設定します。

データ型: single | double | char | string

名前と値の引数

すべて展開する

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: fullyConnectedLayer(10,Name="fc1") は、出力サイズが 10、名前が "fc1" の全結合層を作成します。

R2026a 以降

他の層からの学習可能なパラメーター。次の値を 0 個以上含む string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。

  • "weights" — 別の層から重みを受け取ります。InputLearnables プロパティで、この層が別の層から重みを受け取るように指定されている場合、この層には "weights" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Weights プロパティの重みを使用します。

  • "bias" — 別の層からバイアスを受け取ります。InputLearnables プロパティで、層が別の層からバイアスを受け取るように指定されている場合、この層には "bias" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Bias プロパティの重みを使用します。

InputLearnables で、この層が別の層から重みまたはバイアスを受け取るように指定されている場合、初期化子、学習可能なパラメーター、学習率係数、および L2 正則化係数を含む対応するプロパティは [] でなければなりません。

詳細については、Neural Network Weight Tyingを参照してください。

この引数は InputLearnables プロパティを設定します。

R2026a 以降

他の層に出力する学習可能なパラメーター。次の値を 0 個以上含む string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。

  • "weights" — 別の層に重みを出力します。OutputLearnables プロパティで、この層が別の層に重みを出力するように指定されている場合、この層には "weights" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層に重みを渡します。

  • "bias" — 別の層にバイアスを出力します。OutputLearnables プロパティで、この層が別の層にバイアスを出力するように指定されている場合、この層には "bias" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層にバイアスを渡します。

詳細については、Neural Network Weight Tyingを参照してください。

この引数は OutputLearnables プロパティを設定します。

重みを初期化する関数。次のいずれかの値として指定します。

  • "glorot" — Glorot 初期化子[1] (Xavier 初期化子とも呼ばれる) を使用して重みを初期化します。Glorot 初期化子は、平均 0、分散 2/(InputSize + OutputSize) の正規分布から個別にサンプリングを行います。

  • "he" — He 初期化子[2]を使用して重みを初期化します。He 初期化子は、平均 0、分散 2/InputSize の正規分布からサンプリングを行います。

  • "orthogonal" — 直交行列 Q を使用して入力の重みを初期化します。この直交行列は、単位正規分布に従ってサンプリングされた乱数行列 Z に対する QR 分解 Z = QR によって与えられます。[3]

  • "narrow-normal" — 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、重みを初期化します。

  • "zeros" — 0 で重みを初期化します。

  • "ones" — 1 で重みを初期化します。

  • 関数ハンドル — カスタム関数で重みを初期化します。関数ハンドルを指定する場合、関数の構文は weights = func(sz) という形式でなければなりません。ここで、sz は重みのサイズです。例については、カスタム重み初期化関数の指定を参照してください。

  • [] (R2026a 以降) — 重みを初期化しません。代わりに、'weights' 入力からの重みを使用します。

この層では、Weights プロパティが [] であり、かつ InputLearnables プロパティでこの層が別の層から重みを受け取るように指定されていない場合にのみ、重みが初期化されます。

この引数は WeightsInitializer プロパティを設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string | function_handle

バイアスを初期化する関数。次のいずれかの値として指定します。

  • "zeros" — 0 でバイアスを初期化します。

  • "ones" — 1 でバイアスを初期化します。

  • "narrow-normal" — 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、バイアスを初期化します。

  • 関数ハンドル — カスタム関数でバイアスを初期化します。関数ハンドルを指定する場合、関数は bias = func(sz) という形式でなければなりません。ここで、sz はバイアスのサイズです。

  • [] (R2026a 以降) — バイアスを初期化しません。代わりに、'bias' 入力からのバイアスを使用します。

この層では、Bias プロパティが [] であり、かつ InputLearnables プロパティでこの層が別の層からバイアスを受け取るように指定されていない場合にのみ、重みが初期化されます。

この引数は BiasInitializer プロパティを設定します。

データ型: char | string | function_handle

層の初期重み。行列として指定します。

InputLearnables プロパティで、この層が別の層から重みを受け取るように指定されている場合、この層には "weights" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Weights プロパティの重みを使用します。 (R2026a 以降)

層の重みは学習可能なパラメーターです。層の Weights プロパティを使用して、重みの初期値を直接指定できます。ネットワークに学習させるときに、Weights プロパティが空でない場合、trainnet 関数は Weights プロパティを初期値として使用します。Weights プロパティが空であり、かつ InputLearnables プロパティでこの層が別の層から重みを受け取るように指定されていない場合、ソフトウェアは WeightsInitializer プロパティによって指定された初期化子を使用します。

学習時、WeightsOutputSizeInputSize 列の行列です。

InputLearnables で、この層が別の層から重みを受け取るように指定されている場合、WeightsInitializerWeightsWeightLearnRateFactor、および WeightL2Factor の各プロパティは [] でなければなりません。

この引数は Weights プロパティを設定します。

データ型: single | double

層の初期バイアス。ベクトルとして指定します。

InputLearnables プロパティで、層が別の層からバイアスを受け取るように指定されている場合、この層には "bias" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Bias プロパティの重みを使用します。 (R2026a 以降)

層のバイアスは学習可能なパラメーターです。ニューラル ネットワークに学習させるときに、Bias プロパティが空でない場合、trainnet 関数は Bias プロパティを初期値として使用します。Bias が空であり、かつ InputLearnables プロパティでこの層が別の層からバイアスを受け取るように指定されていない場合、ソフトウェアは BiasInitializer プロパティによって指定された初期化子を使用します。

学習時、BiasOutputSize1 列のベクトルです。

InputLearnables で、この層が別の層からバイアスを受け取るように指定されている場合、BiasInitializerBiasBiasLearnRateFactor、および BiasL2Factor の各プロパティは [] でなければなりません。

この引数は Bias プロパティを設定します。

データ型: single | double

重みの学習率係数。次のいずれかの値として指定します。

  • 非負のスカラー — 指定された学習率係数を使用します。

  • [] (R2026a 以降) — 別の層の学習率係数を使用します。

この係数にグローバル学習率が乗算されて、この層の重みの学習率が決定されます。たとえば、WeightLearnRateFactor2 の場合、この層の重みの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル学習率が決定されます。

InputLearnables"weights" の場合、WeightsWeightsInitializerWeightLearnRateFactor、および WeightL2Factor の各プロパティは空でなければなりません。

この引数は WeightLearnRateFactor プロパティを設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

バイアスの学習率係数。次のいずれかとして指定します。

  • 非負のスカラー — 指定された学習率係数を使用します。

  • [] (R2026a 以降) — 別の層の学習率係数を使用します。

この係数にグローバル学習率が乗算されて、この層のバイアスの学習率が決定されます。たとえば、BiasLearnRateFactor2 の場合、層のバイアスの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル学習率が決定されます。

InputLearnables で、この層が別の層からバイアスを受け取るように指定されている場合、BiasInitializerBiasBiasLearnRateFactor、および BiasL2Factor の各プロパティは [] でなければなりません。

この引数は BiasLearnRateFactor プロパティを設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

重みの L2 正則化係数。次のいずれかの値として指定します。

  • 非負のスカラー — 指定された正則化係数を使用します。

  • [] (R2026a 以降) — 別の層の正則化係数を使用します。

この係数にグローバル L2 正則化係数が乗算されて、この層の重みの L2 正則化が決定されます。たとえば、WeightL2Factor2 の場合、この層の重みの L2 正則化はグローバル L2 正則化係数の 2 倍になります。グローバル L2 正則化係数は、関数 trainingOptions を使用して指定できます。

InputLearnables で、この層が別の層から重みを受け取るように指定されている場合、WeightsInitializerWeightsWeightLearnRateFactor、および WeightL2Factor の各プロパティは [] でなければなりません。

この引数は WeightL2Factor プロパティを設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

バイアスの L2 正則化係数。次のいずれかとして指定します。

  • 非負のスカラー — 指定された正則化係数を使用します。

  • [] (R2026a 以降) — 別の層の正則化係数を使用します。

この係数にグローバル L2 正則化係数が乗算されて、この層のバイアスの L2 正則化が決定されます。たとえば、BiasL2Factor2 の場合、この層のバイアスの L2 正則化はグローバル L2 正則化係数の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル L2 正則化係数が決定されます。

InputLearnables で、この層が別の層からバイアスを受け取るように指定されている場合、BiasInitializerBiasBiasLearnRateFactor、および BiasL2Factor の各プロパティは [] でなければなりません。

この引数は BiasL2Factor プロパティを設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

層の名前。文字ベクトルまたは string スカラーとして指定します。Layer 配列入力の場合、trainnet 関数および dlnetwork 関数は、名前のない層に自動的に名前を割り当てます。

この引数は Name プロパティを設定します。

データ型: char | string

プロパティ

すべて展開する

全結合

このプロパティは、オブジェクト作成後、読み取り専用になります。FullyConnectedLayer オブジェクトを作成する場合、このプロパティを設定するには、対応する位置入力の引数を使用します。

全結合層の出力サイズ。正の整数として指定します。

この層の演算は、OperationDimension プロパティで指定された次元をフラット化した後、重み行列を乗算し、残りの次元の各要素に対して個別にバイアス ベクトルを加算します。 (R2026a 以降)

R2026a より前: この層の演算は、入力データの "S" (空間) 次元、"C" (チャネル) 次元、"U" (指定なし) 次元をフラット化した後、重み行列を乗算し、"B" (バッチ) 次元と "T" (時間) 次元の各要素に対して個別にバイアス ベクトルを加算します。

データ型: double

R2026a 以降

このプロパティは、オブジェクト作成後、読み取り専用になります。FullyConnectedLayer オブジェクトを作成する場合、このプロパティを設定するには、対応する位置入力の引数を使用します。

演算次元。次のいずれかの値として指定します。

  • 'spatial-channel' — 入力データの "S" (空間) 次元と "C" (チャネル) 次元をフラット化した後、重み行列を乗算し、"B" (バッチ) 次元、"T" (時間) 次元、および "U" (指定なし) 次元の各要素に対して個別にバイアス ベクトルを加算します。

  • 正の整数 — 層の入力データ X の指定された次元を、層演算における行列乗算 Weights*X の内部次元として使用し、残りの各次元に対して個別に演算を適用します。

データ型: double | char

層の入力サイズ。正の整数または 'auto' として指定します。InputSize'auto' の場合、学習中に入力サイズが自動的に決定されます。

データ型: double | char

重み結束

R2026a 以降

このプロパティは、オブジェクト作成後、読み取り専用になります。FullyConnectedLayer オブジェクトを作成する場合、このプロパティを設定するには、対応する名前と値の引数を使用します。

他の層からの学習可能なパラメーター。次の値を 0 個以上含む cell 配列として指定します。

  • 'Weights' — 別の層から重みを受け取ります。InputLearnables プロパティで、この層が別の層から重みを受け取るように指定されている場合、この層には "weights" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Weights プロパティの重みを使用します。

  • 'Bias' — 別の層からバイアスを受け取ります。InputLearnables プロパティで、層が別の層からバイアスを受け取るように指定されている場合、この層には "bias" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Bias プロパティの重みを使用します。

InputLearnables で、この層が別の層から重みまたはバイアスを受け取るように指定されている場合、初期化子、学習可能なパラメーター、学習率係数、および L2 正則化係数を含む対応するプロパティは [] でなければなりません。

詳細については、Neural Network Weight Tyingを参照してください。

データ型: cell

R2026a 以降

このプロパティは、オブジェクト作成後、読み取り専用になります。FullyConnectedLayer オブジェクトを作成する場合、このプロパティを設定するには、対応する名前と値の引数を使用します。

他の層に出力する学習可能なパラメーター。次の値を 0 個以上含む文字ベクトルの cell 配列として指定します。

  • 'Weights' — 別の層に重みを出力します。OutputLearnables プロパティで、この層が別の層に重みを出力するように指定されている場合、この層には "weights" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層に重みを渡します。

  • 'Bias' — 別の層にバイアスを出力します。OutputLearnables プロパティで、この層が別の層にバイアスを出力するように指定されている場合、この層には "bias" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層にバイアスを渡します。

詳細については、Neural Network Weight Tyingを参照してください。

データ型: cell

パラメーターと初期化

重みを初期化する関数。次のいずれかの値として指定します。

  • 'glorot' — Glorot 初期化子[1] (Xavier 初期化子とも呼ばれる) を使用して重みを初期化します。Glorot 初期化子は、平均 0、分散 2/(InputSize + OutputSize) の正規分布から個別にサンプリングを行います。

  • 'he' — He 初期化子[2]を使用して重みを初期化します。He 初期化子は、平均 0、分散 2/InputSize の正規分布からサンプリングを行います。

  • 'orthogonal' — 直交行列 Q を使用して入力の重みを初期化します。この直交行列は、単位正規分布に従ってサンプリングされた乱数行列 Z に対する QR 分解 Z = QR によって与えられます。[3]

  • 'narrow-normal' — 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、重みを初期化します。

  • 'zeros' — 0 で重みを初期化します。

  • 'ones' — 1 で重みを初期化します。

  • 関数ハンドル — カスタム関数で重みを初期化します。関数ハンドルを指定する場合、関数の構文は weights = func(sz) という形式でなければなりません。ここで、sz は重みのサイズです。例については、カスタム重み初期化関数の指定を参照してください。

  • [] (R2026a 以降) — 重みを初期化しません。代わりに、'weights' 入力からの重みを使用します。

この層では、Weights プロパティが [] であり、かつ InputLearnables プロパティでこの層が別の層から重みを受け取るように指定されていない場合にのみ、重みが初期化されます。

データ型: double | char | string | function_handle

バイアスを初期化する関数。次のいずれかの値として指定します。

  • 'zeros' — 0 でバイアスを初期化します。

  • 'ones' — 1 でバイアスを初期化します。

  • 'narrow-normal' — 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、バイアスを初期化します。

  • 関数ハンドル — カスタム関数でバイアスを初期化します。関数ハンドルを指定する場合、関数は bias = func(sz) という形式でなければなりません。ここで、sz はバイアスのサイズです。

  • [] (R2026a 以降) — バイアスを初期化しません。代わりに、'bias' 入力からのバイアスを使用します。

この層では、Bias プロパティが [] であり、かつ InputLearnables プロパティでこの層が別の層からバイアスを受け取るように指定されていない場合にのみ、重みが初期化されます。

データ型: double | char | string | function_handle

層の初期重み。行列として指定します。

InputLearnables プロパティで、この層が別の層から重みを受け取るように指定されている場合、この層には "weights" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Weights プロパティの重みを使用します。 (R2026a 以降)

層の重みは学習可能なパラメーターです。層の Weights プロパティを使用して、重みの初期値を直接指定できます。ネットワークに学習させるときに、Weights プロパティが空でない場合、trainnet 関数は Weights プロパティを初期値として使用します。Weights プロパティが空であり、かつ InputLearnables プロパティでこの層が別の層から重みを受け取るように指定されていない場合、ソフトウェアは WeightsInitializer プロパティによって指定された初期化子を使用します。

学習時、WeightsOutputSizeInputSize 列の行列です。

InputLearnables で、この層が別の層から重みを受け取るように指定されている場合、WeightsInitializerWeightsWeightLearnRateFactor、および WeightL2Factor の各プロパティは [] でなければなりません。

データ型: single | double

層の初期バイアス。ベクトルとして指定します。

InputLearnables プロパティで、層が別の層からバイアスを受け取るように指定されている場合、この層には "bias" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Bias プロパティの重みを使用します。 (R2026a 以降)

層のバイアスは学習可能なパラメーターです。ニューラル ネットワークに学習させるときに、Bias プロパティが空でない場合、trainnet 関数は Bias プロパティを初期値として使用します。Bias が空であり、かつ InputLearnables プロパティでこの層が別の層からバイアスを受け取るように指定されていない場合、ソフトウェアは BiasInitializer プロパティによって指定された初期化子を使用します。

学習時、BiasOutputSize1 列のベクトルです。

InputLearnables で、この層が別の層からバイアスを受け取るように指定されている場合、BiasInitializerBiasBiasLearnRateFactor、および BiasL2Factor の各プロパティは [] でなければなりません。

データ型: single | double

学習率および正則化

重みの学習率係数。次のいずれかの値として指定します。

  • 非負のスカラー — 指定された学習率係数を使用します。

  • [] (R2026a 以降) — 別の層の学習率係数を使用します。

この係数にグローバル学習率が乗算されて、この層の重みの学習率が決定されます。たとえば、WeightLearnRateFactor2 の場合、この層の重みの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル学習率が決定されます。

InputLearnables"weights" の場合、WeightsWeightsInitializerWeightLearnRateFactor、および WeightL2Factor の各プロパティは空でなければなりません。

データ型: double

バイアスの学習率係数。次のいずれかとして指定します。

  • 非負のスカラー — 指定された学習率係数を使用します。

  • [] (R2026a 以降) — 別の層の学習率係数を使用します。

この係数にグローバル学習率が乗算されて、この層のバイアスの学習率が決定されます。たとえば、BiasLearnRateFactor2 の場合、層のバイアスの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル学習率が決定されます。

InputLearnables で、この層が別の層からバイアスを受け取るように指定されている場合、BiasInitializerBiasBiasLearnRateFactor、および BiasL2Factor の各プロパティは [] でなければなりません。

データ型: double

重みの L2 正則化係数。次のいずれかの値として指定します。

  • 非負のスカラー — 指定された正則化係数を使用します。

  • [] (R2026a 以降) — 別の層の正則化係数を使用します。

この係数にグローバル L2 正則化係数が乗算されて、この層の重みの L2 正則化が決定されます。たとえば、WeightL2Factor2 の場合、この層の重みの L2 正則化はグローバル L2 正則化係数の 2 倍になります。グローバル L2 正則化係数は、関数 trainingOptions を使用して指定できます。

InputLearnables で、この層が別の層から重みを受け取るように指定されている場合、WeightsInitializerWeightsWeightLearnRateFactor、および WeightL2Factor の各プロパティは [] でなければなりません。

データ型: double

バイアスの L2 正則化係数。次のいずれかとして指定します。

  • 非負のスカラー — 指定された正則化係数を使用します。

  • [] (R2026a 以降) — 別の層の正則化係数を使用します。

この係数にグローバル L2 正則化係数が乗算されて、この層のバイアスの L2 正則化が決定されます。たとえば、BiasL2Factor2 の場合、この層のバイアスの L2 正則化はグローバル L2 正則化係数の 2 倍になります。関数 trainingOptions で指定した設定に基づいて、グローバル L2 正則化係数が決定されます。

InputLearnables で、この層が別の層からバイアスを受け取るように指定されている場合、BiasInitializerBiasBiasLearnRateFactor、および BiasL2Factor の各プロパティは [] でなければなりません。

データ型: double

層の名前。文字ベクトルとして指定します。Layer 配列入力の場合、trainnet 関数および dlnetwork 関数は、名前のない層に自動的に名前を割り当てます。

データ型: char

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

層への入力の数。正の整数として格納されます。

入力の数は InputLearnables プロパティによって異なります。

  • 既定では、この層には層の入力データに対応する "in" という名前の入力があります。

  • InputLearnables プロパティで、この層が別の層から重みを受け取るように指定されている場合、この層には "weights" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Weights プロパティの重みを使用します。

  • InputLearnables プロパティで、層が別の層からバイアスを受け取るように指定されている場合、この層には "bias" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Bias プロパティの重みを使用します。

データ型: double

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

入力名。文字ベクトルの cell 配列として格納されます。

入力の数は InputLearnables プロパティによって異なります。

  • 既定では、この層には層の入力データに対応する "in" という名前の入力があります。

  • InputLearnables プロパティで、この層が別の層から重みを受け取るように指定されている場合、この層には "weights" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Weights プロパティの重みを使用します。

  • InputLearnables プロパティで、層が別の層からバイアスを受け取るように指定されている場合、この層には "bias" という名前の追加の入力があります。この場合、層はこの入力に渡された値を使用して層処理を行います。それ以外の場合、この層は Bias プロパティの重みを使用します。

データ型: cell

層からの出力の数。正の整数として格納されます。

出力の数は OutputLearnables プロパティによって異なります。

  • 既定では、この層には層の出力データに対応する "out" という名前の出力があります。

  • OutputLearnables プロパティで、この層が別の層に重みを出力するように指定されている場合、この層には "weights" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層に重みを渡します。

  • OutputLearnables プロパティで、この層が別の層にバイアスを出力するように指定されている場合、この層には "bias" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層にバイアスを渡します。

データ型: double

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

出力名。文字ベクトルの cell 配列として格納されます。

出力の数は OutputLearnables プロパティによって異なります。

  • 既定では、この層には層の出力データに対応する "out" という名前の出力があります。

  • OutputLearnables プロパティで、この層が別の層に重みを出力するように指定されている場合、この層には "weights" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層に重みを渡します。

  • OutputLearnables プロパティで、この層が別の層にバイアスを出力するように指定されている場合、この層には "bias" という名前の追加の出力があります。この場合、この層はこの出力を使用して他の層にバイアスを渡します。

データ型: cell

すべて折りたたむ

出力サイズが 10、名前が fc1 の全結合層を作成します。

layer = fullyConnectedLayer(10,Name="fc1")
layer = 
  FullyConnectedLayer with properties:

                  Name: 'fc1'

   Hyperparameters
             InputSize: 'auto'
            OutputSize: 10
    OperationDimension: 'spatial-channel'

   Learnable Parameters
               Weights: []
                  Bias: []

  Show all properties

Layer 配列に全結合層を含めます。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,Stride=2)
    fullyConnectedLayer(10)
    softmaxLayer]
layers = 
  6×1 Layer array with layers:

     1   ''   Image Input       28×28×1 images with 'zerocenter' normalization
     2   ''   2-D Convolution   20 5×5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU              ReLU
     4   ''   2-D Max Pooling   2×2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected   Fully connected layer with output size 10
     6   ''   Softmax           Softmax

重みとバイアスの初期化子関数を指定するには、それぞれ WeightsInitializer プロパティと BiasInitializer プロパティを使用します。重みとバイアスを直接指定するには、それぞれ Weights プロパティと Bias プロパティを使用します。

初期化関数の指定

出力サイズが 10 の全結合層を作成し、重み初期化子を He 初期化子に指定します。

outputSize = 10;
layer = fullyConnectedLayer(outputSize,'WeightsInitializer','he')
layer = 
  FullyConnectedLayer with properties:

                  Name: ''

   Hyperparameters
             InputSize: 'auto'
            OutputSize: 10
    OperationDimension: 'spatial-channel'

   Learnable Parameters
               Weights: []
                  Bias: []

  Show all properties

Weights プロパティおよび Bias プロパティは空になることに注意してください。学習時に、これらのプロパティは指定した初期化関数を使用して初期化されます。

カスタム初期化関数の指定

重みとバイアスの独自の初期化関数を指定するには、関数ハンドルに WeightsInitializer プロパティおよび BiasInitializer プロパティを設定します。これらのプロパティに、重みとバイアスのサイズを入力として取り、初期化値を出力する関数ハンドルを指定します。

出力サイズが 10 の全結合層を作成し、標準偏差 0.0001 のガウス分布から重みとバイアスをサンプリングする初期化子を指定します。

outputSize = 10;
weightsInitializationFcn = @(sz) rand(sz) * 0.0001;
biasInitializationFcn = @(sz) rand(sz) * 0.0001;

layer = fullyConnectedLayer(outputSize, ...
    'WeightsInitializer',@(sz) rand(sz) * 0.0001, ...
    'BiasInitializer',@(sz) rand(sz) * 0.0001)
layer = 
  FullyConnectedLayer with properties:

                  Name: ''

   Hyperparameters
             InputSize: 'auto'
            OutputSize: 10
    OperationDimension: 'spatial-channel'

   Learnable Parameters
               Weights: []
                  Bias: []

  Show all properties

ここでも、Weights プロパティおよび Bias プロパティは空になります。学習時に、これらのプロパティは指定した初期化関数を使用して初期化されます。

重みおよびバイアスの直接指定

出力サイズが 10 の全結合層を作成し、MAT ファイル FCWeights.mat で重みとバイアスをそれぞれ Wb に設定します。

outputSize = 10;
load FCWeights

layer = fullyConnectedLayer(outputSize, ...
    'Weights',W, ...
    'Bias',b)
layer = 
  FullyConnectedLayer with properties:

                  Name: ''

   Hyperparameters
             InputSize: 720
            OutputSize: 10
    OperationDimension: 'spatial-channel'

   Learnable Parameters
               Weights: [10×720 double]
                  Bias: [10×1 double]

  Show all properties

ここで、Weights プロパティおよび Bias プロパティには指定した値が含まれます。学習時に、これらのプロパティが空ではない場合、指定した値が初期の重みとバイアスとして使用されます。この場合、初期化子関数は使用されません。

アルゴリズム

すべて展開する

参照

[1] Glorot, Xavier, and Yoshua Bengio. "Understanding the Difficulty of Training Deep Feedforward Neural Networks." In Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics, 249–356. Sardinia, Italy: AISTATS, 2010. https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

[2] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. "Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification." In 2015 IEEE International Conference on Computer Vision (ICCV), 1026–34. Santiago, Chile: IEEE, 2015. https://doi.org/10.1109/ICCV.2015.123

[3] Saxe, Andrew M., James L. McClelland, and Surya Ganguli. "Exact Solutions to the Nonlinear Dynamics of Learning in Deep Linear Neural Networks.” Preprint, submitted February 19, 2014. https://arxiv.org/abs/1312.6120.

拡張機能

すべて展開する

バージョン履歴

R2016a で導入

すべて展開する