ResNet理论知识以及具体实现

、基础知识

残差块

如下图所示,假设我们的原始输入为x,而希望学出的理想映射为 f ( x )  (作为 residual_block 上方激活函数的输入)

网络的每一层我们看作是:y = H ( x ),也就是这里的输出f ( x )

残差网络的一个残差块可以表示为:H ( x ) = F ( x ) + x ,这里的F ( x )等价于residual_block 右图虚线框中的部分

那么就可以得到:F ( x ) = H ( x ) − x,也就是f ( x ) − x

参差网络的通用表达方式是:

h(.)是直接映射,f ( . )是激活函数,一般使用ReLU。

所以参差块可以表示为:

这个是残差网络核心公式,下方是对应实例,先weight卷积获得权重,bn是批归一化,ReLU激活函数,最高可以叠加到一千多层,因为传递是包括上一层部分信息,相对于其他网络信息传递过程中损失较低。

在残差网络中经常需要使用瓶颈结构,也就是使用1*1的卷积进行升维或者降维,这样可以减少计算量且信息损失较小。原因:卷积主要是用于提取图像特征,在有些图片中,大部分卷积核是提取不到任何特征的,小部分可以提取到特征,所以原图像对应的信息是稀疏的,就可以进行压缩,就不会损失太多原来信息。

具体来说就是,1*1的卷积核可以非常方便的调整中间层的通道数,在进入3*3的卷积层之前减少通道数(256->64),经过该卷积层后再恢复通道数(64->256),可以显著减少网络的参数量。

二、主要功能源码及分析

定义了一个包含卷积、批量归一化和激活函数的神经网络层。做好预先准备。

 

然后定义残差块BottleneckBlock,每个残差块会对输入图片做三次卷积ConvBNLayer,然后跟输入图片进行短接,如果残差块中第三次卷积输出特征图的形状与输入不一致,则对输入图片使用1 x 1卷积,将其输出形状调整成一致。

在深度学习中,残差网络是一种通过引入“跳过连接”或“短路连接”来解决深度神经网络训练难题的网络结构。

__init__函数:这是类的初始化函数,定义了三个卷积层(conv0、conv1、conv2)和一个可选的shortcut层(如果shortcut参数为False)。

ConvBNLayer是一个包含卷积、批归一化和激活函数的层。第一个和第三个卷积层的卷积核大小为1x1,主要用于改变通道数;第二个卷积层的卷积核大小为3x3,主要用于提取空间特征。

类的前向传播函数,用于定义如何根据输入数据计算输出。首先,输入数据依次通过三个卷积层进行处理。然后,根据shortcut参数的值,决定是否需要对输入数据进行shortcut操作。最后,将shortcut操作的结果与第三个卷积层的输出相加,并通过ReLU激活函数进行非线性处理,得到最终的输出。

ResNet的具体实现

根据输入参数layers(网络层数)和class_dim(分类标签的类别数),来确定ResNet模型的基本结构,包括网络层数和每个模块中残差块的数量,以及残差块中卷积的输出通道数。

 

主要实现了ResNet的第一个模块以及ResNet的第二到第五个模块的构建过程。

主要实现了对ResNet模型最后输出特征图的全局池化和全连接层的定义,用于进行分类任务。

实现了ResNet模型的前向传播过程,包括卷积、池化、残差块计算、全局平均池化和全连接层计算。最终输出的结果是经过全连接层处理后的分类预测结果。 

实验小

在进行ResNet设计思想的实验中,我获得了以下心得体会和发现了一些不足之处:

残差连接的重要性:通过实验我深刻体会到了残差连接对于解决深度神经网络训练中的梯度问题的重要性。残差连接可以有效地减轻梯度消失和梯度爆炸问题,使得网络更容易训练,并且允许构建非常深的网络结构。

逐层增加的策略:ResNet采用了逐层增加的策略,通过堆叠多个残差块来增加网络的深度。这种策略有助于网络学习到更高级的特征表示,但也需要注意过深的网络可能会导致优化困难和训练时间增加的问题。

模型鲁棒性:在实验中发现,ResNet模型对于训练数据中的噪声和干扰具有一定的抵抗能力,表现出较强的鲁棒性。这对于实际应用中处理真实世界中复杂图像数据具有重要意义。

不足之处:在实验中也发现了一些不足之处,例如在遇到小样本数据集或类别不平衡情况下,ResNet模型的性能可能会受到影响,需要额外的处理和改进。此外,模型的训练时间和计算资源消耗较大,需要综合考虑模型性能和实际可行性。

总的来说,ResNet设计思想的实验让我更深入地理解了深度残差网络的优势和不足之处,也让我意识到了在实际应用中需要继续探索和优化的方向。深入研究和改进ResNet模型对于提高图像分类任务的性能和推动计算机视觉技术的发展具有重要意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值