1

I 출력 형상, 모양, 진보와 패딩을 필터링회선 입력 모양/크기는 어떻게 계산합니까?

필터 모양이있는 경우 : [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"패딩 유형에만 유효합니다. 유형이 "동일"인 경우 출력은 입력의 크기와 일치하도록 채워 지므로 입력 모양은 batch, height, width, input_depht

입니다.