做公司网站 找谁做,有什么功能,龙之外贸向导,局部改造家装公司一、认识卷积操作 卷积操作是一种数学运算#xff0c;它涉及两个函数#xff1a;输入函数#xff08;通常是图像#xff09;和卷积核#xff08;也称为滤波器或特征检测器#xff09;。卷积核在输入函数上滑动#xff0c;将核中的每个元素与其覆盖的输入函数区域中的对应…一、认识卷积操作 卷积操作是一种数学运算它涉及两个函数输入函数通常是图像和卷积核也称为滤波器或特征检测器。卷积核在输入函数上滑动将核中的每个元素与其覆盖的输入函数区域中的对应元素相乘然后将所有乘积相加形成输出函数的一个值。这个过程在整个输入函数上重复生成一个新的二维数组称为特征图或激活图。 卷积操作的主要目的是从输入数据中提取特征。通过改变卷积核的值可以检测不同类型的特征如边缘、角点、纹理等。
二、运用卷积操作
1、卷积操作函数 在PyTorch中可以使用torch.nn.functional.conv2d函数执行二维卷积操作。该函数的输入包括输入张量、卷积核、以及其他可选参数如步长stride、填充padding等。
2、函数参数解释
对常用的参数进行一些说明
输入通道数 (in_channels): 这表示输入图像有多少个颜色通道。例如对于彩色图像通常有红、绿、蓝三个通道所以输入通道数就是3。输出通道数 (out_channels): 这表示卷积操作后你希望有多少个特征图或者卷积核。每一个特征图都可以看作是一种特征检测器用于检测输入图像中的某种特定特征。卷积核大小 (kernel_size): 这表示卷积核的尺寸。卷积核就像一个滑动窗口在输入图像上滑动进行像素值的加权求和。常见的卷积核大小有3x3、5x5等。步长 (stride): 这表示卷积核在输入图像上滑动时每次移动的距离。步长越大输出的特征图尺寸就越小。填充 (padding): 在输入图像的周围添加额外的像素值通常是0。填充的目的是为了控制输出特征图的尺寸以及让卷积核能够处理到输入图像的边界像素。
其他的具体参数可以查看官方文档里面有详细说明
torch.nn.functional.conv2d — PyTorch 2.3 documentationhttps://pytorch.org/docs/stable/generated/torch.nn.functional.conv2d.html#torch.nn.functional.conv2d
3、简单进行卷积操作
常理先进行导包操作
import torch
import torch.nn.functional as F
接着定义输入的矩阵和卷积核输入矩阵形状为5*5卷积核大小为3*3
# 输入
input torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]])# 卷积核
kernel torch.tensor([[1, 2, 1],[0, 1, 0],[2, 1, 0]]) 将输入图像和卷积核重塑为四维张量以适应conv2d函数的要求
input torch.reshape(input, [1, 1, 5, 5])
kernel torch.reshape(kernel, [1, 1, 3, 3])
输出张量的形状为[1, 1, 3, 3]其中第一个和第二个维度分别表示批量大小和通道数在这个例子中都是1第三个和第四个维度表示输出特征图的高和宽。
接着执行卷积操作
output F.conv2d(input, kernel, stride1, padding0)
得出结果如下 三、卷积函数的原理 这里就结合着上面的demo来讲解一下如果学过矩阵的话这就很好理解了在默认步长为1的情况下由于卷积核是3*3的那么就会在原来的输入矩阵中框出同样为3*3的区域按照矩阵中每一个位置对应相乘再相加就得到卷积后3*3矩阵的第一行第一列的结果10 接下来红色所示的框会移动重复上述操作即可得到卷积结果 四、卷积层的工作原理 卷积层是卷积神经网络CNN中的基本组件之一。它的工作原理是通过在输入数据上滑动卷积核来提取特征。每个卷积核都可以学习并检测输入数据中的特定类型的特征。卷积层的输出是一个特征图其中每个位置的值表示该位置在输入数据中是否存在某种特征。后期将会和Tensorboard结合使用更加直观地了解工作过程。