将2D重塑为4D阵列

时间:2018-10-04 07:12:57

标签: numpy ipython conv-neural-network

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

我有一个数组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

2 个答案:

答案 0 :(得分:0)

您的假设是正确的。关于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个值的顺序对它们进行了解散,即行优先或列优先。如果您不确定,可以快速检查一下整形后是否绘制其中一张图像。

答案 1 :(得分:0)

是的,但是,或者,您可以使用

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

已验证的X火车形状为(103,784)