Python:如何将3D图像(np阵列)重塑为1D,然后将它们重新整形为3D?

时间:2017-05-16 18:43:18

标签: python arrays numpy image-processing tensorflow

我将RGB图像(32 x 32 x 3)保存为3D numpy数组,我将其用作神经网络的输入(使用tensorflow)。为了将它们用作输入,我使用重塑(1,-1)将它们重新整形为1D np阵列(1 x 3072)。当我完成我的网络训练时,我想重新塑造输出,但使用重塑(32,32,3)似乎无法提供所需的结果。

这是正确的方法吗?我怎么能确定每个数据都会回到正确的位置?

2 个答案:

答案 0 :(得分:4)

如果您要创建一维数组,请使用.reshape(-1),这将创建您的数组的线性版本。如果你使用.reshape(32,32,3),这将创建一个32,32×3阵列的数组,这是所描述的原始格式。使用'-1'创建一个与组合嵌套数组中元素数相同大小的线性数组。

答案 1 :(得分:0)

如果M(32 x 32 x 3),则.reshape(1,-1)将生成形状为(1, 32*32*3)的二维数组(不是1d)。可以使用相同类型的reshape语句将其重新改为(32,32,3)。

但是这会改变输入和输入但是你没有告诉我们你网络的输出是什么样的。它有什么形状?你是如何重塑输出的,以及它有什么问题?