2016-09-17 59 views
1

我試圖降低圖像的分辨率以加快培訓。所以我使用tf.nn.max_pool方法來操作我的原始圖像。我期待得到的圖像是一個尺寸較小的模糊圖像,但事實上並非如此。最大池的行爲混淆在Tensorflow

我的原始圖像具有形狀[320,240,3],它看起來像: raw image

而且max_pooling後,用ksize=[1,2,2,1]strides=[1,2,2,1]變得

enter image description here

由所產生的以下代碼:

# `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,240,320,3])而不是[1,320,240,3])。它應該工作。

+0

確實!啊,多麼愚蠢的錯誤......謝謝Danevskyi! – Xer