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, 开启