卷积层代替全连接层

为什么卷积层可以“代替”全连接层?

  卷积和全连接的区别大致在于:卷积是局部连接,计算局部信息;全连接是全局连接,计算全局信息。(但二者都是采用的点积运算

  但如果卷积核的kernel_size和输入feature mapssize一样,那么相当于该卷积核计算了全部feature maps的信息,则相当于是一个 k e r n e l _ s i z e ∗ 1 kernel\_size*1 kernel_size1的全连接。

  在全连接层上,相当于是 n ∗ m n*m nm其中 n n n是输入的维度, m m m是输出的维度)的全连接,其计算是通过一次导入到内存中计算完成;如果是在最后一个feature maps上展开后进行的全连接,这里若不进行展开,直接使用 o u t p u t _ s i z e output\_size output_size的卷积核代替,则相当于是 n ∗ 1 n*1 n1的全连接(这里的 n n n就是feature maps展开的向量大小,也就是卷积核的大小 k e r n e l _ s i z e ∗ k e r n e l _ s i z e kernel\_size*kernel\_size kernel_sizekernel_size),使用 m m m个卷积核则可以相当于 n ∗ m n*m nm的全连接层。

 但用卷积层代替全连接层的方式,其卷积核的计算是并行的,不需要同时读入内存中,所以使用卷积层的方式代替全连接层可以加开模型的优化。

为什么(在分类网络上)不能直接用卷积层代替全连接层的方式,使得模型处理不同大小的输入?

  因为卷积层的运算是通过卷积核,说到底也就是点积运算,是需要事先设定参数的大小。
  但如果这种操作用于处理不同size的输入,则实际上每次训练时,该层的参数size是不一样的,也就是模型不能得到训练。
  虽然使用卷积层代替全连接层来处理不同大小输入的模型在整个流程上看起来没什么问题,但根本上,该模型是不能得到良好训练的。(从代替的那层卷积层开始,其后的每一层得到的输入分布其实是一直在变化的,所以波动会比较大。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值