tf.nn.max_pool簡單暴力進行分析理解,不看你鉅虧
阿新 • • 發佈:2021-01-20
技術標籤:tensorflowpython機器學習
tf.nn.max_pool 從數學的角度看這個,超好理解。
在網上看了半天沒看明白咋回事,於是自己決定研究一下,不搞花裡胡哨,讓大家之間理解他到底要幹啥!!!!!
import tensorflow.compat.v1 as tf
tf.compat.v1.disable_eager_execution()
x=tf.constant([[1.,10.,3.,4.,],[5.,6.,7.,8.],[9.,10.,11.,12.],[13.,14.,15.,16]])
x=tf.reshape(x,[2,2,4,1])
SAME=tf. nn.max_pool(x,[1,1,2,1],[1,2,2,1],padding='SAME')#value, ksize, strides, padding Kize表示視窗大小 strides表示步長
a=tf.nn.max_pool(x,[1,2,1,1],[1,2,2,1],padding='SAME')#
with tf.Session() as sess:
a0=sess.run(x)
a1=sess.run(SAME)
a2=sess.run(a)
print(a0)
print(a1)
print(a2)
我先把矩陣變成[2,2,4,1]形式,簡單粗暴的說就是整體分為兩大塊,然後兩大塊有分成兩小塊,兩小塊裡分成4*1的矩陣,大家要注意中括號就能看明白我說的。
視窗[1,1,2,1],步長[1,2,2,1]分別為我定義的視窗大小和步長;
大家跟我一起先看然後看視窗第一個數 1,意思就是我會從第一大塊開始,然後看步長第一個數字 1,說明我是一步一步走的,這兩大塊我都會遍歷一遍,(意思就是這兩大塊我都會拿出幾個數);
然後在看視窗第二個數 1,就是我們接下來會從兩小塊的第一塊開始,在看步長第二個數 2 ,意思我是一次走兩步,意思我只能分別在兩小塊裡的第一塊取數因為他總共就倆;
然後在看視窗第三個數 2 ,意思我從那小塊的第二個數開始,在看步長第三個也是 2 所以就是 10 4 10 12
這個大家可以自行驗證[1,2,1,1],[1,2,2,1]