zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

卷积神经网络中1*1卷积相关的网络结构

神经网络 相关 卷积 网络结构
2023-09-27 14:20:14 时间

目录

1,瓶颈结构

1)什么是瓶颈结构

2)将瓶颈结构替换到其他网络结构中的性能

2,SqueezeNet 网络结构

1)Fire Module结构

2)SqueezeNet 网络结构


1,瓶颈结构

1)什么是瓶颈结构

      瓶颈结构就是两头宽,中间窄的网络结构,先降维然后升为维;瓶颈结构不仅增加了网络的深度同时还有效的减少了网络的参数;

 比较经典的应用:ResNet 

左边的计算如下:
w*h*256*3*3*256 =589824*w*h
右边的计算如下:
w*h*256*1*1*64 + w*h*64*3*3*64 +w*h*64*1*1*256 = 69632*w*h
结果相差大概8.5倍。 

在移动端部署,模型的大小很受限,这个技术可以不损害模型的精度降低模型的参数;

2)将瓶颈结构替换到其他网络结构中的性能

在有三的书中,将基准模型的Allconv6_baseline(5个卷积层和1个全连接层)中的五个卷积层从第二个卷积层开始全部替换成瓶颈模型。

Allconv6_baseline卷积层conv1conv2conv3conv4conv5
通道数163264128256
瓶颈模型替换层替换替换替换替换

具体的替换方法,可以参考有三的《深度学习之模型设计》第五章的内容,最终通过替换后的实验证明,将卷积层替换为瓶颈层后,性能比Allconv6_baseline略有提升,但是关键的是模型的参数量减少的是非常多的。这样说明针对普通的卷积网络结构来说,采用瓶颈结构设计的网络结构表现更加优秀。

2,SqueezeNet 网络结构

SqueezeNet主要采用的是fire module模块组成。

1)Fire Module结构

Fire Module是由一个Squeeze(全部由1*1卷积组成)和Expand(由1*1卷积和3*3卷积组成)模块组成,且Squeeze的通道数小于Expand通道数,从而实现参数的压缩;

参数分析:

输入M个通道,输出N个通道。直接使用3*3的卷积,参数为M*N*3*3;

如果使用上图的结构参数为:M*1*1*3+3*N/2*1*1+3*N/2*3*3;

比例关系K=(3M+15N)/9MN=1/(3N)+5/(3M),所以当M和N很大的时候,可以实现很大的压缩比

该模块的可调参数为:S1,e1,e3

总结
1)Fire module由两层构成,分别是squeeze层和expand层,如上面的图所示,squeeze层是由s1个1x1卷积核组成的,expand层由e1个1x1的卷积核和e3个3x3的卷积核组成的,得到的feature map进行concat。对应策略1
2)一般令s1 < e1 + e3, 这样可以限制输入到3x3卷积核的channels。对于策略2
 

2)SqueezeNet 网络结构

SqueezeNet是一种轻量化网络结构

1.相同准确率下,更少参数量的模型有几点好处:
1)更加高效的分布式训练
2)向客户端提供新模型的开销更小
3)FPGA和嵌入式设备部署更便利

2.网络结构的设计策略
1)使用1x1的卷积核代替3x3的卷积核,可以减少9倍参数
2)减少输入3x3卷积的特征图的数量,因为参数由NCHW决定。
3)延后下采样,使得卷积层有较大的activtion maps。较大的特征图会带来较高的准确率。

其它细节:
在3x3的输入特征图上加了1像素的zero-padding,使其与1x1的输出大小一致
squeeze和expand层后跟ReLU激活函数
fire9后加0.5的Dropout
没有FC层(可以较少大量参数)

 SqueezeNet小结:
1)Fire module与GoogLeNet思想类似,采用1x1卷积对feature map的维数进行[压缩],从而达到减少权值参数的目的;
2)采用与VGG类似的思想–堆叠的使用卷积,这里堆叠使用的是Fire module。