Python 不同图像大小的Keras CNN

Python 不同图像大小的Keras CNN,python,keras,deep-learning,conv-neural-network,Python,Keras,Deep Learning,Conv Neural Network,我正在尝试使用VOC2012数据集来训练CNN。对于我的项目,我需要B&W数据,所以我提取了R组件。到现在为止,一直都还不错。问题是图像大小不同,所以我不知道如何将其传递给模型。我编译了我的模型,然后创建了大小为32的小批量,如下所示(其中X\u-train和Y\u-train是文件的路径) 但是,我怀疑,由于图像大小不同,numpy数组的形状(32),而不是我预期的(32,高度,宽度,1)。我该如何处理这个问题呢?根据一些消息来源,人们确实能够训练至少一些具有不同输入大小的体系结构。(,) 在

我正在尝试使用VOC2012数据集来训练CNN。对于我的项目,我需要B&W数据,所以我提取了R组件。到现在为止,一直都还不错。问题是图像大小不同,所以我不知道如何将其传递给模型。我编译了我的模型,然后创建了大小为32的小批量,如下所示(其中
X\u-train
Y\u-train
是文件的路径)


但是,我怀疑,由于图像大小不同,numpy数组的形状(32),而不是我预期的(32,高度,宽度,1)。我该如何处理这个问题呢?

根据一些消息来源,人们确实能够训练至少一些具有不同输入大小的体系结构。(,)

在生成大小不同的数组数组时,可以简单地使用一个Python NumPy数组列表,或者使用类型为
object
ndarray
来收集所有图像数据。然后在培训过程中,Quora的回答提到,只能使用批量大小1,或者可以根据大小将多个图像聚集在一起。即使用零填充也可以使图像大小均匀,但我不能说这种方法的有效性

祝你研究顺利

用于说明的示例代码: 可能重复的
for x in X_train:
    img = plt.imread(x)
    img = img.reshape(*(img.shape), 1)
    X.append(img)

for y in Y_train:
    img = plt.imread(y)
    img = img.reshape(*(img.shape), 1)
    Y.append(img)

model.train_on_batch(np.array(X), np.array(Y))
# Generate 10 "images" with different sizes
images = [np.zeros((i+5, i+10)) for i in range(10)]
images = np.array([np.zeros((i+5, i+10)) for i in range(10)])

# Or an empty array to append to
images = np.array([], dtype=object)