007-卷积神经网络03-前向传播-反向传播

本文详细解析了深度学习中卷积神经网络的前向传播与反向传播过程,阐述了权重、偏置及激活函数如何作用于输入数据生成特征图,并深入探讨了反向传播中的梯度计算及链式法则,对理解深度学习模型的训练过程具有重要意义。

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

前向传播:

前向传播就是求特征图的过程

通常x和w有四个维度[编号,深度,高度,宽度]

 

反向传播:

先来复习一下反向传播的知识:

反向传播回来的是梯度,也就是偏导数

反向传播力有一个链式法则:对于反向传播(反着看),本层要往后面一层穿的的偏导=本层自身的偏导×上一层传过来的偏导

红色代表反向传播,绿色代表正向传播

 

out = wx+b

out对w求倒数:(wx+b)’=x

那么dw = dout·x

那么换到矩阵之后我的反向传播就可以是dout与x的内积

对于卷积层的反向传播:

每一个dout都对应一个filter上图只是对于filter 1所做的反向传播

同理就有filter2的反向传播

 

对于pooling层的反向传播:

 

 

 

转载于:https://www.cnblogs.com/Mjerry/p/9804721.html

### 卷积神经网络传播 卷积神经网络(CNN)是一种专门用于处理具有网格结构的数据(如图像数据)的深度学习模型。其核心操作是卷积层,该层通过应用一系列滤波器来提取输入特征的不同方面。 在传播过程中,输入数据经过多个卷积层池化层的操作逐步被转换成更高层次的抽象表示形式[^1]。具体来说: - **卷积运算**:对于每一个位置,计算局部区域内的加权求并加上偏置项; - **激活函数**:通常采用ReLU作为非线性变换单元; - **池化操作**:减少空间维度的同时保留重要信息; 这些过程共同作用使得原始像素级的信息逐渐转化为语义级别更强的表现形式,从而有利于后续分类或其他任务执行。 ```python import torch.nn as nn class ConvNet(nn.Module): def __init__(self, num_classes=10): super(ConvNet, self).__init__() self.layer1 = nn.Sequential( nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2)) def forward(self, x): out = self.layer1(x) return out ``` ### 卷积神经网络反向传播 为了训练一个有效的卷积神经网络,在定义好损失函数之后还需要实现参数更新机制——即所谓的“反向传播”。这一阶段的目标是从最后一层开始逐层向传递误差梯度,并据此调整各层权重以最小化整体预测错误。 针对每一层而言,主要涉及两个方面的计算工作: - 计算当层相对于上一层输出的变化率 (δ),这一步骤依赖于链式法则以及具体的激活/聚合方式; - 更新对应的可调参量 w b ,一般会利用随机梯度下降(SGD) 或者其他优化方法来进行迭代改进; 值得注意的是,由于存在共享权重特性,因此同一组过滤器会在不同位置重复使用相同的参数集,这也意味着在整个网络范围内只需维护少量独立变量即可完成全局最优解搜索[^2]. ```python loss_fn = nn.CrossEntropyLoss() optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) def backward_pass(output, target): loss = loss_fn(output, target) optimizer.zero_grad() # 清除之的梯度 loss.backward() # 反向传播计算梯度 optimizer.step() # 使用SGD更新参数 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值