以前只是知道maxpool是取一个区域内的最大值,却没关心maxpool究竟是怎么作的ide
今天来补一下spa
网上的例子都是输入为4*4或者8*8等偶数形式的,对于奇数输入的maxpool却没有多少解释code
咱们这里主要解释奇数形式的maxpoolblog
对于偶数形式,网上已经讲的很是清楚了it
对于奇数形式,tensorflow是这么作的io
import os import cv2 import tensorflow as tf import numpy as np value = np.array([[[[1],[2],[3],[4],[5]], [[6],[7],[8],[9],[10]], [[11],[12],[13],[14],[-1]]]]) print(value.shape) mat_1 = tf.Variable(value) mat_2 = tf.nn.max_pool(mat_1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') with tf.Session() as sess: sess.run(tf.global_variables_initializer()) out = sess.run(mat_2) print(out) print(out.shape)
输出为class
[[[[ 7] [ 9] [10]] [[12] [14] [-1]]]] (1, 2, 3, 1)
那么就能够看出,他是能作maxpool的先作maxpoolimport
对于凑不够2*2的,,他会在map周围补上一圈值为-inf的数,再作maxpooltensorflow