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

时间:2017-06-11 07:43:56

标签: neural-network deep-learning caffe conv-neural-network convolution

关注this问题和tutorial我创建了一个简单的网络,就像教程一样,但是有100X100图像和第一个卷积内核11X11和pad = 0。

我知道公式是:(W-F + 2P)/ S + 1 ,在我的情况下尺寸变为[51X51X3](3是rgb的通道)但是数字96弹出我的净图和这个tutorial表示它是输出的第三维,另一方面,我的网在第一次转换后成为[51X51X96]。我无法弄清楚96号的计算方法和原因。

不是网络卷积层假设通过抛出三个颜色通道而输出应该是三个特征映射?为什么它的尺寸会像这样增长?我们每个频道都有一个内核,这不是真的吗?这个内核如何创建96(或在第一个教程中,256或384)功能图?

1 个答案:

答案 0 :(得分:1)

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