Tensorflow踩坑系列---池化層的padding="SAME"問題


之前深度學習中一般只在卷積中涉及到padding:

tf.nn.conv2d(x,W,strides=[1,1,1,1],padding="SAME")

現在在Tensorflow學習過程中,發現在池化過程中,大量應用到SAME填充:

tf.nn.max_pool(x,[1,2,2,1],strides=[1,2,2,1],padding="SAME")

現在我們來看看池化過程中padding到底是如何工作的?

卷積填充了解:http://www.ai-start.com/dl2017/html/lesson4-week1.html

參考:https://blog.csdn.net/sky_asher/article/details/79704262

一:池化層SAME Padding

(一)案例一:可被池化層filter整除

a = tf.get_variable('w',  shape=(1,4,4,1), initializer=tf.truncated_normal_initializer(seed=1))
b = tf.nn.max_pool(a,  ksize=[1,2,2,1], strides=[1,2,2,1], padding='VALID')
c = tf.nn.max_pool(a,  ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    out_b = sess.run(b)
    out_c = sess.run(c)
    print(out_b.shape, out_c.shape)

在這里剛好是4 % 2 = 0,也就是池化的模板的長度能夠待處理的數據長度整除,所以兩者的結果是相同的。

(二)案例二:不可被池化層filter整除

a = tf.get_variable('w',  shape=(1,3,3,1), initializer=tf.truncated_normal_initializer(seed=1))
b = tf.nn.max_pool(a,  ksize=[1,2,2,1], strides=[1,2,2,1], padding='VALID')
c = tf.nn.max_pool(a,  ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    out_b = sess.run(b)
    out_c = sess.run(c)
    print(out_b.shape, out_c.shape)

這里就不一樣了,因為模板在滑動時,可能存在覆蓋不完全的地方,就比如用2*2的模板,對於VALID模式和SAME模式就不一樣,SAME模式會補全橙色部分,而VALID模式就不會補全了

VALID不進行填充:會有數據無法遍歷

SAME會向左和下填充0(這里不同與卷積的處理):但是都會使得原矩陣中的數據被遍歷到

二:實例說明

same會根據具體的步長和核大小去盡量遍歷特征圖,因為可以填充這個周邊的范圍。

(一)代碼演示

x = tf.constant([[1., 2., 3., 5.],
             [4., 5., 6., 6.],
             [1 , 2 , 3 , 4 ],
             [6 , 5 , 8 , 9 ]])
x = tf.reshape(x, [1, 4, 4, 1])

valid_pad = tf.nn.max_pool(x, [1, 3, 3, 1], [1, 2, 2, 1], padding='VALID')
same_pad = tf.nn.max_pool(x, [1, 3, 3, 1], [1, 2, 2, 1], padding='SAME')
with tf.Session() as sess:
    print(sess.run(valid_pad))
    print("----------")
    print(sess.run(same_pad))

(二)Valid填充

(三)Same填充

補充:argmax中axis問題

https://blog.csdn.net/qq575379110/article/details/70538051/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM