常见神经网络特征
VGG16
13层卷积+3层全连接,穿插pooling和relu
其中卷积的kernel均采用3x3
ResNet50
解决问题:网络层次深后,梯度消失,难以训练。
加入残差运算,如下:
由49层卷积和1层全连接
GoogleNet
引入LRN运算,实际效果并不好
ShuffleNet
引入Group Conv,和ShuffleChannel运算
ResNext50
引入cardinality,可以理解为卷积分组后残差,使网络细化。类似multi-head attention
。
MobileNet
使用Group Conv
,乃至Depthwise Conv
,和Pointwise Conv
,替换Conv。是模型参数大幅减少。
V1是在VGG16上修改,V2是在ResNet50上修改。
Pointwise Conv
1x1卷积,kernel为[oc, ic, 1, 1],可以使输入channel从ic转变为oc,既可以降维,又可升维。
一般通过降维,减少后续layer的参数
Group Conv
kernel为[g, oc/g, ic/g, kh, kw],参数量为 oc * ic * kh * kw / g
深度卷积时g = ic = oc,kernel对应为[ic, 1, 1, kh, kw],参数量为 oc * kh * kw
正常卷积核为[oc, ic, kh, kw],参数量为oc * ic * kh * kw
如何减少参数
正常卷积,通过[oc, ic, kh, kw],将输入转化为[n, oc, oh, ow],参数量为oc * ic * kh * kw
;
先1x1卷积[oc, ic, 1, 1],然后深度卷积[oc, 1, 1, kh, kw]可以达到一样的输出,参数量为oc * ic + oc * kh * kw