首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输出体积的大小(卷积神经网络)

输出体积的大小(卷积神经网络)
EN

Stack Overflow用户
提问于 2016-07-27 15:28:46
回答 1查看 3.2K关注 0票数 4

引言

据我从用于视觉识别的CS231n卷积神经网络了解到的是,Size of the output volume表示给定以下参数的神经元数:

  1. 输入体积尺寸(W)
  2. Conv层神经元(F)的接收场大小,即内核或滤波器的大小
  3. 应用(S)或我们用来移动内核的步骤
  4. 边界使用(P)的零填充量

我贴了两个例子。在示例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]的重量。

代码语言:javascript
运行
复制
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参数是否总是等于输入图像中的宽度
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-27 16:58:00

示例1

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

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

示例2

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

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

代码语言:javascript
运行
复制
## height * width * depth
4 * 4 * 4 = 64

问题

  1. 该层有64个神经元,每层16个。
  2. 更多的过滤器,通常更好。
  3. 据我所知,你需要分别计算卷积层的高度和宽度。当计算输出的宽度时,W将是图像的宽度,F将是所使用的滤波器的宽度。在计算高度时,您将使用图像和过滤器的高度。当图像和过滤器被平方时,您可以执行一个操作,因为这两个操作都有相同的结果。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38617320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档