ResNet的学习笔记~

13 篇文章 0 订阅
5 篇文章 0 订阅

1 前言

今天在学习ResNet~
一直在学习和研究ResNet,不过有些东西一直没有弄懂,觉得还是需要通过实验来验证一下,
今天在学习CS231n时,Yang助教又讲到ResNet,这里我们再来复习和梳理一下ResNet的创作思想~
首先,ResNet解决了一个什么样的问题呢?

2 恒等映射的问题

根据Yang助教的说法,ResNet想要解决的问题是“恒等映射的问题”,
也就是,CNN网络无法拟合恒等映射;

具体来说,就是:何教授认为,“conv+relu+conv”的三层结构无法拟合恒等映射,也就是,函数映射: f ( x ) : y = x f(x): \boldsymbol y =\boldsymbol x f(x):y=x
(这里的我们将应变量和自变量都用函数表示,因为从广义看来,机器学习中所拟合的所有映射,最终都可以认为是两个列向量之间的函数映射)
那么实际情况是这样吗?
我们可以跟随吴教授在机器学习中的学习次序,来一一进行分析,
我们在 Machine Leanring课程中,依次学习的机器学习算法分别为:线性回归、逻辑回归和神经网络(NN网络)算法,其中,CNN网络可以看做NN网络的一种简化网络。
首先,我们来看看线性回归
对于线性回归来说,其模型的函数映射为: y = W x + b \boldsymbol y =\boldsymbol W \boldsymbol x+b y=Wx+b
可以看到,线性回归是可以拟合恒等映射的,
W \boldsymbol W W为单位矩阵, b = 0 b=0 b=0时,则有 y = W x + b = x \boldsymbol y =\boldsymbol W \boldsymbol x+b=\boldsymbol x y=Wx+b=x,即实现了恒等映射;
我们再来看看逻辑回归

3 PyTorch代码阅读笔记

4 PaddleDetection代码阅读笔记

PaddleDetection中resnet的实现链接PaddleDetection–resnet.py

4.1 Module备注

_conv_norm—也就是conv+norm+relu
这里的_conv_norm也就是“conv+norm+relu”三者的合并;

4 备注

4.1 50层以上的ResNet和50层以下ResNet在实现上有什么区别?

50层以上的ResNet,例如:ResNet-101,使用了Bottleneck的结构,它会使得层数增加4倍,具体来说,就是输出的特征图的channel数是输入特征图channel的4倍,(而一般的Block输入输出的层数相同),
在PyTorch官方实现中,用 expansion = 4表示这个;
inplanes是输入的维度,对应Conv2d()in_channels参数;
planes是输出维度,对应BatchNorm2dnum_features参数;

4.2 为什么PyTorch官方实现时,conv函数的 bias = False?

因为PyTorch的官方实现在卷积层后面加入了BN的操作,BN技术中会为参数的分布添加偏置参数,所以就不需要使用conv的bias参数了;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值