深度学习之concatenate和elementwise操作(二)

本文详细介绍了深度学习中element-wise相加、相乘以及concatenate操作的差异和应用场景。相加常用于信息融合,相乘则可能涉及权重分配,concatenate用于通道合并,增加特征维度。点积作为门控操作可能损失性能,而拼接和加法能保留更多信息。在实际应用中,选择哪种操作取决于特征间的关系和计算效率。特征图的连接方式如add和concatenate各有优劣,add节省计算量,concatenate保留更多原始信息。实验表明,max池化通常优于平均池化和concatenate。

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

一、深度学习里面的element-wise特征相乘和相加到底有什么区别?

很多深度学习模型在设计时,中间特征在分支处理后,然后可能会采用element-wise相乘或相加,不知道这个乘和加的细微区别?

答:相加的两个tensor通常都是具有特征意义的tensor,相乘的话,一般来说,其中一个tensor是有类似权重的含义,而不是特征意义。

二、concatenation operation

向量之间的拼接

代码例子如下:

import numpy as np
 
a = np.array([[1, 2], [3, 4]])
print(a.shape)
 
 
b = np.array([[5, 6]])
print(b.shape)
 
np.concatenate((a, b))
 
c= np.concatenate((a, b))
print(c)
 
print(c.shape)
 
Out[1]: (2, 2)
Out[2]: (1, 2)
Out[3]: 
array([[1, 2],
       [3, 4],
       [5, 6]])
Out[4]: (3, 2)

三、Dot Product

向量点积

在这里插入图片描述

import numpy as np

np1 = np.array([4, 6])
np2 = np.array([[-3], [7]])
print(np.dot(np1, np2)


##  [30]
# 4*-3 + 6*7 = 42*12 = 30

四、element-wise product

element-wise product实际上是两个同样维度的向量/矩阵每一个元素分别相乘

这个可以参见:我的另一篇文章

import numpy as np

np1 = np.array([4, 6])
np2 = np.array([-3, 7])
print(np2 * np1)

# [-12  42]


import numpy as np

np1 = np.array([4, 6])
print(np1 * 3)

# [12 18]



 

五、DL中,何时用concatenate/elementwise乘法/elementwise加法呢?

深度学习中,信息相互融合的时候,什么时候用concatenate,什么时候用elementwise乘法呢,什么时候又用elementwise加法呢?

答:

点乘其实是gate的形式 可能会损失性能。concatenate则是简单拼接,要网络自己学习变换。

实际过程中可能只能试。

六、feature map的几种连接形式

(1)concatenate:通道合并,每个通道对应着对应的卷积

(2)element-wise addition(计算量比(1)小):将对应的特征图相加,然后卷积。对应通道的特征图语义类似,对应的特征图共享一个卷积核。

对比:

add方式:add的特征结合方式使得描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加,这显然是对最终的图像的分类是有益的。

concatenate方式:该方式是通道数的合并,也就是说描述图像本身的特征数(通道数)增加了,而每一特征下的信息是没有增加的。

在这里插入图片描述

 在这里插入图片描述

 

显然,concatenate的计算量 > add的计算量

另:还有element-wise max和element-wise average方式
实验结果:max>avg>concate

七、总结

通过add操作会得到新的特征,这个新的特征可以反映原始特征的一些特性,但是原始特征的一些信息也会由于add方式造成损失,但是concatenate就是将原始特征直接拼接,让网络去学习应该如何融合特征,这个过程中信息不会损失。

concat带来的计算量较大,在明确原始特征的关系可以使用add操作融合的话,使用add操作可以节省计算代价!

参考:

深度学习中---merger层、concatenate层、add层的区别_夜幕下的光123的博客-优快云博客_concatenate层

Pytorch教程(十五):element-wise、Broadcasting_vincent_duan的博客-优快云博客_element-wise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

曙光_deeplove

你的鼓励是我努力的最大源泉

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

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

打赏作者

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

抵扣说明:

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

余额充值