GlobalAveragePooling2D和GlobalMaxPooling2D

本文介绍了深度学习中两种常用的全局池化操作:GlobalAveragePooling2D和GlobalMaxPooling2D。GlobalAveragePooling2D通过计算输入数据每个通道的平均值来降低维度,而GlobalMaxPooling2D则是取每个通道的最大值。这两种方法都用于去除图像的宽度和高度维度,保留批次大小和通道数,从而简化网络结构并减少参数数量。示例展示了它们在TensorFlow中的实现和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 GlobalAveragePooling2D 全局平均池化

GlobalAveragePooling2D降低维度。

GlobalAveragePooling2D就是求四维数据(图片)的每个通道值c的平均,最后结果没有了宽(w)高(h)维度,只剩下batchsize与channel两个维度。从形状上看:[B,H,W,C] → [B,C]。

下面有1张图片,shape为[1,2,2,3],经过GlobalAveragePooling2D得到shape[1,3]。

import tensorflow as tf

x = tf.random.normal((1,2,2,3))
x.shape
#x:  
<tf.Tensor: shape=(1, 2, 2, 3), dtype=float32, 
numpy=array([[[[ 1.0732665 , -0.316923  ,  0.34387082],
               [ 0.85719526,  0.383818  ,  0.0714375 ]],
              [[ 2.07628   ,  1.0945694 ,  0.6519038 ],
               [ 0.00441903,  1.2396817 ,  0.10125866]]]], dtype=float32)>

ax = tf.keras.layers.GlobalAveragePooling2D()(x)
ax.shape
#ax:
<tf.Tensor: shape=(1, 3), dtype=float32, 
numpy=array([[1.0027902 , 0.60028654, 0.29211769]], dtype=float32)>

GlobalAveragePooling2D中的运算是K.mean(input, axis=[1, 2]),可以用np.mean(input, axis=(1, 2))来模拟这个过程。

x = np.array([[[0, 1, 2],
               [3, 4, 5]],
              [[0, 1, 2],
               [3, 4, 5]]])
#x.shape=[2,2,3]
new_xx = np.mean(x, axis=(0, 1))
#new_xx = [2.25, 2.5, 3.5]
#new_xx.shape = [3]
new_x = np.mean(x, axis=0)
#new_x = [[0, 1, 2], [3, 4, 5]]
#new_xx.shape=[2,3]

二 GlobalMaxPooling2D 全局平均池化

GlobalMaxPooling2D降低维度。

GlobalMaxPooling2D就是求四维数据(图片)的每个通道值c的最大值,最后结果没有了宽(w)高(h)维度,只剩下batchsize与channel两个维度。从形状上看:[B,H,W,C] → [B,C]。

Keras: GlobalMaxPooling vs. MaxPooling_devil_son1234的博客-CSDN博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值