如何计算caffe convnet的第三个元素?

How to calculate third element of caffe convnet?

question and this tutorial 之后,我创建了一个简单的网络,就像教程一样,但具有 100X100 图像和 11X11 的第一个卷积核和 pad=0。

我知道公式是:(W−F+2P)/S+1 在我的例子中维度变成了 [51X51X3](3 是 rgb 的通道)但是我的网络图中的数字 96 弹出窗口,因为这个 tutorial 表示它是输出的第三维,另一方面,我的网络在第一次转换后变成了 [51X51X96]。我想不通,数字 96 是如何计算的,为什么。

网络卷积层不是应该通过throw throw three color channel并且输出应该是三个feature map吗?它的维度怎么会长成这样?我们不是每个频道都有一个内核吗?这个内核如何创建 96(或在第一个教程中,256 或 384)特征图?

您正在混合输入通道和输出通道。
您的输入图像具有三个通道:R、G 和 B。您的转换层中的每个过滤器都作用于这三个通道及其空间内核大小(例如,3×3)。每个过滤器在每个空间位置输出一个 单个 数字。因此,如果您的图层中有一个过滤器,那么您的输出将只有一个输出通道 (!)
通常,您希望在每一层计算多个过滤器,这就是 num_output 参数在 convolution_param 中的用途:它允许您定义在特定的卷积中将训练多少个过滤器层.
因此一个Conv层

layer {
  type: "Convolution"
  name: "my_conv"
  bottom: "x"  # shape 3-by-100-by-100
  top: "y"
  convolution_param {
    num_output: 32  # number of filters = number of output channels
    kernel_size: 3
  }
}

将输出 "y",形状为 32-by-98-by-98.