根据我对CS231n Convolutional Neural Networks for Visual Recognition的理解,Size of the output volume
表示给定以下参数的神经元数量:
我发了两个例子。在示例1 中,我完全没有问题。但是,在示例2 中,我感到困惑。
在真实世界示例部分中,他们以[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]
区域(对于该术语进行屠宰)(实际上是我们想要计算点积的内核)。
以下示例取自 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
K = 96
?答案 0 :(得分:2)
示例1
为什么卷积的深度为K = 96?
深度(K)等于卷积层上使用的滤波器数量。较大的数字通常会产生更好的结果。问题是:培训速度慢。复杂的图像需要更多的过滤器。我通常在第一层开始测试32个过滤器,在第二层开始测试64个。
示例2
公式(11-5)/ 2 + 1 = 4只产生4个神经元。
我不是专家,但我认为这是错误的。公式仅定义输出大小(高度和宽度)。卷积层具有大小(高度和宽度)和深度。大小由此公式定义,深度由使用的过滤器数量决定。神经元的总数是:
## height * width * depth
4 * 4 * 4 = 64
<强>问题强>