【问题标题】:Can I put several different images as channels?我可以将几个不同的图像作为通道吗?
【发布时间】:2017-11-06 03:37:17
【问题描述】:

通常,我们将输入图像设置为“高度”、“宽度”、“通道”。

在“通道”中,我们为灰度图片设置了 1,为 RGB 图片设置了 3。

我的问题是,使用这个频道应该是同一张照片吗?如上所述。

或者我可以将一系列图像设置为频道?

(例如,我有 10 个空间离散图像,因此我将通道 10 设置为一个输入)

会不会有什么问题,是不是正确的做法?

或者我应该为这 10 个图像设置 10 个输入?

感谢您的回答!

【问题讨论】:

    标签: python machine-learning tensorflow conv-neural-network


    【解决方案1】:

    不,不会一样,因为输入层的通道数决定了卷积滤波器的形状,进而决定了参数的数量以及它们的应用方式。

    比较这两个卷积网络:

    • [32x32x3] 输入形状,batch_size=55x5 感受野,那么卷积层中的每个神经元都会对输入体积中的 [5x5x3] 区域具有权重,总共 5*5*3 = 75 权重(和 +1 偏差参数)。
    • [32x32x15] 输入形状,batch_size=1,相同的5x5 感受野,那么每个神经元都会有一个[5x5x15] 区域的权重,总共有 5*5*15 = 325 权重(和相同的 + 1 个偏置参数)。

    在这两种情况下,两个卷积层看到 15 个 RGB 图像,但是第二个网络将使用 5 倍的参数来学习相同的数据,而第一个网络将针对不同的图像重用相同的参数。另请注意,第二个网络将为每个第一张图像、每个第二张图像等设置专用参数。

    显然,第一种方法更好,不仅因为它节省了资源,而且它对批量训练图像的顺序也是不变的。

    【讨论】:

    • 感谢您的回答!我能理解你说的话,我真的很感激。但仍有一些问题。现在,我的一系列图像“不一样”。这意味着我希望 CNN 获得每个图像的特征。我的想法是 CNN 将为每个通道中的每个图像获取特征。所以我不需要 10 个输入,只需使用 10 个通道作为 1 个输入。这是正确的吗?或者 CNN 不是这样工作的?感谢您再次回答!
    • 我不确定我是否理解您的困惑,但是 conv 层为每个通道使用单独的“部分”过滤器,换句话说,它独立地从每个通道中提取特征。
    • 因此,如果我想获取每张图片的完整信息,我应该将它们设置为不同的输入。将它们设置到频道中可能会导致信息丢失。我理解对了吗?非常感谢!
    • 如果你使用的是小批量图片,conv层会适应你所有图片的每个R/G/B通道,提取共同特征,这就是conv层用于。信息丢失是什么意思?
    • 嗯,这可能是我的误解。让我以另一种方式再说一遍。假设这10张图片来自A(图片不同),都是灰度级。 B也有10个灰度图像。A和B都来自同一类。然后我将 A 的图像设置为 10 个通道,B 也是如此。然后将 A 和 B 制作成 mini-batch。我将每个图像的 10 个输入设置为 A 和 B,并使其成为 mini-batch 是否相同?我的英语可能不够清楚,对此感到抱歉。
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多