GoogleNet

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 模块:

原文地址:https://www.cnblogs.com/fanhaha/p/7646457.html