ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fullyConnectedLayer

説明

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

作成

構文

layer = fullyConnectedLayer(outputSize)
layer = fullyConnectedLayer(outputSize,Name,Value)

説明

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

layer = fullyConnectedLayer(outputSize,Name,Value) は、名前と値のペアを使用して、オプションのプロパティ WeightLearnRateFactorBiasLearnRateFactorWeightL2FactorBiasL2Factor、および Name を設定します。たとえば、fullyConnectedLayer(10,'Name','fc1') は、出力サイズが 10、名前が 'fc1' である全結合層を作成します。複数の名前と値のペアを指定できます。各プロパティを、一重引用符で囲みます。

プロパティ

すべて展開する

重みの学習率係数。非負のスカラーとして指定します。

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

例: 2

バイアスの学習率係数。非負のスカラーとして指定します。

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

例: 2

重みの L2 正則化係数。非負のスカラーとして指定します。

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

例: 2

バイアスの L2 正則化係数。非負のスカラーとして指定します。

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

例: 2

層の名前。文字ベクトルまたは string スカラーとして指定します。層グラフに層を含めるには、空ではない一意の層の名前を指定しなければなりません。この層が含まれる系列ネットワークに学習させて Name'' に設定すると、学習時に層に名前が自動的に割り当てられます。

データ型: char | string

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

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

例: 10

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

データ型: single | double

層のバイアス。OutputSize1 列の行列として指定します。

データ型: single | double

すべて折りたたむ

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

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

          Name: 'fc1'

   Hyperparameters
     InputSize: 'auto'
    OutputSize: 10

   Learnable Parameters
       Weights: []
          Bias: []

  Show all properties

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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

出力サイズが 10 の全結合層を作成します。バイアスの学習率係数を 2 に設定します。重みを標準偏差 0.0001 のガウス分布から手動で初期化します。

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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

全結合層の重みを初期化するには、層の入力サイズを知っておかなければなりません。入力サイズは、前の最大プーリング層の出力サイズに等しくなりますが、出力サイズは、畳み込み層の出力サイズによって異なります。

畳み込み層のチャネル (特徴マップ) の 1 方向に対して、出力は になります。最大プーリング層には重ならない領域があるため、各方向に 2 () だけダウンサンプリングします。畳み込み層の 1 つのチャネルに対して、最大プーリング層の出力は になります。畳み込み層には 20 個のチャネルがあるため、最大プーリング層の出力は になります。これが全結合層の入力のサイズです。

重なる領域の式でも同じ結果が得られます。チャネルの 1 方向に対して、出力は になります。1 つのチャネルに対して、出力は 144 になります。畳み込み層の 20 個すべてのチャネルに対して、最大プーリング層の出力は 2880 になります。

全結合層の重みを平均 0、標準偏差 0.0001 のガウス分布から初期化します。

layers(5).Weights = randn([10 2880]) * 0.0001;

randn([10 2880]) は、平均 0、標準偏差 1 のガウス分布から値の 10 行 2880 列の行列を返します。これらの値に 0.0001 を乗算することによってガウス分布の標準偏差が 0.0001 に設定されます。

バイアスを平均 1、標準偏差 0.0001 のガウス分布から初期化します。

layers(5).Bias = randn([10 1])*0.0001 + 1;

バイアス ベクトルのサイズは全結合層の出力サイズ 10 に等しくなります。randn([10 1]) は、平均 0、標準偏差 1 のガウス分布から値の 10 行 1 列のベクトルを返します。これらの値に 0.00001 を乗算することによって値の標準偏差が 0.00001 に設定され、1 を加算することによってガウス分布の平均が 1 に設定されます。

詳細

すべて展開する

アルゴリズム

初期重みの既定値は、平均 0、標準偏差 0.01 のガウス分布に従います。初期バイアスの既定値は 0 です。重みとバイアスの初期化を手動で変更する方法を示す例については、全結合層の初期の重みとバイアスの指定を参照してください。

R2016a で導入