【问题标题】:How a filter in convolutional neural network can generate multiple channels?卷积神经网络中的过滤器如何生成多个通道?
【发布时间】:2017-07-15 23:29:52
【问题描述】:

我正在使用 Tensorflow 学习卷积神经网络。

我对@9​​87654321@ 有一些疑问。它的参数之一是filter

形状为 [filter_height, filter_width, in_channels, out_channels] 的过滤器/内核张量

我不明白out_channels是什么意思。

假设输入图像是[1, 3, 3, 1]。所以大小是3xx,通道是1。
然后我们有一个过滤器[2, 2, 1, 5],这意味着过滤后,我们将有一个大小为 2x2(“有效”填充)的图像,具有 5 个通道。

这 5 个频道来自哪里?据我了解,过滤只能生成 1 个通道。 Tensorflow 在这里使用了 5 种不同的过滤器函数吗?

【问题讨论】:

  • 不重复。我在问不同的问题。这是该线程的评论:关于此:“这仍然给出 5x5 输出图像,但有 7 个通道(尺寸 1x5x5x7)。每个通道由集合中的一个过滤器产生。” ,我仍然很难理解这 7 个频道是从哪里来的?你是什​​么意思“集合中的过滤器”?谢谢

标签: machine-learning tensorflow


【解决方案1】:

tf.nn.conv2d 函数的 filter 参数,正如您所引用的,是维度为 [filter_height, filter_width, in_channels, out_channels] 的 4D 张量。这个张量代表out_channels 尺寸为filter_height x filter_width 的过滤器堆栈,将应用于具有in_channels 通道的图像。

参数filter_heightfilter_widthout_channels 由您定义,而input_channels 取决于您对tf.nn.conv2d 的输入。

换句话说,尺寸为[2, 2, 1, 5] 的过滤器张量表示5 不同的2 x 2 过滤器将应用于1 通道输入,但您可以完美地将其更改为[2, 2, 1, 7] 或其他else 会给你更好的结果。

为了进一步说明,在下面的 gif 中,您有一个 [3, 3, 1, 1] 张量过滤器在 [1, 5, 5, 1] 图像上进行卷积。这意味着您只有 1 过滤器在图像上进行卷积。

GIF source

【讨论】:

  • 您应该添加使用 gif 动画的参考。
  • 以您的 GIF 示例为例,[3,3,1,2] 过滤器的输出是什么?
  • 这将是一个[1, 3, 3, 2] 卷积特征,相当于带有2 通道的3 x 3 图像。然而,GIF 示例只是一个说明,因为它不包含任何类型的填充。如果您想要一种一致的方式来确定卷积的输出大小,您应该检查Stanford's CNN course 中解释的(W - F + 2P) / S + 1 公式。
  • 使用您的 GIF 示例中指定的当前过滤器矩阵,您可以拥有一个包含一个通道/层的卷积特征,如您的 GIF 示例中所示。所以现在让我们说我们将过滤器更改为 [3,3,1,2],这意味着将有 2 个 out_channels,即卷积特征将有两个层/通道。在这种情况下,这是否意味着我们将拥有另一个与您的 GIF 示例中指定的不同的过滤器矩阵?
猜你喜欢
  • 2015-02-27
  • 1970-01-01
  • 2018-05-16
  • 2018-06-07
  • 2019-09-10
  • 2016-03-10
  • 2015-05-21
  • 2019-09-24
  • 2016-08-07
相关资源
最近更新 更多