ResNet网络结构,BN以及迁移学习的详解

参考大佬

ResNet详解

论文亮点:

  • 超深的网络结构(突破1000层)

  • 提出residual模型

  • 使用BN加速训练,丢弃(Dropout)
    残差结构解决的问题

  • 梯度消失或梯度爆炸

  • 网络退化的问题

残差结构

在这里插入图片描述
左边的图是针对于网络层数较少的残差结构,ResNet-34
右边的图是针对网络层数比较神的残差结构,ResNet-50/101/152
残差结构是通过主线的残差结构,加上短接线的输出结构,经过激活函数,这里值得注意的是主分支和shortcut的输出特征矩阵的shape必须是相同的。还有就是这里是在相同的维度上相加,不是GoolNet中的深度拼接。右边的残差结构前后都有一个11的卷积层,通过11的卷积核来进行降维和升维(改变深度)。
假设以256深度作为例子
左图:33256256+33256256=1,179,648
右图:1125664+336464+1164*256=69,632
右图的参数量相比于左图少很多
在这里插入图片描述
在这里插入图片描述
实线和虚线的区别
实线是输入和输出的特征矩阵的shape是一样的
虚线是输入和输出是不一样的,通过改变步距,使得主分支和捷径分支输出的shape是一样的
同样对于三层的网络结构,虚线原理是一样的
对于深层的结构,在残差结构中一般设置第一层的步距为2,这样的目的是为了对网络层进行下采样,在原论文中只在Conv3/Conv4/Conv5存在虚线,也就是存在下采样。

BN的详解

BN的目的是使一批(Batch)的特征图满足均值为0,方差为1的分布规律
在图像传入第一个卷积层之前,需要对传入的图像数据做预处理,使它满足一定的规律分布,但是在经过卷积层后,数据的分布就不一定满足一定的规律了,BN就是为了使特征图满足均值为0,方差为1的分布规律。
在原文中讲道,对于拥有D维的输入,要对每一维进行标准化处理。假设我们的输入图像是RGB是三通道的彩色图像,标准化处理分别对RGB三个通道进行处理。
使用BN所需要注意的问题

  • 训练时将training=True,在验证时将traing=False,在Pytorch中可通过创建模型model.train()和model.evl()方法控制
  • batch size尽可能设置的大点,设置小后表现的可能很糟糕,设置的越大求得均值和方差就越接近整个训练集的均值和方差
    -建议放在卷积层和激活层之间,卷积层不用设置偏置,因为没有用,设置偏置得到的结果也是一样的。

迁移学习

迁移学习的优势

  • 能够快速的训练出一个理想的结果
  • 当数据集比较少的时候,也能训练出理想的效果
  • 使用别人的预训练模型参数时,要注意别人的预处理方式

浅层的网络参数可以将学好的参数应用到新的网络模型中,因为浅层的网络结可能学到的信息是相同的。
常见的迁移学习的方式

  • 载入权重后训练所有的参数
  • 载入权重后只训练最后几层的参数
  • 载入权重后在原网络的基础上再添加一层的全连接层,仅训练最后一个全连接层(因为分类的类别是不同的,如果想用原模型的所有参数,需要再增加一层新的全连接层)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值