2017-09-13 15 views
0

내 매개 변수로 인해 tensorflow maxpooling이 왜 발생하는지 이해할 수 없습니다. ksize=2strides=2 내가 모두 padding SAMEpadding VALIDTensorflow maxpooling 이해

input : (?, 28, 28, 1) 
conv2d_out : (?, 28, 28, 32) 
maxpool2d_out : (?, 14, 14, 32) 

그러나 다음과 같은 출력을 얻을으로 maxpool을 수행

나는 ksize=3strides=1와 maxpool을 perfrom 할 때, 나는 다음과 같은 출력을 얻을 :

input : (?, 28, 28, 1) 
conv2d_out : (?, 28, 28, 32) 
maxpool2d_out : (?, 28, 28, 32) PADDING SAME 
maxpool2d_out : (?, 26, 26, 32) PADDING VALID 

을 사용하여 ksize=2strides=2을 사용하는 maxpool 출력 maxpool2d_out : (?, 28, 28, 32)

패딩과 함께 최대 풀링이 작동하는 방법에 대해 놓친 것이 있습니까? 당신은 padding='SAME'을 사용하고

**CODE**==python_

+0

코드를 공유하십시오. – nessuno

+0

http://codepad.org/IwxshYr1 –

답변

1

코드에서 보니 padding=SAME입니다. SAME 패딩 및 strides=1을 사용할 때 입력 및 출력 크기는 동일합니다. 왜 tensorflow 구현이 잘못되었다고 생각합니까?

업데이트 : 따르면 tensorflow documentation 행 :

가 SAME 패딩을 사용

out_height = ceil(float(in_height)/float(strides[1])) 
out_width = ceil(float(in_width)/float(strides[2])) 
  • 그것이/1 = 28 (28) 때에 K = 3, 스트라이드 1
  • 그것을 k = 2, 스트라이드 = 2 일 때 28/2 = 14이다.
그것은 ((28-3 + 1)/1) = 26 일 때, K = 3, 보폭 celing된다

out_height = ceil(float(in_height - filter_height + 1)/float(strides[1])) 
out_width = ceil(float(in_width - filter_width + 1)/float(strides[2])) 
  • VALID 패딩을 사용 451,515,

    = 1

  • 그것은 천장 인 만약 때문에 천장 함수,시피 ((28-2 + 1)/2) = 14 일 때, K = 2, 스트라이드 2

는 해당 결과를 사용하여 동일하게 일어나는 다른 패딩 구성

+2

무시하십시오. 나 한테 이걸 때리는 것 같아. :-) – Lan

+0

나는 그것을 알아 내려고 노력했다. 이 점은 나에게 충격을 주었지만'VALID'와'SAME'은'ksize = 2 stride = 2'에 대해서 같은 출력을냅니다. 방법?? –

+0

방금 ​​답변을 업데이트했습니다. – Lan

1

이 당신의 출력이 입력의 크기가 동일하기 위해 0으로 채워된다는 것을 의미합니다.

paddingVALID으로 변경하면 출력에 0이 채워지지 않으므로 풀링 작업이 예상대로 작동합니다.

+0

나는 이것을 알아 내려고 노력했습니다. 이 점은 나에게 충격을 주었지만'VALID'와 같은'SAME'은'ksize = 2 stride = 2'에서 같은 출력을냅니다. 방법?? –

+0

죄송합니다. 질문을 업데이트했습니다. 답변 감사합니다.이 문서를주의 깊게 다시 읽어야합니다. –