python 实现 average pooling 和 max pooling
pooling的主要作用
1. 首要作用:下采样,降维,去除冗余信息。同时扩大感受野,保留了feature map的特征信息,降低参数量。
2. 实现非线性,一定程度上避免过拟合。
3. 可以实现特征不变性。包括平移不变性、旋转不变性、尺度不变性
import cv2 import numpy as np input = np.array([ [1,2,1,1], [0,1,2,1], [1,1,0,1], [3,0,0,1]]) k = np.array([ [0,1,0], [0,1,0], [0,1,0]]) h,w = input.shape conv = [] # 卷积操作 max_pool = [] # 最大池化 ave_pool = [] # 平均池化 for i in range(h-2): line_conv = [] for j in range(w-2): t = input[i:i+3,j:j+3] line_conv.append(np.sum(k*t)) # 输入3×3区域和卷积核进行对应元素相乘再相加 conv.append(line_conv) for i in range(0,w,2): line_ave = [] line_max = [] for j in range(0,h,2): t = input[i:i+2,j:j+2] line_ave.append(np.sum(t)/4) line_max.append(np.max(t)) # 注意, 要用np.max(), 不是max() ave_pool.append(line_ave) max_pool.append(line_max) print('conv = \n',conv,'\nmax_pool = \n',max_pool,'\nave_pool = \n',ave_pool)