分类中用全连接层fc还是用1*1的卷积?

分类算法的使用很普遍,除了更换backbone,常常会涉及到是否将fc层替换为1*1的卷积?此时就会想到怎样实施更换?更换后会有哪些收益,下面我就从自身的使用经验来进行分析。

第一个问题:怎样使用1*1 conv更换fc层?

主要涉及到以下几个问题:

  • 卷积(conv)输出尺寸的计算?

O=输出图像的尺寸。

I=输入图像的尺寸。

K=卷积层的核尺寸

N=核数量

S=移动步长

P =填充数

输出图像尺寸的计算公式如下:

O=\frac{I-K+2P}{S}+1

如:输入图像的尺寸为227*227*3.卷积层有16个尺寸为3*3的核。步长为4,填充为0.

O=\frac{227-3+2*0}{4}+1

  • 全连接层(fc)输出尺寸的计算?

全连接层输出向量长度等于神经元的数量。

如:

self.fc_card = nn.Linear(512, 9) 

输入为512,输出大小为9;

  • 1*1卷积和全连接的参数量计算?

参考链接:CNN中的几个概念(全连接,卷积,线性,全卷积)理解 - 知乎

总结:卷积层的参数量会比fc层所使用的参数量少;

第二个问题:1*1conv和fc层在分类中的作用,各有什么优缺点?

  • fc层在分类中的作用?

将前一层的输出通过加权隐射到label上去,可以查看如下图:

上图中,4096为全连接层前一层的输出,通过fc层的作用(w),将4096个特征隐射到分类结果上(10个类别); 

  • 1*1conv常规功能有哪些?

参考链接:fc全连接层的作用、卷积层的作用、pooling层、激活函数的作用 - 有梦就要去实现他 - 博客园

总结:1*1的卷积可以用于降维(减少通道数),升维(增加通道数),代替fc成为一个分类器

  • 1*1conv在替换掉fc层后对模型有什么影响?

优点:权值共享,参数量较同等功能的fc层相比少,使用了位置信息;fc层对于训练样本要求统一尺寸,但是1*1的卷积不会受该规定的限制;

参考链接:

1.(原)CNN中的卷积、1x1卷积及在pytorch中的验证 - darkknightzh - 博客园

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫猫与橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值