在caffe里搭建网络时,当两个通道连接到一块时,经常会遇到Eltwise层和Concat层,这两层有什么区别和联系呢
一、Concat层
Concat层的作用就是将两个及以上的特征图按照在channel或num维度上进行拼接,并没有eltwise层的运算操作,举个例子,如果说是在channel维度上进行拼接conv_9和deconv_9的话,首先除了channel维度可以不一样,其余维度必须一致(也就是num、H、W一致),这时候所做的操作仅仅是conv_9 的channel k1加上deconv_9的channel k2,Concat 层输出的blob可表示为:N*(k1+k2)*H*W。通常情况下,考虑到Concat是希望将同大小的特征图拼接起来,那为什么会产生同大小的特征图呢?显然离不开上采样和下采样的操作,接下来,以Caffe为例,介绍一下这两种拼接的方式,如下:
-
选择axis=0,表示在num维度上进行拼接,可表示为:(k1+k2)*C*H*W;
-
选择axis=1,表示在channel维度上进行拼接,可表示为:N*(k1+k2)*H*W。
二、Eltwise层
Eltwise层的操作有三个:product(点乘), sum(相加减) 和 max(取大值),其中sum是默认操