池化层MaxPool函数详解及反向传播的公式推导

理解MaxPool最大池化的作用与反向传播 目前网络中运用最多的pool操作就是maxpool,最大池化。最开始经典的网络用的较多的是平均池化。操作与机制都差不多,一个是取最大值,一个是取平均值。 作为小白的我最近看文章脑子里浮现出几个问题: 池化层(我们以最大池化为例)的作用 池化层如何通过反向传播 池化层的最直观的作用就是降维、减少参数量、去除冗余信息、对特征进行压缩、简化网络复杂度、减少计算量、减少内存消耗等等。 《动手学习深度学习》一书中还提到了这样一个作用: 缓解卷积层对位置的过度敏感性,实际上就是特征不变性。以下是书上的解释(pyto 阅读详情

摘要

本文给出 MaxPool 函数的定义, 并求解其在反向传播中的梯度

相关

配套代码, 请参考文章 :

Python和PyTorch对比实现池化层MaxPool函数及反向传播

系列文章索引 :
https://blog.youkuaiyun.com/oBrightLamp/article/details/85067981

正文

池化是一种尺寸缩小操作, 可以将大尺寸的图片缩小, 集约特征.

1. 池化层 MaxPool 函数的定义

本文约定矩阵元素的脚标从 0 开始.

当 X 为 m x n 矩阵, 卷积核尺寸 2 x 2, 步长为 1 时 :
y i j = m a x ( x i , j ,    x i , j + 1 ,    x i + 1 , j ,    x i + 1 , j + 1 )    i ⩽ m − 2    j ⩽ n − 2 y_{ij} = max(x_{i,j},\; x_{i,j+1},\; x_{i+1,j},\; x_{i+1,j+1})\\ \;\\ i\leqslant m-2 \\ \;\\ j\leqslant n-2 \\ yij​=max(xi,j​,xi,j+1​,xi+1,j​,xi+1,j+1​)i⩽m−2j⩽n−2
当 X 为 m x n 矩阵, 卷积核尺寸 p x q, 步长为 1 时 :
r = 0 , 1 , 2 , 3 , ⋯   , p − 1 s = 0 , 1 , 2 , 3 , ⋯   , q − 1 y i j = m a x ( x i + r , j + s ) i ⩽ m − p j ⩽ n − q r = 0,1,2,3,\cdots,p-1\\ s = 0,1,2,3,\cdots,q-1\\ y_{ij} = max(x_{i+r,j+s}) \\ i\leqslant m-p\\ j\leqslant n-q\\ r=0,1,2,3,⋯,p−1s=0,1,2,3,⋯,q−1yij​=max(xi+r,j+s​)i⩽m−pj⩽n−q
当 W 为 p x q 矩阵, 步长为 t, 为保证整除, 填充后的 X 是 m x n 矩阵时 :
r = 0 , 1 , 2 , 3 , ⋯   , p − 1 s = 0 , 1 , 2 , 3 , ⋯   , q − 1 y i j = m a x ( x i ⋅ t + r , j ⋅ t + s ) i ⩽ ( m − p ) / t j ⩽ ( n − q ) / t r = 0,1,2,3,\cdots,p-1\\ s = 0,1,2,3,\cdots,q-1\\ y_{ij} = max(x_{i\cdot t+r,j\cdot t+s})\\ i\leqslant (m-p)/t\\ j\leqslant (n-q)/t\\ r=0,1,2,3,

Torch 池化操作大全 MaxPool2d MaxUnpool2d AvgPool2d FractionalMaxPool2d LPPool2d AdaptivePool2d dilation详解 从torch官网看,针对图片,有这7中池化操作,大概分为最大池化类,平均池化类,杂类最大池化实现有四种方式,MaxPool2d,可以设置k,s,p,但是不能设置输出大小,输出大小是计算好的;FractionalMaxPool2d,可以设置k,和输出大小,单数s和p不能设置;AdaptiveMaxPool2d,只能设置输出大小,其余的都设置不了;LPPool2d,这个纯属特列才可以使用,并且特例中的功能还是MaxPool2d的阉割版;除了LPPool2d,其余逐步自由化,增加了网络设置的随机性; 阅读详情

相关推荐

Python和PyTorch对比实现池化层MaxPool函数及反向传播

相关 原理和详细解释, 请参考 : 池化层MaxPool函数详解及反向传播的公式推导 正文 import torch import numpy as np class MaxPool2D: def __init__(self, kernel_size=(2, 2), stride=2): self.stride = stride self.kernel...

BrightLamp的博客 9221

CNN池化层反向传播推导

昨天晚上推CNN反向,池化层这块没推明白,不懂为什么meanpool偏导为1/(k*k),但是上采样却变成了另一种看起来比较简单的方法。 一、明确反向传播的是什么 cost函数对某一参数的偏导,即某一参数发生变化,会对cost产生什么影响。 在已l层变化对cost的影响,我们可以进一步根据链式法则得到l-1层参数对cost的影响。 二、在池化层中 目前,我们已知的是池化后的z(l)变化对cost的影响,想要知道的是池化前的z(l-1)对cost的影响。 z(l-1)通过激活函数,变为a(l-1),再经过池化

weixin_45252975的博客 1007

C++从零实现神经网络:手写数字识别与反向传播算法详解

神经网络是机器学习领域的核心模型,其通过模拟人脑神经元连接进行信息处理。其核心原理在于前向传播计算预测值,并通过反向传播算法,利用链式法则计算损失函数对网络参数的梯度,从而通过梯度下降等优化方法迭代更新权重,实现模型学习。这项技术在计算机视觉、自然语言处理等领域具有极高价值。本文聚焦于手写数字识别这一经典应用场景,深入探讨了如何不依赖任何深度学习框架,使用C++从零实现一个完整的神经网络,包括高效的矩阵类设计、MNIST数据加载、反向传播算法的逐行推导与实现,以及卷积神经网络(CNN)的基础构建。通过剖析梯

csdn864883的博客 410

Keras卷积神经网络逐层拆解:从MNIST实战看CNN底层原理

卷积神经网络(CNN)是计算机视觉的基石架构,其核心在于局部感受野、权值共享与层次化特征提取。理解CNN不能止步于公式推导,而需深入张量维度变换、内存分配与梯度流动等工程细节。本文以Keras为工具,聚焦Conv2D层参数推导、padding机制、ReLU激活与He初始化的协同作用,结合MNIST数据集开展可验证的代码级剖析。通过model.summary()输出、get_weights()形状检查及tf.GradientTape梯度捕获,将抽象概念具象为Python变量,揭示卷积核滑动、池化筛选、特征图升

weixin_30333885的博客 512

手写CNN从零实现:PyTorch底层原理与工程实践

卷积神经网络(CNN)是计算机视觉的基石,其核心在于局部感受野、权值共享与空间下采样等机制;PyTorch作为主流深度学习框架,凭借动态计算图与细粒度autograd控制,成为理解CNN反向传播与内存行为的理想工具。从零手写CNN并非重复造轮子,而是深入张量形状变换、梯度流向追踪、CUDA内核调用及显存布局等底层细节,从而建立对模型训练全过程的物理级直觉。该实践显著提升调试能力——如定位梯度爆炸、NaN loss、显存溢出等高频问题,并支撑边缘部署、模型轻量化与自定义算子开发等真实场景。本文以LeNet-5

weixin_30617797的博客 692

深度学习入门:从环境搭建到GoogLeNet实战的系统化学习路径

深度学习作为人工智能的核心技术,其本质是通过多层神经网络自动学习数据中的层次化特征表示。其工作原理基于前向传播计算预测值,再通过损失函数衡量误差,并利用反向传播算法将误差梯度回传,由优化器自动调整网络权重,从而实现从数据中学习复杂模式的能力。这一技术价值在于能够处理图像、语音、文本等具有丰富结构的数据,在计算机视觉、自然语言处理等领域有广泛应用。对于初学者而言,系统化的学习路径至关重要,尤其需要从环境配置和工具链选择开始,例如使用PyTorch框架进行模型开发,并理解如何加载和微调预训练模型如GoogLeN

weixin_30274627的博客 399

AI大模型深度学习原理:从神经网络到Transformer架构详解

深度学习作为机器学习的重要分支,通过模拟人脑神经网络的多层非线性处理单元实现特征学习和模式识别。其核心原理基于前向传播和反向传播算法,通过梯度下降优化参数权重。在技术价值层面,深度学习能够自动从原始数据中学习层次化特征表示,大幅减少人工特征工程的需求。应用场景涵盖图像识别、自然语言处理、语音识别等多个领域。随着模型规模扩大,AI大模型基于Transformer架构和自注意力机制,在预训练与微调范式下展现出强大的泛化能力。本文聚焦深度学习模型工作原理,特别是面试中常见的Transformer架构和梯度优化等关

weixin_30298497的博客 322

常见的几种池化操作:MaxPool2d/AdaptiveMaxPool2d/AvgPool2d/AdaptiveAvgPool2d...(Pytorch)

case3:output_size=(H_out,None)或output_size=(None,W_out),此时指定为None的维度与输入中保持一致,既output_size=(H_out,None)时W_out=W_in;case3:output_size=(H_out,None)或output_size=(None,W_out),此时指定为None的维度与输入中保持一致,既output_size=(H_out,None)时W_out=W_in;因为执行的是最大池化操作,所以在填充时使用负无穷。

NorthSmile的博客 1万+

PyTorch中的max_pool函数详解

在CNN中,池化操作(Pooling Operation)是一种常见的操作,用于减小特征图的空间维度,同时保留主要的特征信息。最后打印输出特征图,可以看到输出特征图的大小为(1, 1, 2, 2),其中的元素值为0.7846。max_pool函数是PyTorch中实现最大池化操作的函数之一,用于减小特征图的空间维度并保留主要的特征信息。它将输入的特征图划分为不重叠的区域,并从每个区域中选择最大的元素作为输出。这样可以减小特征图的空间维度,并保留主要的特征信息,从而降低模型的计算复杂度,提高特征的不变性。

DkVhdl的博客 743

4.1.1 CNN进行衣物图片分类----Pytorch实战

本文介绍了经典的卷积神经网络LeNet-5及其PyTorch实现。LeNet-5由Yann LeCun提出,是最早的卷积神经网络之一,主要用于手写数字识别。文章详细分析了其网络结构(包含2个卷积层、2个池化层和3个全连接层),给出了各层参数计算方法和输出尺寸推导公式。针对Fashion-MNIST数据集(28×28灰度图),提供了两种实现方案:填充至32×32或直接调整网络结构。最后展示了完整的PyTorch实现代码,包括模型定义和训练流程,使用ReLU激活函数替代原始的tanh,更适合现代深度学习应用。

炫云云 121

07. 基础实战篇 - STP的基本配置

STP(生成数协议)是一个用于在局域网中消除环路的协议,他的标准是IEEE802.1d。STP通过强制使部分冗余链路处于阻塞状态,其它链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构。可实现消除环路,当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

weixin_39868387的博客 7225

ESP32-C61 eFuse控制器深度解析:寄存器架构与安全烧写实践

eFuse(电子熔丝)是嵌入式芯片实现硬件级不可逆配置与信任根构建的核心物理机制,其本质是通过电学编程固化关键安全参数。原理上依赖熔丝单元的单向导通/断开特性,结合Reed-Solomon纠错、多级写保护和时序可控编程,保障数据在宽温域与工艺偏差下的高可靠性。技术价值在于为Secure Boot、Flash加密、密钥隔离等安全功能提供可信锚点,支撑从启动到运行的全链路防护。典型应用场景涵盖物联网设备量产烧录、安全启动使能、MAC地址固化及抗DPA密码运算配置。本文聚焦ESP32-C61平台,深入解析其eFu

weixin_42589700的博客 123

语义通信理论必看论文:Towards a Theory of Semantic Communication

了解语义通信发展必看的一篇文章

一去不复返的通信er 3926

ndnSIM学习笔记(一)

在接下来的一段时间要用ndnSIM来做自己的仿真网络,需要系统的学习相关内容,以下为内容记录。1.安装      1.1核心依赖(必需的)             • python >= 2.6             • libsqlite3             • libcrypto++             • pkg-config             • Boost lib...

gaonjzzz的博客 2985

23、关联挖掘到相关性分析及约束关联挖掘详解

本文详细解析了从关联挖掘到相关性分析的发展过程,以及基于约束的关联挖掘方法。文章介绍了传统支持-置信度框架的局限性,并引入Lift、χ2、All Confidence和Cosine等度量来评估规则的相关性。同时探讨了多种规则约束在数据挖掘中的应用机制及其优化效果,旨在提高挖掘效率和规则质量。最后结合实际案例说明如何综合运用相关性度量与规则约束以满足业务需求,并展望了数据挖掘技术的未来发展。

aa123的博客 103

100天精通Python(基础篇)——第22天:eval 函数基础以及危险警告

1. eval()函数的概念 2. eval()函数语法 3. 命名空间 4. 使用实例 1. 基本的数学运算 2. 字符串重复 3. 将字符串转换成列表 4. 将字符串转换成字典 5. 将字符串转成元祖 6. 与其它函数结合使用 7. globals参数案例 8. locals参数案例 5. eval函数的危险之处(重中之中)

努力让自己发光,对的人才能迎着光而来 15万+

几种负载均衡策略(DNS、NAT、重定向、反向代理)

摘要:本文对比了四种负载均衡技术:DNS负载均衡通过域名解析分发IP,用户直连服务器;NAT负载均衡通过VIP转发流量,所有流量经过负载均衡器;HTTP重定向通过302跳转实现分流;反向代理则隐藏后端服务器,统一转发请求。DNS简单但调度不精准,NAT精准但有带宽瓶颈,HTTP重定向延迟高,反向代理性能好但需专用设备。适用场景各异,DNS适合异地分流,NAT适合内网集群,HTTP重定向适合简单分流,反向代理适合高并发场景。核心区别在于层级(3层/7层)和流量走向(直连/中转)。

echo的博客 71

FPGA实现CAN接口(SJA1000)

学无止境,善于积累,每天积累一点点,成功就在眼前,加油! 1 CAN总线简介 CAN(Controller Area Network,控制器局域网 )总线是一个多主机异步串行总线,也是国际上应用最广泛的现场总线之一。在现场总线中,它是惟一被ISO国际标准化组织批准的现场总线。由于其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。特别是由于CAN总线具有...

m0_46498597的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Python和PyTorch对比实现池化层MaxPool函数及反向传播
下一篇: PyTorch Kaggle 快速上手(杂草幼苗图片识别)
BrightLampCsdn
博客等级 码龄14年 129粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值