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]では,たたみ込み層の次元性は層がNetChainやNetGraph等の中で接続されたときに推測される.
- 次の任意のパラメータを含むことができる.
-
"Biases" Automatic カーネルのバイアスの初期ベクトル "ChannelGroups" 1 チャンネルグループ数 "Dilation" 1 拡大因子 "Dimensionality" Automatic たたみ込みの空間次元数 Interleaving False チャンネル次元の位置 LearningRateMultipliers Automatic カーネルの重みおよび/またはバイアスの学習率乗数 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 個のグループに分割される.m と n は g で割り切れなければならない.入力チャンネルの 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は,NetChain,NetGraph等の中で使われることが多い.
- 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)
スコープ (11)
ポート (3)
初期化された二次元ConvolutionLayerを作る:
カーネルサイズ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を作る:
"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を作る:
"Stride" (3)
指定された次元におけるサイズ n のストライドは,事実上,カーネルが出力配列を生成するために入力配列上を移動する刻み幅を制御する.
隣接ペアの平均を取るカーネルを持つ,一次元ConvolutionLayerを作る:
ストライド2を使うとカーネルが重なり合ないペアに適用される:
非対称スライドでランダムな二次元ConvolutionLayerを作る:
特性と関係 (2)
次の関数は,入力サイズとパラメータが与えられた際に,非チャンネル次元のサイズを計算する:
入力サイズ{256,252},カーネルサイズ{2,3},ストライド2,拡張因子{3,4},充填サイズ{1,2}のときの出力サイズ:
ConvolutionLayerを使って二次元たたみ込みを計算することができる:
これは,カーネルの向きを逆にした後のListConvolveに等しい:
考えられる問題 (3)
テキスト
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