如何将数组重塑为预测模型?

How to reshape an ndarray to fir prediction model?

我需要读取两张图片,将它们转换为 150x150 大小并将它们添加到一个数组中,该数组需要重新整形为 (2, 150, 150, 3) 的形状以适合 keras 模型。我无法理解 numpy 的 reshape 方法是如何工作的以及我需要如何使用它。

我的代码:

import cv2
import numpy

def loadAndReshape(target, path):
    targetImage = cv2.imread(path)
    targetImage = cv2.cvtColor(targetImage, cv2.COLOR_BGR2RGB)
    targetImage = cv2.resize(targetImage, dsize=(150, 150)) / 255
    targetImage = targetImage.reshape(1, 150, 150, 3).astype('float32')
    numpy.append(target, targetImage)

targetImages = numpy.ndarray((2, 150, 150, 3))
loadAndReshape(targetImages, './/test1.jpg')
loadAndReshape(targetImages, './/test2.jpg')

重塑 targetImage 没有问题,但最终 targetImages 仍然是一个空的 ndarray。我该如何输出我的模型所需的数组?

函数 'numpy.append' 没有像您期望的那样在原地工作。 相反,您可以这样做:

mport cv2
import numpy as np

def loadAndReshape(image_list, path):
    targetImage = cv2.imread(path)
    targetImage = cv2.cvtColor(targetImage, cv2.COLOR_BGR2RGB)
    targetImage = cv2.resize(targetImage, dsize=(150, 150)) / 255
    targetImage = targetImage.reshape(1, 150, 150, 3).astype('float32')
    image_list.append(targetImage)

targetImages = []
loadAndReshape(targetImages, './/test1.jpg')
loadAndReshape(targetImages, './/test2.jpg')
.
.
.
targetImages = np.concatenate(targetImages)

numpy.appendreturn一份,见https://numpy.org/doc/stable/reference/generated/numpy.append.html

你可以试试这个:

import cv2
import numpy

def loadAndReshape(path):
    targetImage = cv2.imread(path)
    targetImage = cv2.cvtColor(targetImage, cv2.COLOR_BGR2RGB)
    targetImage = cv2.resize(targetImage, dsize=(150, 150)) / 255
    targetImage = targetImage.reshape(1, 150, 150, 3).astype('float32')
    return targetImage

li = []
li.append(loadAndReshape('.//test1.jpg'))
li.append(loadAndReshape('.//test2.jpg'))
targetImages = np.array(li)