2016-09-17 17 views
1

トレーニングのスピードアップのために画像の解像度を下げようとしています。だから私は生のイメージを操作するためにtf.nn.max_poolメソッドを使いました。私は結果として得られる画像がより小さなサイズのぼやけた画像であると予想していますが、実際はそうではありません。Tensorflowでmax poolingの動作が混乱しています

マイRAW画像は[320、240 3]の形状を有し、それはのように見える: raw image

そしてksize=[1,2,2,1]strides=[1,2,2,1]と、max_pooling後により生成

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,320,240,3]の代わりに[1、240、320、3])を使用してください)。それは動作するはずです。

+0

実際に!ああ、なんて愚かな間違い...ダネフスキーありがとう! – Xer