特征融合方式:concat和add

特征融合方式:concat和add

1.  如何理解concat和add:

       实际上add与concat都可以理解为用于整合特征图信息,ResNet/FPN等网络结构逐元素做值的叠加而通道数是不变的,采用的add方式来融合特征;而DenseNet等网络结构则做通道的合并,采用concat方式来融合特征。

       concat方式经常用于将特征联合、多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合;而add层更像是信息之间的叠加。

       可以理解为,add方式在维度不变的情况下使描述图像的特征每一维下的信息量增多,显然对最终的图像的分类是有益的;而concat是通道数的合并,也就是描述图像的特征维度增加,而每一维度特征下的信息量不变。

       当两路输入通道的特征图语义类似时,可以用add来替代concat,这样更节省参数和计算量。

 

2.如何理解神经网络中通过add的方式融合特征:

       知乎问答地址:https://www.zhihu.com/question/306213462/answer/564146773

 

3.concat举例:

       concat层的作用就是将两个及以上的特征图按照在channel或num维度上进行拼接,选择axis=0,表示在num维度上进行拼接,可表示为:(k1+k2)*C*H*W;选择axis=1,表示在channel维度上进行拼接,可表示为:N*(k1+k2)*H*W。

       concat层多用于利用不同尺度特征图的语义信息,以增加通道数的方式实现较好的性能,但往往应该在BN层之后使用concat才会发挥它的作用;而在num维度的拼接较多使用在多任务问题上。

import torch
 
a = torch.ones([1, 2])
b = torch.ones([1, 2])
c = torch.cat([a, b], 1)
 
print(c)
print(c.type)

 

4.add实例:

x = torch.rand(5, 3)
y = torch.rand(5, 3)
 
print(x)
print(y)
 
#method 1
print(x + y)
#method 2
print(torch.add(x, y))

 

  • 9
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值