【问题标题】:Difference between dimension and channel维度和渠道的区别
【发布时间】:2020-02-24 17:00:12
【问题描述】:

我有一个存储为 numpy 数组的图像:

image = np.array([
    [[ 11,  12],
     [ 13,  14],
     [ 15,  16]],
    [[ 21,  22],
     [ 23,  24],
     [ 25,  26]],
    [[ 31,  32],
     [ 33,  34],
     [ 35,  36]]])

我打印形状和尺寸:

>>> print('image shape', image.shape, 'image dimensions', image.ndim)
image shape (3, 3, 2) image dimensions 3

我知道矩阵是 3 的高度,3 的宽度和 2 的颜色通道(?)

但是....如果矩阵的维度是3..维度和颜色通道有什么区别?

【问题讨论】:

  • 维度是形状中元素的数量。 (3,) 数组的维度为 1。 (3,3) 的维度为 2; (3,3,3) 的维度为 3,依此类推。
  • 在您的特定情况下,您选择将尺寸为 3 的轴 0 解释为图像的不同通道。我稍后会发布答案。
  • 好的,我直观地理解这是维度,但在哪些情况下我们使用超过 3 个维度?
  • 我会立即将其添加到我的答案中。现在正在努力。
  • 全部完成。享受吧。

标签: numpy deep-learning conv-neural-network


【解决方案1】:

数组的固有属性是shape 和ndim。形状是每个维度中数组的大小。 image.ndim 只是len(image.shape) 的快捷方式。另一个相关数量是image.size,即np.prod(image.shape)。在 numpy 中,维度被称为“轴”,并且从零开始。因此数组中的第一个索引对应于轴 0,第二个索引对应于轴 1,依此类推。

哪个维度是“通道”完全取决于解释。通常,它将是最后一个维度,但我也将其视为第一个维度。更一般地说,维度通常对应于数组中的一些有用坐标。请记住,并非所有数组都是图像。数据可以是完全任意的,并且将基于您的用例。

您的示例有点令人困惑,因为image.ndim == image.shape[0] == image.shape[1]。下面是一个包含 多个 RGB 图像的数组示例,它们的大小都相同:

images = np.random.randint(255, size=(5, 7, 7, 3), dtype=np.uint8)

我们可以将轴 0 解释为图像的索引,轴 1 为宽度,轴 2 为高度,轴 3 为颜色通道。在这种情况下,我们有五张尺寸为 7x7 的图像,每张都有三个颜色通道。如果通道是R、G、B,那么images[3, 0, 0, 2]是第四张图片左上角像素的蓝色分量。

【讨论】:

  • 感谢您提供了非常完善的答案,但是...只是出于好奇,如果我说:images = np.random.randint(255, size=(5, 7, 7, 3, 2, 1)) 。什么代表轴 -2 和 -1 ?如果我添加更多轴呢?
  • @LuisAnaya。我想要了解的是 Numpy 数组用于存储(真实)数据。您可以在现实世界中以任何您想要的方式构造数组,这是有意义的。人为的例子除了作为现实的反映之外没有什么意义。如果您给我一个具有更多维度的数组,那么您必须说出这些维度是什么,而不是我:)
  • aaaaah 好的,完美,终于是的,我对这个话题有点困惑,现在我明白了,非常感谢你的努力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 2014-06-06
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多