Python Numpy-如何重塑奇数数组大小?

Python Numpy-如何重塑奇数数组大小?,python,arrays,numpy,Python,Arrays,Numpy,我有一个TensorFlow模型,我想把一个图像传递给它,以便它确定图像中的对象 然而,该模型抱怨图像的形状,说它希望它以(1,1,1,2048)的形式出现,但它接收的是(1,7,7,2048) 我尝试过在图像上执行numpy.reformate(),方法是执行numpy.reformate(myObj,(1,1,1,2048))或numpy.reformate(myObj,(1,1,1,-1))。然而,前者只是抱怨它无法将大小为100352的数组重塑为(1,1,1,2048),后者将数组的最后

我有一个TensorFlow模型,我想把一个图像传递给它,以便它确定图像中的对象

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

我尝试过在图像上执行
numpy.reformate()
,方法是执行
numpy.reformate(myObj,(1,1,1,2048))
numpy.reformate(myObj,(1,1,1,-1))
。然而,前者只是抱怨它无法将大小为100352的数组重塑为
(1,1,1,2048)
,后者将数组的最后一个元素的大小调整为
(7,7,2048)
的倍数,即100352


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

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

当您尝试使用
m=1*1*1*1*2048=2048
元素重塑为数组时,您的输入数组具有
n=1*7*7*2048=100353
元素


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

阅读
重塑
文档。确保你理解为什么你的阵列比模型预期的要大49倍。好吧,我想是的。这个问题与我的另一篇文章有关。调用
ResNet50
函数时会出现问题,由于某种原因,它会返回
(1,7,7,2048)
的形状,即使我训练的
ResNet50
模型使用相同的图像来训练模型。我已经找到了它,我将它作为我的另一个问题的答案发布,这是为了解决这个问题。