22/76-池化

池化(最大池化层:选每个kernel中最大的数)

填充、步幅、多个通道:

池化层与卷积层类似,都具有填充和步幅。

没有可学习的参数。

在每个输入通道应用池化层以获得相应的输出通道。

输出通道数=输入通道数。

平均池化层(将最大池化层中的最大数替换为平均数)

总结:

池化层返回窗口中最大或平均值。

主要作用时缓解卷积层位置敏感性。

同样有窗口大小,填充,步幅作为超参数。

python 复制代码
import torch
from torch import nn

def pool2d(X, pool_size, mode='max'):
    X = X.float()
    p_h, p_w = pool_size
    Y = torch.zeros(X.shape[0] - p_h + 1, X.shape[1] - p_w + 1)
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            if mode == 'max':
                Y[i, j] = X[i: i + p_h, j: j + p_w].max()
            elif mode == 'avg':
                Y[i, j] = X[i: i + p_h, j: j + p_w].mean()
    return Y


X = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print(pool2d(X, (2, 2)))

print(pool2d(X, (2, 2), 'avg'))

#填充和步幅

X = torch.arange(16, dtype=torch.float).view((1, 1, 4, 4))
print(X)

pool2d = nn.MaxPool2d(3)#只输出一个10,池化的窗口和步幅都是3,所以只输出一个值,不重叠
print(pool2d(X))

pool2d = nn.MaxPool2d(3, padding=1, stride=2)#手动调整
print(X)
print(pool2d(X))
#也可以指定非正方形的池化窗口,并分别指定高和宽上的填充和步幅。
pool2d = nn.MaxPool2d((2, 4), padding=(1, 2), stride=(2, 3))
print(pool2d(X))

#池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等。
X = torch.cat((X, X + 1), dim=1)
print(X)

pool2d = nn.MaxPool2d(3, padding=1, stride=2)
print(pool2d(X))#输出还是2
相关推荐
觉醒大王1 分钟前
科研新手如何读文献?从“乱读”到“会读”
论文阅读·笔记·深度学习·学习·自然语言处理·学习方法
无人装备硬件开发爱好者6 分钟前
RV1126B 边缘端 AI 实战:YOLOv8+DNTR 微小目标跟踪监测全栈实现 1
人工智能·yolo·目标跟踪
新缸中之脑9 分钟前
为AI代理设计分层记忆
人工智能
爱吃泡芙的小白白10 分钟前
机器学习输入层:从基础到前沿,解锁模型性能第一关
人工智能·机器学习
朴实赋能15 分钟前
生死线:2026年跨境电商大洗牌,AI赋能者存,守旧者亡——AI助力怎样重塑品牌出海新规则
人工智能·独立站运营·智矩引擎·跨境电商创业·ai跨境电商·tiktok电商运营·2026跨境电商新趋势
梵得儿SHI16 分钟前
深度拆解 Google Personal Intelligence:下一代个性化 AI 的技术架构、隐私保障与未来愿景
大数据·人工智能·agi·pi·跨产品数据整合
Turboex邮件分享19 分钟前
邮件投递全流程故障排查手册
运维·人工智能
runner365.git22 分钟前
做一个基于ffmpeg的AI Agent智能体
人工智能·ffmpeg·大模型
觉醒大王23 分钟前
硕士/博士研究生避坑指南
笔记·深度学习·学习·自然语言处理·职场和发展·学习方法
策知道31 分钟前
2026年北京政府工作报告产业指标深度解析
大数据·数据库·人工智能·搜索引擎·政务