2016-09-17 3 views
1

교육 속도를 높이기 위해 이미지 해상도를 줄이려고합니다. 그래서 원시 이미지를 조작하기 위해 tf.nn.max_pool 메소드를 사용했습니다. 나는 결과 이미지가 더 작은 크기의 흐려진 이미지 일 것으로 기대하지만 실제로는 그렇지 않습니다.Tensorflow에서 최대 풀링 동작이 혼동 스럽습니다.

내 원시 이미지 형상 갖는다 320, 240, 3]과 같이 보인다 : 그것은

enter image description here

가 제조된다 ksize=[1,2,2,1]strides=[1,2,2,1]raw image

그리고 max_pooling 후 다음 코드 :

# `img` is an numpy.array with shape [320, 240, 3] 
# since tf.nn.max_pool only receives tensor with size 
# [batch_size, height,width,channel], so I need to reshape 
# the image to have a dummy dimension. 

img_tensor = tf.placeholder(tf.float32, shape=[1,320,240,3]) 
pooled = tf.nn.max_pool(img_tensor, ksize=[1,2,2,1], strides=[1,2,2,1],padding='VALID') 
pooled_img = pooled.eval(feed_dict={img_tensor: img.reshape([1,320,240,3])}) 
plt.imshow(np.squeeze(pooled_img, axis=0)) 

풀링 된 im 나이는 모양이 예상된다 [160, 120, 3]. 그것의 변형 동작은 정말로 나를 혼란스럽게합니다. 픽셀 겹침 계산이 없으므로 "반복되는 시프 팅"동작이 없어야합니다.

미리 감사드립니다.

답변

1

문제는 이미지가 어떻게 모양이 바뀌 었는지입니다. 이 이미지의 모양은 실제로 [240, 320, 3]입니다.

[1, 320, 240, 3] 대신 [1, 240, 320, 3])를 사용하십시오. 그것은 작동해야합니다.

+0

실제로! 아, 바보 같은 실수 ... 고마워, 데 네프 스키! – Xer

관련 문제