输出音量大小(卷积神经网络)

时间:2016-07-27 15:28:47

标签: neural-network conv-neural-network

简介

根据我对CS231n Convolutional Neural Networks for Visual Recognition的理解,Size of the output volume表示给定以下参数的神经元数量:

  1. 输入音量(W)
  2. Conv Layer神经元的感受野大小(F),这是内核或过滤器的大小
  3. 应用它们的步伐(S)或我们用来移动内核的步骤
  4. 边框上使用(P)的零填充量
  5. 我发了两个例子。在示例1 中,我完全没有问题。但是,在示例2 中,我感到困惑。

    示例1

    真实世界示例部分中,他们以[227 x 227 x 3]输入图片开头。参数如下:F = 11, S = 4, P = 0, W = 227

    我们注意到卷积的深度为K = 96。的(为什么?)

    output volume的尺寸为(227 - 11)/4 + 1 = 55。因此,我们将55 x 55 x 96 = 290,400个神经元指向图像中的[11 x 11 x 3]区域(对于该术语进行屠宰)(实际上是我们想要计算点积的内核)。

    示例2

    以下示例取自 Numpy示例部分。我们有一个具有以下形状[11 x 11 x 3]的输入图像。用于计算输出卷大小的参数如下:W = 11, P = 0, S = 2 and F = 5

    我们注意到卷积的深度为K = 4

    公式(11-5)/2+1 = 4仅产生4个神经元。每个神经元指向图像中大小为[5 x 5 x 4]的区域。

    似乎他们只是在x方向上移动内核。我们不应该有12个神经元,每个神经元都有[5 x 5 x 4]个权重。

    V[0,0,0] = np.sum(X[:5,:5,:]   * W0) + b0
    V[1,0,0] = np.sum(X[2:7,:5,:]  * W0) + b0
    V[2,0,0] = np.sum(X[4:9,:5,:]  * W0) + b0
    V[3,0,0] = np.sum(X[6:11,:5,:] * W0) + b0
    

    问题

    • 我真的不明白为什么只使用 4 神经元,而不是 12
    • 他们为什么选择示例1中的K = 96
    • 是W参数始终等于输入图像中的宽度

1 个答案:

答案 0 :(得分:2)

示例1

为什么卷积的深度为K = 96?

深度(K)等于卷积层上使用的滤波器数量。较大的数字通常会产生更好的结果。问题是:培训速度慢。复杂的图像需要更多的过滤器。我通常在第一层开始测试32个过滤器,在第二层开始测试64个。

示例2

公式(11-5)/ 2 + 1 = 4只产生4个神经元。

我不是专家,但我认为这是错误的。公式仅定义输出大小(高度和宽度)。卷积层具有大小(高度和宽度)和深度。大小由此公式定义,深度由使用的过滤器数量决定。神经元的总数是:

## height * width * depth
4 * 4 * 4 = 64

<强>问题

  1. 该层有64个神经元,每个深度切片16个。
  2. 过滤器的数量通常更多。
  3. 据我所知,你需要分别计算卷积层的高度和宽度。计算输出宽度时 W 将是图像的宽度, F 将是所用滤镜的宽度。计算高度时,您将使用图像和滤镜的高度。当图像和滤波器被平方时,您可以执行单个操作,因为两个操作都将具有相同的结果。