NET-IN-NET
- 采用net-in-net 结构(不使用传统线性卷积,使用Mlpconv)
- 采用全局均值池化来提高传统CNN 网络中最后全连接层参数过于复杂的特点。(全连接层造成网络泛化能力差,alexnet中使用dropout 来提高)
网络结构: 4层 net-in-net结构+ 全局均值池化层
使用1*1 的卷积核(net-in-net)
self.feed('data')
.conv(11, 11, 96, 4, 4, padding='VALID', name='conv1')
.conv(1, 1, 96, 1, 1, name='cccp1') # 1*1 的卷积核 也称为cross channel pooling
.conv(1, 1, 96, 1, 1, name='cccp2')
.max_pool(3, 3, 2, 2, name='pool1')
NIN 增加了网络的深度,使用aver_pooling 减少了网络的参数
改变网络结构的重要点:
1. 提取更优的特征
2. 加快训练(减少参数)
如果单纯增加网络层数,有更大的model参数,由于模型过复杂会过拟合。
Inception module
不同size 的卷积核能够得到不同cluster的信息,但是各种分支的filters综合,经过多层model的数量将会变得很大。(使用net-in-net 的1*1 的卷积核进行降维,inception module with dimension reduction。
在Googlenet中主要加入了几组inception 模块: