【深度学习】全连接层 (Full Connection,FC)

本文介绍了全连接层的工作原理及其在深度学习模型中的作用,并探讨了其存在的问题,特别是参数冗余的问题。此外,还介绍了如何使用全局平均池化(GAP)来替代全连接层,以提高模型效率并保持良好的预测性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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):其它常用层及参数

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

Note

  • slim.fully_connected 无法显示最终结果为1X1,而更像是降维,所以必须要先reshape到一个 [batch_size, -1] 的尺寸:
    x = tf.reshape(x, [input_shape[0], -1])
    _pred = slim.fully_connected(x, num_outputs=output_num, activation_fn=None, scope='fc_final')
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值