1. 程式人生 > 其它 >tf.nn.max_pool簡單暴力進行分析理解,不看你鉅虧

tf.nn.max_pool簡單暴力進行分析理解,不看你鉅虧

技術標籤: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,1,2,1],[1,2,2,1]裡插入圖片描述
這個大家可以自行驗證[1,2,1,1],[1,2,2,1]
在這裡插入圖片描述