如何设计卷积神经网络CNN?

卷积神经网络CNN的设计

eras为例来说明。我们可以用5步 + 4种基本元素 + 9种基本层结构,这5-4-9模型来总结。这个博客特别适合小白入门简单粗暴地建立一个网络

知乎——CNN 网络应该如何设计?

回答1:网络多一层和少一层, 好像没什么区别. 但这样一层层测试调参未免太狗血了.一种挺好的方法是:
设计一种或几种block(这block由几层网络构成), 然后堆这种block.
这样看起来舒服多了,参考resnet网络结构(其实很多优秀网络都是这样的设计)至于每层的通道数, VGG有个设定是: 输出的feature
map大小相同时,卷积核个数也相同输出的feature map大小减半(被stride=2的卷积或Pooling后),
则卷积核数翻倍.这样让每层的时间花销相同.而通道数的大小如何确定? 基于对应数据集, 参考其他优秀模型的设置. 记得对比网络参数大小 .

回答2:建议在pre-trained model 基础之上进行改进。

回答3:我的经验是,要知道什么样的结构对具体任务有作用,最有效的办法就是去做对比实验,从而体会不同结构对网络性能的影响(参数量/计算量/训练稳定性/最终精度)。例如想找到kernel_size的最优值,只能通过控制变量,对比实验。

回答4:流程:

  1. 找baseline先找一个前人的基础网络结构,作为你设计的基础。可以是resnet,densenet,Alexnet这种非常经典的,且训练过程已经被大家复现过的。
  2. 调训练超参训练超参指的是: learning_rate, num_epoch, weight_decay, momentum还有learning_rate的下降方式以及其涉及到的所以超参等等。个人体会是,weight_decay 影响比较大,相对独立,也调起来也相对容易些,可以先调;learning_rate以及它的下降方法影响也比较大,但是这里相互关联的量很多,调起来比较费时费力;还有num_epoch,这个量也比较关键,调num_epoch的时候基本都得等到训练结束看结果,不太好像调其他参数那样,看情况不好就提前终止。
  3. 调结构在当前基础上找到一组合理的超参之后,就可以把这组超参固定,之后就可以进入到题主所想研究的调整结构了。这里可以调的东西很多,对于初学者来说,如果想了解网络中的每一层对结构的作用,其实可以逐
  • 7
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值