2017-03-31 106 views
0
def conv2d(x, W): 
    return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') 

def max_pool_2x2(x): 
    return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], 
         strides=[1, 2, 2, 1], padding='SAME') 

這是Tensorflow網站上Deep MNIST for experts教程的代碼。MNIST Tensorflow示例

我有兩個問題:

1)documentation K-大小爲長度大於4的整數列表指的是最大池窗口的大小。考慮到這是一個2X2窗口,不應該只是[2,2]嗎?我的意思是爲什麼它是[1,2,2,1]而不是[2,2]?

2)如果我們在第一尺寸上邁出了一步。爲什麼我們需要一個4個值的向量,是不是一個值就足夠了?

strides = [1] 

3)如果padding ='SAME'爲什麼圖像尺寸減少一半? (從28×28 14×14第一卷積過程)

回答

1
  1. 我不知道你指的是在這個問題上它的文檔。 maxpool窗口確實是2x2。

  2. 步長可以根據尺寸而有所不同。 4矢量是最常見的情況,假設您想跳過批處理中的圖像,跳過不同的高度和寬度,甚至可能跳過基於通道的跳過。這是很難使用,但已被留在。

  3. 如果你沿每個方向有2步,那麼你跳過你可能用於最大池的其他每個像素。如果您將跳轉大小設置爲[1,1,1,1]並且填充相同,那麼您確實會返回相同大小的結果。填充「SAME」是指填充零圖像,以便爲圖像添加高度內核高度的邊框和大小內核寬度的寬度。