tf.nn.max_pool简单暴力带你学

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]
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51326570/article/details/112853460