以前只是知道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