【问题标题】:Reshape 2D into 4D array将 2D 重塑为 4D 数组
【发布时间】:2018-10-04 07:12:57
【问题描述】:

关于重塑数组的您好问题。

我有一个数组 train_x (2D),内容是 (103,784)

在这种情况下,103 是示例的数量。

784 是我的神经网络的输入。

现在我想从 2D 重塑到 4D

我使用以下命令:

train_x = np.reshape(train_x, (103, 28, 28, 1))

在这种情况下 103 仍然是训练示例的数量并且在这种情况下我的输入 784 被划分为 28x28 的矩阵是否正确?在这种情况下,1 是我的通道,不使用 RGB(否则通道应该是 3)。

如果我的假设不正确,请有人建议如何从 2D 重塑为 4D 以存档上述内容? tnx

【问题讨论】:

  • 用一个更小的例子来测试这个,例如np.arange(12).reshape(3,4).reshape(3,2,2,1)

标签: numpy ipython conv-neural-network


【解决方案1】:

你的假设是正确的。关于 reshape 的 NumPy 文档指出:

您可以将重塑视为首先拆散数组(使用给定的索引顺序),然​​后使用与用于拆解相同的索引顺序将拆散数组中的元素插入到新数组中。

train_x 的形状为 (103, 784) 会变成:

[img_0[0], ..., img_0[783], img_1[0], ..., img_1[783], ..., img_102[0], img_102[783]]

然后按照预期,使用您问题中的 reshape 命令将其重塑为 103 张 28x28x1 的图像。

您应确保已按照您用于解开它们的相同顺序(行优先或列优先)解开平面 784 值。如果您不确定,可以在重塑后绘制其中一张图像进行快速的完整性检查。

【讨论】:

    【解决方案2】:

    或者,您可以使用以下内容。

    train_X = X_train.reshape(X_train.shape[0],28,28,1)
    

    假设 X-train 的形状为 (103,784)

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2018-06-07
      相关资源
      最近更新 更多