最大池化代码

import numpy as np
def max_pooling(det,pool_param):
    M,N,H,W=det.shape()
    H1,W1,stride=pool_param['pool_heaight'],pool_param['pool_width',pool_param['stride']]
    H2=int(H-H1/stride)+1
    W2=int(W-W1/stride)+1
    out=np.zeros(M,N,H,W)
    for i in range(len(H2)):
        for j in range(len(W2)):
            out[...,i,j]=np.max(det[...,i*stride:i*stride+H2,j*stride:j*stride+W2],axis=(2,3))
    result=(det,out,pool_param)
    return out,result

np.max()讲解:

import numpy as np
#定义矩阵
a=[[1,2,3],[1,2,3]]
b=np.array(a)
print(b.shape)        #2*3
print(b.max(axis=0).shape)    #(3,)


a = [[[1,2,3],[11,22,33]],[[10,20,30],[110,220,330]],[[101,201,301],[11001,22001,33001]],[[55,66,77],[550,660,770]]]
b=np.array(a)
print(b.size)                    #24
print(b.shape)                   # 4*2*3

print(b.max(axis=0).shape)
# [[  101   201   301]
#  [11001 22001 33001]]           2*3
print(b.max(axis=1).shape)
# [[   11    22    33]
#  [  110   220   330]
#  [11001 22001 33001]
#  [  550   660   770]]           4*3
print(b.max(axis=2).shape)        4*2

shape=[x, y, z],从这里结果看:

  1. axis=0,返回shape=[y,z]
    每个x中的全部[y,z]作比较,即每个x元素的比较
  2. axis=1,返回shape=[x,z]
    在每个x元素内,每个y中的z维度元组比较
  3. axis=2,返回shape=[x,y]
    在每个z中的内部元素做比较

axis=n表示在n维比较各个元素,对应数值位置,最后消除了n维度。

最大池化

  http://fanding.xyz/2017/09/11/CNN%E5%8D%B7%E7%A7%AF%E7%BD%91%E7%BB%9C%E7%9A%84Python%E5%AE%9E%E7%8E%B0(%E5%9B%9B)-%E6%B1%A0%E5%8C%96%E5%92%8CBN%E5%B1%82%E7%9A%84%E5%AE%9E%E7%8E%B0/

 

相关文章:

  • 2021-10-24
  • 2021-12-06
  • 2021-09-11
  • 2022-12-23
  • 2021-12-25
  • 2022-12-23
  • 2021-08-04
  • 2022-12-23
猜你喜欢
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案