ResNet精读(2)

FLOPs :整个网络要计算多少个浮点运算

卷积层的浮点运算等价于

输入的高*输入的宽*通道数*输出通道数再乘以卷积核的高和宽再加上全连接的一层

我们发现训练的时候的精度是要比测试精度来的高的在一开始,这是因为训练的时候用了数据增强

使得训练误差相对比较大,而测试的时候并没有做数据增强,噪声比较低

ResNet精读(2)_第1张图片

箭头的含义是学习率的降低 

如果跳太早 后期收敛会无力

晚一点跳比较好

而且 如果有了残差连接 收敛也会相应的快很多

输入输出不一样的时候怎么办

之前 笔记不全

补充第三条

给所有的连接做投影(成本很高 不推荐)带来了 大量的计算复杂度

当设计 更深的网络的时候,会引入一个bottleneck的设计

ResNet精读(2)_第2张图片

 通道数是64的时候进了3*3的

当channel是256的时候 当很深的时候 可以学到东西更多 对应的通道数也就越多

而随之就要面临计算复杂度变高

所以想用1*1的卷积给它reshape回64

在做3*3的通道数不变的卷积

再1*1卷积reshape回256 (先降维,再升维)

这样做 就和之前的复杂度差不多

总结一下 层数变多 直接通道数翻四倍+bottleneck的设计

正是有了残差连接residual connection 存在,当加入的层过多时,当结果趋向于理想了,此时往后加再多的层效果都是不尽人意——>0学不到什么东西了

ResNet精读(2)_第3张图片

 

一篇文章 不要放太多的数据

ResNet精读(2)_第4张图片

当我们的层数变多的时候

相当于嵌套函数 的求导 链式求导法则 就是一个连乘 那自然而然就会变小 

而梯度是在0附近的高斯分布 自然得到的结果也会变较小

加了res结构之后(蓝色部分) 

ResNet精读(2)_第5张图片前面的部分很容易导致梯度消失

但是这个蓝色的额外部分的浅层网络 会上为大一些  就可以训练的动了

这个是训练的收敛比较快的原因

sgd不叫收敛 叫做 训练不动了 嘿嘿 有点尴尬

SGD的精髓就是梯度够大 能一直跑下去

所以加了之后 梯度还是可以的 可以符合sgd 的精髓 能一直跑效果不错哦哦

现如今的transform 参数那么多 层数那么深

为什么不过拟合嘞 很有意思哈哈

表面上加了残差之后 结构复杂了

但从本质结构上看 模型的复杂度其实降低了的

模型复杂度降低: 你能找到一个很低的不那么复杂的模型去拟合你的数据

residual 在标号上做 ————叫什么 gradient boosting

而这里 residual是在feature 维度上做

你可能感兴趣的:(深度学习,神经网络,cnn,计算机视觉,学习)