卷积神经网络中的聚合和串联有什么区别?

What are the differences between aggregation and concatenation in convolutional neural networks?

当我阅读一些关于 CNN 的经典论文时,如 Inception 系列、ResNet、VGGnet 等,我注意到术语 concatenationsummation聚合,这让我很困惑(求和对我来说很容易理解)。有人能告诉我它们之间有什么区别吗?也许更具体一点,比如用例子来说明维度和表示能力的差异。

  • 连接通常包括从不同网络层获取2个或更多输出张量并沿通道维度连接它们
  • 聚合 包括从不同网络层获取 2 个或更多输出张量,并对它们应用选定的多元函数来聚合结果
  • Summation 是聚合的特例,其中函数是 sum

这意味着我们通过聚合丢失了信息。另一方面,连接可以以更大的内存使用量为代价保留信息。

例如在 PyTorch 中:

import torch

batch_size = 8
num_channels = 3
h, w = 512, 512
t1 = torch.rand(batch_size, num_channels, h, w) # A tensor with shape [8, 3, 512, 512]
t2 = torch.rand(batch_size, num_channels, h, w) # A tensor with shape [8, 3, 512, 512]

torch.cat((t1, t2), dim=1) # A tensor with shape [8, 6, 512, 512]
t1 + t2 # A tensor with shape [8, 3, 512, 512]