1.什么是卷积?
在卷积神经网络中,卷积操作是指将一个可移动的小窗口(称为数据窗口,如下图绿色矩形)与图像进行逐元素相乘然后相加的操作。这个小窗口其实是一组固定的权重,它可以被看作是一个特定的滤波器(filter)或卷积核。这个操作的名称“卷积”,源自于这种元素级相乘和求和的过程。这一操作是卷积神经网络名字的来源。
这张图中蓝色的框就是指一个数据窗口,红色框为卷积核(滤波器),最后得到的绿色方形就是卷积的结果(数据窗口中的数据与卷积核逐个元素相乘再求和)
影响卷积的因素有哪些?
1,步长stride:每次滑动的位置长度。
2,卷积核的个数。
3,填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
2.卷积神经网络的构成
卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,特别适用于处理具有网格结构的数据,如图像。CNN的核心思想是通过卷积层、池化层和全连接层来提取和学习图像的特征。
2.1卷积层(Convolutional Layer)
卷积层是CNN的核心组成部分,用于提取图像的局部特征。卷积层通过卷积核(也称为滤波器)在输入图像上滑动,计算局部区域的特征。
结构含义:
*输入:通常是一个多通道的图像(例如RGB图像有3个通道)。
*卷积核:一个小的权重矩阵,用于在输入图像上滑动并计算特征。
*输出:卷积操作的结果,通常称为特征图(Feature Map)
import torch
import torch.nn as nn
# 定义卷积层
conv_layer = nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3, stride=1, padding=1)
# 输入图像的形状为 (batch_size, channels, height, width)
input_tensor = torch.randn(1, 1, 28, 28)
# 前向传播
output_tensor = conv_layer(input_tensor)
print(output_tensor.shape) # 输出