Neural Network Consoleレイヤーリファレンス ~Convolution~

Convolutionレイヤー(畳み込み層)

説明

入力値に対して畳み込み演算を行うレイヤーです。
Convolutionレイヤー

畳み込みとは

畳み込みとはフィルタ(カーネル)を平行移動しながら入力データに重ね足し合わせる二項演算です。
畳み込み処理

畳み込みは画像解析において、画像の特長量を抽出する効果があります。
詳しくはこちらの記事を参照ください。

こんにちはー。管理人のピヨ猫でーす。 SONY Neural Network Consoleでディープラーニングの画像認識にチャレンジしてい...

数式

1次元Convolutionの場合

1次元Convolution

2次元Convolutionの場合

1次元Convolution

(Oは出力、Iは入力、i,jはカーネルサイズ、x,y,nは入力のIndex、mは出力マップ(OutMapsプロパティ)、Wはカーネルの重み、bは各カーネルのバイアス項を示す)

プロパティ

KernelShape

畳み込むカーネルのサイズを指定します。
例えば画像に3(Height) × 5(Width)の2次元のカーネルを畳み込む場合「3,5」とします。
例えば1次元の時系列信号に7 tapのフィルタを畳み込む場合は「7」とします。

デフォルト値 = 3,3

WithBias

バイアス項(b)の有無を指定します。

デフォルト値 = True

  • True:バイアス項(b)有り
  • False:バイアス項(b)無し

OutMaps

畳み込むカーネルの数(=出力データ数)を指定します。
例えば入力に対して16種類のフィルタを畳み込む場合は「16」とします。

デフォルト値 = 16

BorderMode

畳み込みを行う範囲を指定します。

  • valid:各軸の入力データサイズに対して、Kernel Shape分の畳み込みが可能な範囲で畳み込みを行います。この場合出力するデータの各軸のサイズは入力サイズ-Kernel Shape+1になります。
  • full:各軸の入力データに対して、1サンプルでも畳み込みが可能な範囲で畳み込みを行います。足りない範囲のデータ(上下左右それぞれKernel Shape – 1)には0がPaddingされます。この場合出力するデータの各軸のサイズは入力サイズ+Kernel Shape-1になります。
  • same:入力データと出力データのサイズが同じになるような範囲で畳み込みを行います。足りない範囲のデータ(上下左右それぞれKernel Shape/2 – 1)には0がPaddingされます。

デフォルト値 = same

Padding

畳み込み処理前に配列の端にゼロを追加するサイズを指定します。例えば画像の上下方向に3ピクセル、左右に2ピクセルを挿入するには「3,2」とします。
*ConvolutionPaddingSize:PaddingにBorderModeから算出される値を用います。

デフォルト値 = *ConvolutionPaddingSize

Strides

カーネルの畳み込みを何サンプル毎に行うかを指定します。
1以外のStrideを指定した軸の出力サイズは、指定した値でダウンサンプリングされます。
例えば画像のX軸方向には2毎サンプル毎、Y軸方向には3サンプル毎に畳み込みを行う場合は「3,2」とします。

デフォルト値 = 1,1

Dilation

カーネルを広げる倍率をカーネルに対するStrideの値で指定します。
例えば3(Height)x5(Width)の2次元のカーネルをHeight3倍、Width2倍に広げ、7×9の範囲に対してConvolutionを行う場合は「3,2」とします。

デフォルト値 = 1,1

Group

OutMapsをグルーピングする単位を指定します。

デフォルト値 = 1

ParameterScope

このレイヤーで用いるパラメータの名前を指定します。
同じParameterScopeの指定されたレイヤーの間ではパラメータが共有されます。

デフォルト値 = *Name

W.File

プリトレーニング(事前学習)された重みWを用いる場合に、Wの書かれたファイルを絶対パスで指定します。
Fileが指定されており重みWをファイルから読み込む場合、Initializerによる初期化は無効になります。

デフォルト値 = ブランク

W.Initializer

重みWの初期化方法を指定します。

デフォルト値 = NormalAffineGlorot

  • Uniform:-1.0~1.0の一様乱数で初期化します
  • UniformAffineGlorot:一様乱数にXavier Glorot提案の 係数をかけて初期化します
  • Normal:平均0.0、分散1.0であるガウス乱数で初期化します
  • NormalAffineHeForward:ガウス乱数にKaiming He提案の係数をかけて初期化します(Forward Case)
  • NormalAffineHeBackward:ガウス乱数にKaiming He提案の係数をかけて初期化します(Backward Case)
  • NormalAffineGlorot:ガウス乱数にXavier Glorot提案の 係数をかけて初期化します
  • Constant:全ての要素を一定値(1.0)で初期化します

W.InitializerMultiplier

W.Initializerにより生成した値に対して掛ける係数を指定します。

デフォルト値 = 1

W.LRateMultiplier

コンフィグタブで指定したLearning Rateに対し、重みWの更新に用いるLearning Rateの倍率を指定します。
例えばコンフィグタブで指定したLearning Rateが0.01の状態でW.LRateMultiplierを2とした場合、重みWはLearning Rate0.02で更新されます。

デフォルト値 = 1

b.File

プリトレーニング(事前学習)されたバイアス項bを用いる場合に、bの書かれたファイルを絶対パスで指定します。
Fileが指定されておりバイアス項bをファイルから読み込む場合、Initializerによる初期化は無効になります。

デフォルト値 = ブランク

b.Initializer

バイアス項bの初期化方法を指定します。

デフォルト値 = NormalAffineGlorot

  • Uniform:-1.0~1.0の一様乱数で初期化します
  • UniformAffineGlorot:一様乱数にXavier Glorot提案の 係数をかけて初期化します
  • Normal:平均0.0、分散1.0であるガウス乱数で初期化します
  • NormalAffineHeForward:ガウス乱数にKaiming He提案の係数をかけて初期化します(Forward Case)
  • NormalAffineHeBackward:ガウス乱数にKaiming He提案の係数をかけて初期化します(Backward Case)
  • NormalAffineGlorot:ガウス乱数にXavier Glorot提案の 係数をかけて初期化します
  • Constant:全ての要素を一定値(1.0)で初期化します

b.InitializerMultiplier

b.Initializerにより生成した値に対して掛ける係数を指定します。

デフォルト値 = 1

b.LRateMultiplier

コンフィグタブで指定したLearning Rateに対し、バイアス項bの更新に用いるLearning Rateの倍率を指定します。
例えばコンフィグタブで指定したLearning Rateが0.01の状態でb.LRateMultiplierを2とした場合、バイアス項bはLearning Rate0.02で更新されます。

デフォルト値 = 1

出力サイズ

Strides数, (入力のwidth + Padding) / Stridesのx軸, (出力のheight + Padding) / Stridesのy軸
※ 端数はBorderModeの指定に応じて調整

利用用途

CNNの畳み込み層で用います。
CNNの基幹となるレイヤーです。

サンプル構成

CNN(畳み込みニューラルネットワーク)

CNN

CNNについての詳しいことはこちら↓↓↓

こんにちはー。管理人のピヨ猫でーす。 SONY Neural Network Consoleでディープラーニングの画像認識にチャレンジしてい...

【送料無料】 ソニー開発のNeural Network Console入門 増補改訂・クラウド対応版--数式なし、コーディングなしのディープラーニング / 足立悠 【本】

価格:2,592円
(2019/6/26 22:40時点)
感想(0件)

広告




スポンサーリンク
広告




広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告