第3周学习:ResNet+ResNeXt

part1 论文视频学习:

ResNet网络中的亮点

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

2.提出residual模块

3.使用batch Normalization加速训练

 resnet中两种不同的残差结构:所需要的参数数量差别很大

 shortcut实线和虚线的区别:

虚线使用了一个1*1的卷积核来使输入矩阵的高和宽以及深度产生变化。

使用BN时需要注意的问题

  1. 训练时要将traning参数设置为True,在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。
  2. batch size尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。
  3. 建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间,且卷积层不要使用偏置bias,因为没有用,参考下图推理,即使使用了偏置bias求出的结果也是一样的。

 常见的迁移学习方式:

1.载入权重后训练所有参数
2.载入权重后只训练最后凡层参数
3.载入权重后在原网络基础上再添加一层全连接层,仅训练最后一个全连接层

resnet代码练习

按照如下图所示的网络结构搭建网络

 ResNeXt的亮点结构:

和ResNet相比,ResNeXt在ResNet的基础上改进了block的结构,主干改为了分组卷积,在计算量相同的情况下,ResNeXt的错误率更低。

 为什么group要设置成32?

通过实验测得,分为32个组的时候错误率最低,准确率最高。

resnext代码练习

按照如下图所示的网络结构搭建网络

part2 猫狗大战

lenet实现

载入训练集 

导入库函数

 创建数据集

 进行训练

 输出结果

 

提交结果(正确率70.05%)

ResNet实现

使用34层的网络进行训练,因为样本数量较大,所以只选择了2000张图片进行训练一轮。

 

训练结果显示:一轮训练后正确率高达98.1%

 

 提交结果(正确率97.65%)

本周的思考题:

1、Residual learning

残差学习是用来学习恒等映射的残差的,残差结构将这个问题转换为求解网络的残差映射函数,也就是F(x),其中F(x) = H(x)-x,从而,问题转换成了 H(x) = F(x)+x,改变了学习目标,解决了梯度爆炸问题,也很好的解决了退化问题。


2、Batch Normalization 的原理

Normalization是数据标准化(归一化,规范化),Batch 可以理解为批量,把数据分成小批小批进行 stochastic gradient descent,加起来就是批量标准化, 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理。BN是对每一个通道的输出数据计算均值方差来进行标准化处理的,切记是按通道的。BN的具体算法如下图所示:
3、为什么分组卷积可以提升准确率?即然分组卷积可以提升准确率,同时还能降低计算量,分数数量尽量多不行吗?

  • 分组卷积可以减少参数量。
  • 分组卷积可以看成是稀疏操作,有时可以在较少参数量的情况下获得更好的效果(相当于正则化操作)。
  • 当分组数量等于输入feature map数量时,输出feature map数量也等于输入feature map数量,这时分组卷积就成了Depthwise卷积,可以使参数量进一步缩减。

分组卷积如果组数太多,各通道之间的信息交互太过困难,甚至导致没有交流,导致特征提取效果不好,影响准确率。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值