Tensorflow 为什么要在CNN之前调整数据集图像的大小,因为它会拉伸它们?
我使用以下函数(简化)初始化数据集: 在我观看的教程中,人们将输入图像的大小调整为(宽度、高度)。但这会延伸图像。我不明白为什么我们要这么做,因为在我使用的模型中,输入图像被应用了卷积。因此,我尝试不调整输入图像的大小,但在函数结束时的重塑过程中出错Tensorflow 为什么要在CNN之前调整数据集图像的大小,因为它会拉伸它们?,tensorflow,keras,conv-neural-network,Tensorflow,Keras,Conv Neural Network,我使用以下函数(简化)初始化数据集: 在我观看的教程中,人们将输入图像的大小调整为(宽度、高度)。但这会延伸图像。我不明白为什么我们要这么做,因为在我使用的模型中,输入图像被应用了卷积。因此,我尝试不调整输入图像的大小,但在函数结束时的重塑过程中出错 我遗漏了什么?你不局限于拉伸图像,也许你可以裁剪图像或添加一个颜色一致的缓冲区,尽管如果你能裁剪出更方便的图像,但你仍然可以用固定的颜色填充剩余的空间,模型会毫不在意的。在重塑时你会遇到什么样的错误?如果不重塑图像,很可能以后无法将numpy数组的
我遗漏了什么?你不局限于拉伸图像,也许你可以裁剪图像或添加一个颜色一致的缓冲区,尽管如果你能裁剪出更方便的图像,但你仍然可以用固定的颜色填充剩余的空间,模型会毫不在意的。在重塑时你会遇到什么样的错误?如果不重塑图像,很可能以后无法将numpy数组的大小调整为“宽度”、“高度”。在这种情况下,必须更改宽度和高度的值。首先需要使用
PIL
或cv2
调整图像大小,然后将其转换为NumPy数组。由于元素数量可能会发生变化,因此重塑NumPy数组的形状将不起作用。
WIDTH = ...
HEIGHT = ...
def load_data(dataset_path):
images = []
labels = []
for all_images:
image = cv2.imread(pimage_path)
image = cv2.resize(image, (WIDTH, HEIGHT)) #???
labels.add(corresponding_label)
return (np.array(images).reshape(-1, WIDTH, HEIGHT, 3) / 255, np.array(labels))