如何将数组重塑为预测模型?
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)
我需要读取两张图片,将它们转换为 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)