卷积神经网络 激活层设计_如何设计卷积神经网络CNN?

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. 调结构在当前基础上找到一组合理的超参之后,就可以把这组超参固定,之后就可以进入到题主所想研究的调整结构了。这里可以调的东西很多,对于初学者来说,如果想了解网络中的每一层对结构的作用,其实可以逐层修改网络的结构。从而体会不同的layer_type和kernel_size等的影响。

  4. 再调训练超参因为其实不同的网络结构对应的最优训练超参不是一样的。这一套流程走下来,就算是对于训练参数量在在10M以下的模型,CIFAR10分类来说,也需要很多卡很多天啦。所以设计网络结构还真是一件非常费事费力的事情。

如何设计CNN网络架构资料汇总

在inception和resnet网络提出并相对完善以后,网络结构的设计就不再爆发式出现了,这两大类网路涵盖了大部分应用的卷积网络结构。

!很有用——基于CNN的图形分类综合设计指南

对于大多数应用来说,应该使用迁移学习而不是从头训练网络。但是,你需要抉择保留哪些网络层,以及重新训练哪些层。这取决于你的数据是什么样的。你的数据与预训练的网络(通常在ImageNet上预训练)的数据越相似,你应该重新训练的层数越少,反之亦然。例如,你想分类图片中是否包含葡萄,所以你有一堆有葡萄的和一堆没有的图像。这些图像与ImageNet中的图像非常相似,因此你只需重新训练最后几层,也许就是全连接层。然而,如果你想对拍摄于外太空的图片,分类是否包含行星,那么这样的数据与ImageNet的数据有很大不同,所以你需要重新训练低层的卷积层。简而言之,遵循以下规则:

cfa9edaaa2c11f632e8a85526f4dc0fc.png

如何设计卷积神经网络

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

fb3a04a1fb3788806a1cb4d0565c39ef.png

怎样设计最优的卷积神经网络内容总结:

1.提升CNN表现的操作:增加图片分辨率,增加网络宽度,增加网络深度,增加跳过连接(密集块或残差块)2.NAS神经架构搜索+随机连接神经网络:探索新的网络架构和神经元连接方式(这个太远了不需要做)

改进CNN的14个设计模式

1.泛化能力:是很重要的一个模型评价标准。提升泛化能力:使用正则化手段例如dropout。2.summation ,下采样,maxout+ELUS,freeze-drop-path,循环学习率,bootstrapping

设计CNN

part one 网络深度的设计:网络深度增加作用:非线性表达能力提升。1.评估深度对模型性能的影响:层数越多线性区间越多,更好地拟合。实验表明,错误率降低。2.如何选择网络深度?根据一些工业界相关工作者的经验:从5——8层开始试验。imagenet 比赛中,2^5*7=224。一般不超过10层就能满足工业界的一些要求。3.深度实验:一个复杂数据集vs一个简单数据集,20分类。一个性能简单的网络vs一个高性能网络。网络1:ALLCONV网络 5-7层conv+1层全连接网络2:MobileNet10-16层

18bdf8cb7f40f9465b4d0a13b3b197a2.png

0f6f4effbef23a456e1b168dfe6b063e.png

图中看出增加卷积层(从5到7个卷积层)会提升准确率,但是7层再增加就出现了瓶颈。MobileNet出现差不多的结果,从10层增加到16层时出现瓶颈。4.网络深度增加带来的问题:过拟合,难以优化,PLD,PLS等。解决方案:跳层连接等。

part two 网络宽度的设计:网络宽度指的是每层卷积中滤波器filters(卷积核)的数量,例如VGG16网络第一层的filter数量就是64个,第一个卷积层的网络宽度就是64 ,第三个就是128,第五个就是256…为什么会增加卷积核的个数:“随着网络的加深,feathermap的长宽尺寸会变小,也就是卷积提取的特征越具有代表性,所以后面的卷积层数需要增加,所以卷积核的个数也是要增加的,一般是成倍增加(有的会更根据实验的情况来具体设置)。”1.网络宽度下降,性能会下降。更多的通道数可以学到更多的特征。所以要适当增加模型宽度。加宽比加深更能提升性能。但计算量提升也很快。2.如何初始化CNN网络宽度?答:高效率模型第一层宽度为32足够。(根据经典网络结构和工作经验得出的结论)3.优化:1*1卷积,分组卷积,跨层连接。

part three 提升模型泛化能力:正则化技术——DROPOUT and BN层的设计1.类似技术:dropconnect,maxout,stochastic pooling2.训练开dropout,预测时关闭?:不一定要关,大部分时候关掉可以提升准确率。3.dropout 相当于增加了噪声,造成梯度的损失,训练时间更久才能收敛。要采用更大的学习率和momentum ,加快收敛。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值