0


Resnet结构介绍

ResNet,全称为残差网络(Residual Networks),是一种深度卷积神经网络架构,由微软研究院的Kaiming He等人于2015年提出。ResNet在多个视觉识别任务中取得了当时的最佳性能,并在深度学习领域产生了深远的影响。

一、ResNet的核心概念:

1.残差学习

ResNet的核心思想是残差学习,即网络学习的是输入和输出之间的残差(即差异),而不是直接学习映射关系。

2.残差块(Residual Blocks):

ResNet由多个残差块组成,每个残差块包含两条路径:一条是卷积层的堆叠,另一条是恒等连接(Identity Connection)。

3.恒等连接

恒等连接允许输入直接跳过一些层的输出,然后与这些层的输出相加。这有助于解决深层网络训练中的梯度消失问题。

                                 ![](https://i-blog.csdnimg.cn/direct/b12923817d4342e08e353d952cf12163.png)

二、ResNet的基本结构:

  1. 卷积层: 输入数据首先通过一个卷积层,通常是一个具有相同填充的3x3卷积核,以减少数据的空间维度。
  2. 残差块: 每个残差块包含多个卷积层(通常是两个或更多),每个卷积层后面跟着一个批次归一化层和ReLU激活函数。
  3. 恒等快捷连接: 如果残差块的输入和输出的维度不一致,使用1x1卷积核进行维度匹配,然后与块内的卷积层输出相加。
  4. 层叠残差块: 多个残差块按顺序堆叠,形成更深的网络结构。
  5. 全局平均池化: 在残差块堆叠之后,使用全局平均池化层将特征图转换为一维特征向量。
  6. 全连接层: 最后,一个或多个全连接层用于分类任务,输出最终的类别概率。

下图是不同层数的残差网络的架构:

三、ResNet的优势:

1.解决梯度消失问题:

通过恒等连接,ResNet允许梯度直接流向前面的层,从而缓解了深层网络训练中的梯度消失问题。

2.简化网络设计:

残差块的引入简化了网络的设计,使得可以轻松地构建更深的网络。

3.提高模型性能:

ResNet在多个视觉识别任务上取得了优异的性能,证明了其有效性。

四、代码示例

使用迁移学习加载resnet18网络,冻结大部分参数,微调需要修改的部分。

import torch
import torchvision.models as models
from torch import nn
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
from PIL import Image
import numpy as np

'''将resnet18模型迁移到食物分类项目中'''  #残差网络是固定的网络结构,不需要自己定义类了
resnet_model = models.resnet18(weights = models.ResNet18_Weights.DEFAULT) #即调用了resnet18网络,又使用了训练好的模型
# weights=models.ResNet18_Weights.DEFAULT表示使用在ImageNet数据集上预先训练好的权重来初始化模型参数,可进入源代码查看
for param in resnet_model.parameters():
    param.requires_grad = False
#模型所有参数(即权重和偏差)的requires_grad属性设置为False, 从而冻结所有模型参数
#使得在反向传播过程中不会计算它们的梯度,以此减少模型的计算量,提高推理速度。

# 修改全连接层适应当前项目
in_features = resnet_model.fc.in_features#获取模型原输入的特征个数
resnet_model.fc = nn.Linear(in_features, 20)#创建一个全连接层 输入特征为in_features,输出为20

params_to_update = [] # 保存需要训练的参数,仅仅包含全连接层的参数
for param in resnet_model.parameters():
    if param.requires_grad == True:  #默认重新赋值后requires_grad就不是false
        params_to_update.append(param)

本文转载自: https://blog.csdn.net/2301_77444219/article/details/140723466
版权归原作者 01_6 所有, 如有侵权,请联系我们删除。

“Resnet结构介绍”的评论:

还没有评论