1

私は、出力形状、フィルタ形状、進歩とパディング、畳み込み入力の形状/サイズはどのように計算するのですか?

フィルタ形状がある場合:[kernel_height, kernel_width, output_depth, input_depth]

出力形状:[batch, height, width, depth]

strides=[1,1,1,1]

padding='VALID'

を缶私は入力の形を得る?例えば

フィルタ形状:[3, 3, 1, 1]

出力形状:[1, 1, 1, 1]

私は固定入力形状[1,3,3,1]とどのように計算することができますか?

形状を計算するコードはありますか?私が思うので、私はそれを自分自身を記述する必要はありません。..

答えて

1

これは、初めにbatch, height + kernel_height - 1, width + kernel_width - 1, input_depth

batchはやや明らかですですので、最後にinput_depthです。 height + kernel_height - 1を理解するには、カーネルの適用方法を検討してください。あなたが入力した画像が10 x 10で3 x 3のカーネルを適用した場合、水平に0,1、...、7の位置に合計8つの異なる位置を適用し、同様の考え方がカーネルの垂直方向の動きに適用されますこれは、サイズが8x8の出力マップになります。この考え方を一般化すると、出力マップのサイズがwidth + kernel - 1, height + kernel - 1であることがわかります。つまり、出力マップのサイズがわかっている場合は、入力のサイズを取得するために操作を逆にする必要があります。 width - kernel + 1, height - kernel + 1

これはすべてパディングタイプ "VALID"に対してのみ有効です。タイプが「SAME」の場合、入力の寸法に合わせて出力が埋め込まれ、入力形状はbatch, height, width, input_depht

となります
関連する問題