将2D重塑为4D数组。

6

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

我有一个名为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以实现上述目标吗? 谢谢


1
使用一个更小的示例进行测试,例如 np.arange(12).reshape(3,4).reshape(3,2,2,1) - hpaulj
2个回答

2
您的假设是正确的。关于 reshape 的 NumPy 文档中写到:

可以将重塑视为首先对数组进行展平(使用给定的索引顺序),然后使用与展平时使用的相同类型的索引顺序将元素从展平后的数组插入到新数组中。

形状为 (103, 784) 的 train_x 会被展平为:

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

然后使用您提供的 reshape 命令按预期将其重塑为 103 张 28x28x1 的图像。

您应确保已按照与展开它们所使用的相同顺序对扁平的 784 个值进行了展平处理,即按行或按列主要排序方式。如果不确定,可以对重塑后的图像进行快速的合理性检查。


1
另外,您可以使用以下内容。
train_X = X_train.reshape(X_train.shape[0],28,28,1)

提供X-train的形状为(103,784)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接