P11ResNet-50+残差网络算法实战与解析

本周任务

1.请根据本文 TensorFlow 代码,编写出相应的 Pytorch 代码
2.了解残差结构

一、了解残差网络

反向残差
以下是对反向残差块的详细解释:
一、基本概念
反向残差块是一种在深度学习架构,特别是在 MobileNetV2 等轻量级网络中广泛使用的模块。传统的残差块是先通过一个或多个卷积层将输入特征图进行降维,经过一些操作后再将其升维到原始的通道数,其形式可以表示为:输入 -> 卷积(降维)-> 非线性激活 -> 卷积(升维) -> 输出。而反向残差块则与之相反,它先将输入特征图进行升维,再进行操作,最后降维,形式为:输入 -> 卷积(升维)-> 非线性激活 -> 卷积(降维) -> 输出。
二、结构细节
● 升维部分:首先,使用一个深度可分离卷积(Depthwise Separable Convolution)或普通卷积将输入的低维特征图扩展到一个较高的维度。深度可分离卷积将传统卷积操作分解为深度卷积和逐点卷积,能够有效减少计算量。通过这个操作,特征图的通道数增加,这一步是为了让网络在高维空间中更好地学习特征表示。
● 非线性激活部分:在升维之后,通常会应用非线性激活函数,例如 ReLU6。ReLU6 函数的定义为 y = min(max(0, x), 6),其目的是为了防止梯度爆炸和使网络更具鲁棒性,尤其在低精度计算设备上。
● 降维部分:最后使用另一个卷积操作将高维特征图降维到原始的通道数,这个操作可以使用普通卷积或 1x1 卷积,其作用是将特征图恢复到输入的维度,从而实现残差连接。
三、优势
● 计算效率:使用深度可分离卷积和反向的结构,在升维后再降维的操作,有助于减少计算量和参数数量,这对于在移动设备或边缘设备上运行的深度学习模型至关重要,因为这些设备的计算资源和存储资源有限。
● 特征学习:在高维空间中进行特征学习和激活,可以使网络更有效地提取和表示复杂的特征,尤其是对于具有复杂纹理和结构的输入,比如图像数据,能够更好地学习到局部和全局特征。
四、应用场景
● 主要应用在轻量级深度学习模型中,例如在移动端图像分类、目标检测和语义分割任务中,以 MobileNetV2 为代表,其核心模块就是反向残差块。这些任务需要在资源受限的情况下保持较高的性能,反向残差块通过其独特的结构和计算优势,可以在保证一定精度的前提下,大大减少模型的大小和计算量,从而实现快速的推理和部署。

总的来说,反向残差块是一种为了满足深度学习在资源受限设备上的需求而设计的高效特征学习模块,通过独特的结构设计和激活函数的使用,在保证性能的同时减少了计算成本和参数数量,为构建轻量级深度学习网络提供了一个有效的解决方案。
以下是对先降维处理再升维和先升维处理再降维的区别以及计算量差距的详细解释:
一、区别
● 先降维后升维(传统残差块):
○ 信息表示:一开始将输入的特征图进行降维,意味着网络会在一个低维空间中进行操作,可能会丢失一些信息。在低维空间中,网络可能难以捕捉到一些复杂的特征模式,尤其是对于具有丰富细节和复杂结构的数据,例如高分辨率图像中的细微纹理、复杂的音频信号特征等。在降维过程中,可能会对原始信息进行一定的压缩,这对于后续的特征学习会带来一定的挑战,因为特征表示的能力可能会受到维度的限制。
○ 计算目的:在低维空间中,由于通道数较少,计算量相对较小,但也限制了非线性变换的表达能力。后续的升维操作通常是为了将特征恢复到原始维度以实现残差连接,但是由于之前的低维操作,可能会在一定程度上影响最终的特征表示质量。
○ 非线性能力:在低维空间中应用非线性激活函数时,由于维度较低,可能无法充分发挥非线性函数的表达能力,导致网络对复杂数据的拟合能力受限。
● 先升维后降维(反向残差块):
○ 信息表示:先将输入特征图进行升维,使网络在高维空间中操作,这样网络可以更好地学习和表示复杂的特征,更有利于捕捉数据中的各种细节和结构信息。在高维空间中,特征图有更多的通道来表示不同的特征,对于复杂的数据,能够提供更丰富的特征表示,为后续的操作提供了更多的信息冗余,从而增强了网络对复杂模式的学习能力。
○ 计算目的:在高维空间中进行特征学习,然后再降维,主要目的是在高维空间中充分挖掘特征,最后再将特征图恢复到原始维度以实现残差连接。这样可以在保证特征表示质量的同时,更好地利用高维空间的优势,提高网络的性能。
○ 非线性能力:在高维空间中使用非线性激活函数,如 ReLU6,可以更好地发挥非线性函数的作用,使网络能够更好地拟合复杂的数据,增强了网络对非线性关系的建模能力。

二、计算量差距
● 卷积计算量公式:对于标准的二维卷积,计算量(乘法和加法操作)可以大致用公式 O = K 2 × C i n × C o u t × H o u t × W o u t O = K^2 \times C_{in} \times C_{out} \times H_{out} \times W_{out} O=K2×Cin×Cout×Hout×Wout 来计算,其中 K K K 是卷积核的大小, C i n C_{in} Cin 是输入通道数, C o u t C_{out} Cout 是输出通道数, H o u t H_{out} Hout W o u t W_{out} Wout 是输出特征图的高度和宽度。
● 先降维后升维:假设输入通道数为 C i n C_{in} Cin,中间降维到 C m i d C_{mid} Cmid,最终升维到 C o u t C_{out} Cout
○ 降维卷积: O 1 = K 2 × C i n × C m i d × H o u t × W o u t O_1 = K^2 \times C_{in} \times C_{mid} \times H_{out} \times W_{out} O1=K2×Cin×Cmid×Hout×Wout
○ 升维卷积: O 2 = K 2 × C m i d × C o u t × H o u t × W o u t O_2 = K^2 \times C_{mid} \times C_{out} \times H_{out} \times W_{out} O2=K2×Cmid×Cout×Hout×Wout
○ 总计算量: O t o t a l 1 = O 1 +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值