Global Average Pooling与FC与Average Pooling与 Global Max Pooling

1. Global Average Pooling

Global Average Pooling(GAP)出自 Network in network

GAP 输入(H, W, C)-->(1, 1, C)

直接在HW上pooling,将信息压缩到一个点。

优点:和FC相比无训练参数,所以可以防止过拟合

参考 https://zhuanlan.zhihu.com/p/37683646

2.与Global Max Pooling

都是压缩信息。只不过方式不同,SEnet实验证明,average稍微好一点

参考:https://www.zhihu.com/question/358913301/answer/922183264

3.与 Average Pooling

输入(H, W, C)

GAP输出:(1, 1, C):相当于信息压缩,关注全局特征

AP(after_pooling_size, after_pooling_size, C):信息提取,保留纹理信息,关注局部特征。

在数学关系上可以把GAP理解成AP的一种特例

4.torch 实现:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 PyTorch 实现该卷积神经网络的代码: ```python import torch import torch.nn as nn class ConvNet(nn.Module): def __init__(self, num_classes=10): super(ConvNet, self).__init__() self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1) self.bn1 = nn.BatchNorm2d(64) self.relu1 = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(64, 64, kernel_size=3, padding=1) self.bn2 = nn.BatchNorm2d(64) self.relu2 = nn.ReLU(inplace=True) self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1) self.bn3 = nn.BatchNorm2d(128) self.relu3 = nn.ReLU(inplace=True) self.conv4 = nn.Conv2d(128, 128, kernel_size=3, padding=1) self.bn4 = nn.BatchNorm2d(128) self.relu4 = nn.ReLU(inplace=True) self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) self.conv5 = nn.Conv2d(128, 256, kernel_size=3, padding=1) self.bn5 = nn.BatchNorm2d(256) self.relu5 = nn.ReLU(inplace=True) self.conv6 = nn.Conv2d(256, 256, kernel_size=3, padding=1) self.bn6 = nn.BatchNorm2d(256) self.relu6 = nn.ReLU(inplace=True) self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2) self.avgpool = nn.AdaptiveAvgPool2d((1, 1)) self.fc = nn.Linear(256, num_classes) def forward(self, x): x = self.conv1(x) x = self.bn1(x) x = self.relu1(x) x = self.conv2(x) x = self.bn2(x) x = self.relu2(x) x = self.pool1(x) x = self.conv3(x) x = self.bn3(x) x = self.relu3(x) x = self.conv4(x) x = self.bn4(x) x = self.relu4(x) x = self.pool2(x) x = self.conv5(x) x = self.bn5(x) x = self.relu5(x) x = self.conv6(x) x = self.bn6(x) x = self.relu6(x) x = self.pool3(x) x = self.avgpool(x) x = x.view(x.size(0), -1) x = self.fc(x) return x ``` 该网络实现了6个卷积层,每个卷积层后跟一个 Batch Normalization 和一个 ReLU 层,经过两个卷积层后,特征的空间分辨率降低两倍,特征的 channel 数量提升两倍。在最后的输出层,使用 Global Average Pooling 操作,把特征层转换为一个特征向量,然后使用全连接神经网络完成最终的预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_daxia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值