numpy-如何重塑奇数数组的大小?

时间:2018-07-08 12:17:33

标签: python arrays numpy

我有一个TensorFlow模型,我想在其中传递图像以使其确定图像中的对象。

但是,模型抱怨图像的形状说它希望以(1, 1, 1, 2048)的形式出现,但是它正在接收(1, 7, 7, 2048)

我尝试通过进行numpy.reshape()numpy.reshape(myObj, (1, 1, 1, 2048))在图像上进行numpy.reshape(myObj, (1, 1, 1, -1))的操作。但是,前者只是抱怨无法将大小为100352的数组重塑为(1, 1, 1, 2048),而后者将数组的最后一个元素的大小重塑为(7, 7, 2048)的倍数,即100352。

如何重塑奇数数组大小,或者这不是Numpy形状/重塑的工作方式?是否有其他方法可以执行我要求的Numpy?

1 个答案:

答案 0 :(得分:0)

如果nm不相等,则不能将n元素数组重塑为m元素数组。重塑数组的操作实际上只是获取同一数组的新视图的操作。

当您尝试将形状调整为包含n=1*7*7*2048=100353个元素的数组时,您的输入数组具有m=1*1*1*2048=2048个元素。

正如hpaulj指出的那样,您的问题出在输入形状上。从您提到的(1, 7, 7, 2048)(1, 1, 1, 2048)的形状看来,您的预期输入可能应该从下一层(可能是在全局池化阶段之后)提取出来,但是如果没有更多详细信息,我们不能说太多您的模型。