动手学 task5 卷积神经网络基础;leNet;卷积神经网络进阶
卷积神经网络基础 二维卷积层 填充和步幅 我们介绍卷积层的两个超参数,即填充和步幅,它们可以对给定形状的输入和卷积核改变输出形状。 填充 公式: 总的计算公式: 总结: 最后一个公式相比前一个公式没有加1的操作,乍一看公式不同(即什么时候加1什么时候不加1)其时,对第二个公式分解一下,即可归纳出什么时候都需要加1的操作。这样便于记忆) 多输入通道和多输出通道¶ 代码: print(X.shape) conv2d = nn.Conv2d(in_channels=2, out_channels=3, kernel_size=(3, 5), stride=1, padding=(1, 2 卷积神经网络(CNN)是深度学习中一种重要的模型,尤其在图像处理任务中表现出色。CNN通过卷积层、池化层等组件构建,能够自动学习图像的特征表示,从而减少人工特征工程的工作。 我们要理解二维卷积层中的两个关键超参数:填充(padding)和步幅(stride)。填充是在输入图像边缘添加额外的零值区域,目的是保持输出特征图的大小接近于输入,或者精确地达到预设大小。填充的计算公式为:输出高度(宽度)= (输入高度(宽度)- 卷积核高度(宽度) + 2 * 填充) / 步幅 + 1。当步幅为1且没有特殊需求时,通常会用填充来保持输出大小不变。 另一方面,步幅控制了卷积核移动的步长。较大的步幅可以减少计算量,但可能导致丢失部分信息。例如,步幅为2时,每个卷积核只在输入上进行每2个像素的跳跃,输出特征图的尺寸减半。 在多输入通道和多输出通道的情况下,一个卷积层可以同时处理多个输入特征图(例如RGB图像的三个通道)并产生多个输出特征图。在PyTorch中,`nn.Conv2d`模块的`in_channels`参数指定输入通道数,`out_channels`参数设定输出通道数。例如,`nn.Conv2d(in_channels=2, out_channels=3, kernel_size=(3, 5), stride=1, padding=(1, 2))`创建了一个接受两个输入通道,生成三个输出通道的卷积层,其卷积核尺寸为3x5,步幅为1,填充为1x2。 LeNet是早期的CNN模型,由Yann LeCun等人提出,主要用于手写数字识别。然而,LeNet在处理大型真实数据集时,由于网络较浅和参数量较小,可能无法达到理想效果。AlexNet是LeNet的一个扩展,它引入了更深的网络结构、更大的卷积核以及ReLU激活函数,克服了LeNet在大规模数据集上的局限性。AlexNet的成功展示了深度学习在图像识别领域的潜力,并为后续的VGG、ResNet等深度模型铺平了道路。 卷积层的一个显著优势是参数共享,它通过在输入上滑动卷积核来提取特征,减少了需要训练的参数数量,避免了模型过拟合。此外,卷积层保持了输入的二维结构,有助于捕捉空间信息,这对于图像处理至关重要。 在实现上,我们可以使用PyTorch构建CNN模型,如LeNet的简化版本,它包含卷积层、池化层和全连接层。通过`Flatten`层将卷积层的输出展平,以便于全连接层的计算,最后通过多层线性变换完成分类任务。 卷积神经网络通过其独特的结构和超参数,如卷积核、填充和步幅,以及参数共享机制,有效地处理图像数据,实现了自动特征提取,成为现代深度学习不可或缺的一部分。随着技术的发展,不断有新的CNN变体和优化方法出现,如残差网络(ResNet)、注意力机制等,进一步提升了模型的性能。
剩余9页未读,继续阅读
- 粉丝: 8
- 资源: 920
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Vue+NodeJS的学生社团管理系统(前后端代码)
- 基于SSM+JSP的快递管理系统(前后端代码)
- 全球火点数据-modis-2015-2023年
- YOLOv8完整网络结构图详细visio
- LCD1602电子时钟程序
- 西北太平洋热带气旋【灾害风险统计】及【登陆我国次数评估】数据集-1980-2023
- 全球干旱数据集【自校准帕尔默干旱程度指数scPDSI】-190101-202312-0.5x0.5
- 基于Python实现的VAE(变分自编码器)训练算法源代码+使用说明
- 全球干旱数据集【标准化降水蒸发指数SPEI-12】-190101-202312-0.5x0.5
- C语言小游戏-五子棋-详细代码可运行
评论0