大家好,又见面了,我是你们的朋友全栈君。
Q1:每当看到一个新的网络,总会思考,这个网络提出来有什么意义,解决了什么问题?
Resnet18中的resnet就时网络结构呗,18应该是权重层的数量(参照VGG16的命名方法,应该时这样理解)。
Q2:为什么会出现Resnet18的结构?串联结构的VGG不行吗?不用16,用56行不行?
答:
(1) 随着网络越来越深,训练变得原来越难,网络的优化变得越来越难。理论上,越深的网络,效果应该更好;但实际上,由于训练难度,过深的网络会产生退化问题,效果反而不如相对较浅的网络(随着层数的增多,训练集上的效果变差,这被称为退化问题)
(2) 随着网络越来越深,当堆叠到一定网络深度时,就会出现梯度消失或梯度爆炸问题
所以说也不是不能用56,但是没必要,可能串联起来的效果还不好,那就不用了。
那我就是想要更深的网络结构,怎么办(你这是在为难我胖虎)?何恺明大神来帮你解决!!!
残差网络是由一系列残差块组成的。一个残差块可以用下图表示,输入通过多次卷积,然后与输入相加
图片截取(https://blog.csdn.net/weixin_36979214/article/details/108879684?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162374909216780265420718%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162374909216780265420718&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-108879684.first_rank_v2_pc_rank_v29&utm_term=pytorch+resnet18&spm=1018.2226.3001.4187)
看看卷积层有17个,FC层1个,所以是18。要计算输入可输出尺寸可以看图片,不清楚计算公式可以参考https://blog.csdn.net/weixin_43999691/article/details/117565500?spm=1001.2014.3001.5501
注意点:
(1)这里有虚线和实线,代表什么呢?实线表示残差块中的通道数没有变化,虚线表示通道数变化,例如64->128。
(2)那通道数变化了怎么办?通过1*1卷积调整一下通道数,然后将步长调整成2就行了呀。
大神提出的东西就是这么朴实,不像有些学者,讲一大堆理论,说名词,还说不清楚(小小吐槽一下)。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141431.html原文链接:https://javaforall.cn
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!本文分享自作者个人站点/博客:https://javaforall.cn复制如有侵权,请联系 本站 删除。