深度学习-Maxpool
之前只是知道maxpool是取一个区域内的最大值,却没关心maxpool到底是怎么做的
今天来补一下
网上的例子都是输入为4*4或者8*8等偶数形式的,对于奇数输入的maxpool却没有多少解释
我们这里主要解释奇数形式的maxpool
对于偶数形式,网上已经讲的非常清楚了
对于奇数形式,tensorflow是这么做的
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)
输出为
[[[[ 7] [ 9] [10]] [[12] [14] [-1]]]] (1, 2, 3, 1)
那么就可以看出,他是能做maxpool的先做maxpool
对于凑不够2*2的,,他会在map周围补上一圈值为-inf的数,再做maxpool