卷积层的基本操作

最近将以前所学的卷积方面知识复习一下

卷积层 Convolution Layers 是为了提取图像特征

我对于卷积的学习,是从B站上一个up主学习的([土堆说卷积操作(可选看)_哔哩哔哩_bilibili] (www.bilibili.com/video/BV1hE…

在pytorch的官方文档上,可以看到卷积的参数如下

image.png

就是一个输入通道数,一个输出通道数,

一个kernel_size(卷积核尺寸,也可以说是权重weight),int=3,就是3×3的矩阵;

stride步幅,就是卷积核在图像上移动的距离,默认是1;

pandding就是在输入图像上四边填充的像素数,主要是为了stride移动时,输入图像像素不够的情况下的填充,默认值是0,

dilation是控制卷积核元素之间的距离,默认值是1(空洞卷积);

image.png

bias,偏置,一般不加,后面加了BN层,就不用加了,因为BN层会抵消bias;

ceil—mode,true是ceil模式,false是flood模式,就是向上取整或者向下取整;

image.png

卷积核的数值分别与图像上的像素值相乘,就是输出值

image.png

卷积层会根据公式计算不同参数值下输入、输出图像的值

例如,3@32×32->32@32×32,宽高不变,通道变成32, 假如使用一个5×5的卷积核,

微信图片_20240407111104.jpg

所以采用(3,32,5,1,2)

image.png

假如要用一个7×7的卷积核,把3@600×600变成64@300×300

微信图片_20240407112217.jpg

这里为什么会说padding太大了呢?

因为0<=pading<=(kernrl_size)/2,padding不大于卷积核的一半

而stride取2,padding取3的时候,结果不是整数,为什么还能变成整数呢?

因为卷积层和池化层不一样,卷积是向下取整,池化是向上取整

当stride=2,padding=3时,结果是299.5,向下取整变成299,就符合了

image.png

再例如,宽高从416->208,k=3时怎么办? (416+2p-1*(3-1)-1)/s+1=208

if s=1,(413+2p)/1=207,p不能小于0;

if s=2,(413+2p)/2=207,p=1,415/2=207.5,向下取整=207;

以上就是我关于卷积的学习笔记,如果有不对的地方,可以找我交流。

卷积神经网络(Convolutional Neural Network,CNN)是一种常用于图像处理和计算机视觉任务的深度学习模型。卷积层是CNN中的核心组件之一,它通过卷积操作提取输入数据的特征。 在卷积层的反向传播推导中,我们需要计算损失函数对于卷积层输入、权重和偏置的梯度。下面是卷积层反向传播推导的步骤: 1. 计算损失函数对于卷积层输出的梯度: 首先,根据损失函数的定义,计算损失函数对于卷积层输出的梯度。这个梯度可以通过使用链式法则从后一层传播过来的梯度计算得到。 2. 计算损失函数对于卷积层权重的梯度: 使用卷积操作的性质,将损失函数对于卷积层输出的梯度与输入数据进行卷积操作,得到损失函数对于卷积层权重的梯度。 3. 计算损失函数对于卷积层输入的梯度: 使用卷积操作的性质,将损失函数对于卷积层输出的梯度与卷积层权重进行卷积操作,得到损失函数对于卷积层输入的梯度。 4. 计算损失函数对于卷积层偏置的梯度: 将损失函数对于卷积层输出的梯度按照通道求和,得到每个通道的梯度,即损失函数对于卷积层偏置的梯度。 以上是卷积层反向传播推导的基本步骤。在实际应用中,还需要考虑批量处理、激活函数等因素。如果你对某个具体的CNN模型或者反向传播的细节有更具体的问题,可以告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值