深度学习: Full Connection (全连接层)

2018-09-27 15:53:20 浏览数 (1)

Introduce

  • 全连接层也是一种卷积层。
  • 它的参数基本和卷积层的参数一样,只是它的卷积核大小和原数据大小一致。
  • 起到将学到的“分布式特征表示”映射到样本标记空间的作用。
  • 用 global average pooling 取代 FC,已经成为了大势所趋

Defect

摘自 全连接层的作用是什么:

目前由于全连接层参数冗余(仅全连接层参数就可占整个网络参数80%左右),近期一些性能优异的网络模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代FC来融合学到的深度特征,最后仍用softmax等损失函数作为网络目标函数来指导学习过程。需要指出的是,用GAP替代FC的网络通常有较好的预测性能。

Note:

  • 那么为什么 全连接层参数冗余(仅全连接层参数就可占整个网络参数80%左右) 呢? 因为全连接层的卷积核横截面做得和 输入的 feature map 一样大。而常规卷积层的卷积核横截面只有一个小滑窗那么大。很明显,二者的参数数量级根本就不在一个level上。

Inner Product

在 Caffe 中,全连接层 的 type (层类型)Inner Product 。 输出一个简单向量(把输入数据blobs的width和height全变为1)。

Caffe学习系列(5):其它常用层及参数:

代码语言:javascript复制
layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "pool2"
  top: "ip1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
  • lr_mult: 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr。如果有两个lr_mult, 则第一个表示权值的学习率,第二个表示偏置项的学习率。一般偏置项的学习率是权值学习率的两倍。

必须设置的参数:

  • num_output: 过滤器(filfter)的个数

其它参数:

  • weight_filler: 权值初始化。 默认为“constant”,值全为0,很多时候我们用”xavier”算法来进行初始化,也可以设置为”gaussian”
  • bias_filler: 偏置项的初始化。一般设置为”constant”,值全为0。
  • bias_term: 是否开启偏置项,默认为true, 开启

0 人点赞