Python Numpy-如何重塑奇数数组大小?
我有一个TensorFlow模型,我想把一个图像传递给它,以便它确定图像中的对象 然而,该模型抱怨图像的形状,说它希望它以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),后者将数组的最后
(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
模型使用相同的图像来训练模型。我已经找到了它,我将它作为我的另一个问题的答案发布,这是为了解决这个问题。