ConvolutionLayer

ConvolutionLayer[n,s]

n 個の出力チャンネルを持ち,サイズ s のカーネルを使ってたたみ込みを計算する,訓練可能なたたみ込みネット層を表す.

ConvolutionLayer[n,{s}]

サイズ s のカーネルを持つ一次元たたみ込みを行う層を表す.

ConvolutionLayer[n,{h,w}]

サイズ h×w のカーネルを持つ二次元たたみ込みを行う層を表す.

ConvolutionLayer[n,{h,w,d}]

サイズ h×w×d のカーネルを持つ三次元たたみ込みを表す.

ConvolutionLayer[n,kernel,opts]

充填や他のパラメータについてのオプションを含む.

詳細とオプション

  • ConvolutionLayer[n,]は,m 個の入力チャンネルを持ち空間次元が1あるいはそれ以上である入力配列に適用された場合に,事実上,その空間次元でそれぞれが異なる n×m のたたみ込みを行い,n 個のチャンネルを持つ出力配列を生成する層を表す.
  • ConvolutionLayer[][input]は,層を input に適用した結果の出力を明示的に計算する
  • ConvolutionLayer[][{input1,input2,}]は,各 inputiについて明示的に出力を計算する.
  • ConvolutionLayer[n,s]では,たたみ込み層の次元性は層がNetChainNetGraph等の中で接続されたときに推測される.
  • 次の任意のパラメータを含むことができる.
  • "Biases"Automaticカーネルのバイアスの初期ベクトル
    "ChannelGroups" 1チャンネルグループ数
    "Dilation" 1拡大因子
    "Dimensionality"Automaticたたみ込みの空間次元数
    Interleaving Falseチャンネル次元の位置
    LearningRateMultipliersAutomaticカーネルの重みおよび/またはバイアスの学習率乗数
    PaddingSize 0入力に適用するゼロ充填の量
    "Stride" 1使用するたたみ込みの刻み幅
    "Weights"Automaticカーネルの重みの初期テンソル
  • PaddingSizeの設定は,次の形式でよい.
  • n全次元の始まりと終りを n 個のゼロで充填する
    {n1,n2,}i 次元の始まりと終りを n 個のゼロで充填する
    {{n1,m1},{n2,m2},}i 次元の始まりを ni個のゼロで,終りを mi個のゼロで充填する
    "Same"出力サイズが入力サイズをストライドで割った値(切上げ)と等しくなるように,すべての次元を充填する
  • "Dilation""Stride"の設定は次の形式でよい.
  • n全次元に値 n を使う
    {,ni,}i 次元に値 niを使う
  • "ChannelGroups"g と設定することで,m 個の入力チャンネルと n 個の出力チャンネルが,それぞれ m/g チャンネルと n/g チャンネルの g 個のグループに分割される.mng で割り切れなければならない.入力チャンネルの i 番目のグループを出力チャンネルの i 番目のグループと接続するために別々のたたみ込みが行われる.結果は出力に連結される.入出力グループの各ペアは n/g×m/g たたみ込みで接続されるので,"ChannelGroups"g という設定は,事実上,明確なたたみ込みの数を n×m から n×m/g に減らす.
  • "Biases"Noneの設定はバイアスを使わないように指定する.
  • InterleavingFalseの設定のときは,チャンネル次元は入出力配列の最初の次元であるとみなされる.
  • InterleavingTrue設定のときは,チャンネル次元は入出力配列の最後の次元であるとみなされる.
  • 重みとバイアスが加えられると,ConvolutionLayer[][input]は層を適用して明示的に出力を計算する.
  • ConvolutionLayer[][{input1,input2,}]は,各 inputiについて明示的に出力を計算する.
  • NetExtractを使ってConvolutionLayerオブジェクトから重みとバイアスを抽出することができる.
  • ConvolutionLayerは,NetChainNetGraph等の中で使われることが多い.
  • ConvolutionLayerは,NetGraph等で使われる次のポートを開放する.
  • "Input"階数が2,3,または4の配列
    "Output"階数が2,3,または4の配列
  • ConvolutionLayerは,"Varying"次元を含む配列に使うことができる.
  • より大きいネット中の他の層から推測できない場合は,オプション"Input"{d1,,dn}を使ってConvolutionLayerの入力次元を固定することができる.
  • 次元 d1××di×の入力配列を与えられた場合,出力配列の次元は ×××になる.ただし,チャンネル次元 =n で,サイズ diに従って変換される./は軸の始点/終点の充填サイズ, はカーネルサイズ, はストライドサイズ,は各次元についての拡張因子である.
  • Options[ConvolutionLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[ConvolutionLayer[]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
  • Information[ConvolutionLayer[]]は層についてのレポートを与える.
  • Information[ConvolutionLayer[],prop]ConvolutionLayer[]の特性 prop の値を与える.使用可能な特性NetGraphと同じである.

例題

すべて開くすべて閉じる

  (2)

2個の出力チャンネルとサイズ4のカーネルを持つ,一次元ConvolutionLayerを作る:

初期化された一次元ConvolutionLayerを作る:

この層を入力行列に適用する:

スコープ  (11)

ポート  (3)

初期化された二次元ConvolutionLayerを作る:

この層を入力配列に適用する:

出力も階数3の配列である:

カーネルサイズ2で,初期化された三次元ConvolutionLayerを作る:

この層を入力配列に適用する:

RGB画像を取ってRGB画像を返す,初期化された二次元ConvolutionLayerを作る:

この層を画像に適用する:

ConvolutionLayerは自動的に入力バッチに縫い込まれる:

パラメータ  (7)

"Biases"  (3)

バイアスなしで二次元ConvolutionLayerを作成する:

唯一のチャンネルにバイアスを適用する恒等カーネルで一次元ConvolutionLayerを作成する:

この層を入力に適用する:

各チャンネルにバイアスを適用する恒等カーネルで二次元ConvolutionLayerを作成する:

この層を画像に適用する:

"Weights"  (4)

入力配列のペアを平均化するカーネルで一次元ConvolutionLayerを作成する:

この層を入力に適用する:

3つの入力チャンネルとガウスぼかしを適用する1つの出力チャンネルで二次元 ConvolutionLayerを作成する:

この層を画像に適用する:

チャンネルごとのガウスカーネルで二次元ConvolutionLayerを作成する.まず,カーネルを作成する:

カーネルを可視化する:

カーネルを使ってネットを初期化する:

この層を画像に適用する:

ランダムなカーネルで二次元ConvolutionLayerを作成する:

この層を画像に適用する:

オプション  (12)

"ChannelGroups"  (2)

3つのチャンネルグループで二次元のConvolutionLayerを作る:

チャンネルグループを使うことでたたみ込みの重み数がグループ数の割合で削減できる.重みの次元をチェックする:

類推層の重みの次元を1チャンネルグループと比較する:

"Dilation"  (2)

指定された次元におけるサイズ n の拡張因子は,事実上,距離 n 分だけ離れている入力配列からの要素にカーネルを適用する.

拡張因子が2の一次元ConvolutionLayerを作る:

この層を入力に適用する:

拡張因子が5のランダムな二次元ConvolutionLayerを作る:

拡張たたみ込み層を画像に適用する:

Interleaving  (1)

InterleavingFalseと1つの入力チャンネルでConvolutionLayerを作る:

InterleavingTrueと1つの入力チャンネルでConvolutionLayerを作る:

PaddingSize  (4)

隣接要素を平均し各側を4個の0で充填する,一次元ConvolutionLayerを作る:

この層を入力に適用する:

第1次元の各側を10個のゼロで,第2次元の各側を25個のゼロで充填する,ランダムな二次元ConvolutionLayerを作る:

第1次元の始まりを10個のゼロで,終りを20個のゼロで充填する,ランダムな二次元ConvolutionLayerを作る:

充填を使って出力次元を入力次元と等しくする:

これを使うと,1に近い入力の幅や高さがなくても,深いネットワークを任意数のたたみ込みで定義することができる.

"Stride"  (3)

指定された次元におけるサイズ n のストライドは,事実上,カーネルが出力配列を生成するために入力配列上を移動する刻み幅を制御する.

隣接ペアの平均を取るカーネルを持つ,一次元ConvolutionLayerを作る:

この層を入力に適用する:

ストライド2を使うとカーネルが重なり合ないペアに適用される:

ストライド4を使うとカーネルが1つおきのペアに適用される:

非対称スライドでランダムな二次元ConvolutionLayerを作る:

この層を画像に適用する:

より大きいストライドを使って出力次元を減ずる:

より大きいストライドは計算時間も減ずることができる:

特性と関係  (2)

次の関数は,入力サイズとパラメータが与えられた際に,非チャンネル次元のサイズを計算する:

入力サイズ{256,252},カーネルサイズ{2,3},ストライド2,拡張因子{3,4},充填サイズ{1,2}のときの出力サイズ:

ConvolutionLayerを使って二次元たたみ込みを計算することができる:

これは,カーネルの向きを逆にした後のListConvolveに等しい:

考えられる問題  (3)

すべての入出力次元が分かるまでConvolutionLayerは初期化できない:

ConvolutionLayerは記号入力を受け付けない:

カーネルサイズが入力次元より大きくてはならない:

Wolfram Research (2016), ConvolutionLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ConvolutionLayer.html (2021年に更新).

テキスト

Wolfram Research (2016), ConvolutionLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ConvolutionLayer.html (2021年に更新).

CMS

Wolfram Language. 2016. "ConvolutionLayer." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/ConvolutionLayer.html.

APA

Wolfram Language. (2016). ConvolutionLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ConvolutionLayer.html

BibTeX

@misc{reference.wolfram_2024_convolutionlayer, author="Wolfram Research", title="{ConvolutionLayer}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/ConvolutionLayer.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_convolutionlayer, organization={Wolfram Research}, title={ConvolutionLayer}, year={2021}, url={https://reference.wolfram.com/language/ref/ConvolutionLayer.html}, note=[Accessed: 17-November-2024 ]}