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

网络中的亮点:

  • 超深的网络结构(突破1000层):之前也就十几层
  • 提出residual模块

1.如果简单将卷积层和池化层简单的叠加:

(iteration迭代次数)
在这里插入图片描述
原因:

  1. 梯度消失,梯度爆炸。 如何解决:数据标准化,权重初始化,batch normalization
  2. 退化问题(degradation problem)即:层数越深,错误率反而越大 如何解决:残差结构

下图是ResNet搭建的,实线为验证集的错误率,虚线是训练集的错误率。
可见层数越深,错误率越小,确实解决了degradation problem
在这里插入图片描述

提出residual模块

下面是两种残差结构:
看下面注释:左边适合ResNet-34。,右边适合 ResNet-50/101/152.
在这里插入图片描述

  1. 主分支上经过一系列操作得到的结果和输入特征矩阵相加后再用relu。
  2. 注意:主分支和shortcut的输出特征矩阵shape[C,H,W]必须相同
  3. 右边:1*1的卷积核用来降维和升维。
  4. 左边参数比右边参数多。

在这里插入图片描述
实线和虚线残差结构有什么不同:
是为了保证 从conv2_x 过渡 到 conv3_x(以及后面)
主分支和shortcut的输出特征矩阵shape[C,H,W]必须相同
18和34层的残差结构:
在这里插入图片描述
50和101和152层的残差结构:
在这里插入图片描述

batch normalization

参考文章
**目的:**使我们的一批(batch)feature map满足均值为0,方差为1的分布规律。

对于conv1的输入满足某一分布的特征矩阵,但对于conv2而言输入的feature map就不一定满足某一分布规律了。
在这里插入图片描述
原参数-均值后再除以方差
在这里插入图片描述
看一个例子:
在这里插入图片描述

注意:

  1. 训练的时候将training设为True,验证的时候设为False。在pytorch中可以通过model.train()和model.eval()方法控制
  2. batch_size尽可能大一点。设置越大越接近整个训练集的均值和方差。
  3. 建议bn层放在卷积层(conv)和激活层(relu)中间,且卷积层不要用偏置bias。
  4. 在这里插入图片描述

迁移学习

优势:

  1. 能快速训练出一个理想的结果(可能2个epoch就能训练出理想结果)
  2. 当数据集较小时也能训练出理想效果。
    注意:如果使用别人预训练模型参数时,要注意别人的预处理方式。要用和别人一样的预处理方法。
    在这里插入图片描述
    conv1等浅层网络的信息是比较通用的,就可以迁移学习了。
    常见迁移学习方式
  3. 载入权重后训练所有参数(如果最后分类类别不一样,最后一层参数无法载入)
  4. 载入权重后只训练最后几层参数
  5. 载入权重后在原网络基础上再添加一层全连接层,仅训练最后一个全连接层。

学到了什么:

1。import torchvision.models.resnet 再点resnet即可跳到pytorch官方实现的源码
里面有预训练权重可以下载
在这里插入图片描述

2https://download.pytorch.org/models/resnet34-b627a593.pth权重链接直接复制到网址上就可以下载,也可以复制到迅雷(因为很多资源迅雷已经存到它自己的服务器上了)
3.train.py在预处理的时候,要采用与人家预处理的方式一样。迁移学习

在这里插入图片描述
4train.py(迁移学习,如果不使用的话resnet34()直接传参数即可)载入预训练权重后,更改分类数目为5
在这里插入图片描述
注意:修改网络最后一层非线性后,再net.to(device)要不然就会报类似有的变量在gpu,有的在cpu。
5. 在colab上,假的gpu是吧,一轮7min,不过准确率还挺高。在这里插入图片描述5.关于predict.py,要与训练方法一样的标准化处理,准确来说是和val验证集方式一样。

在这里插入图片描述
6. 可以看到预测是tulips概率已经高达0.99在这里插入图片描述
8. 还有个坑以后填:批量预测

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值