我正在尝试使用VOC2012数据集来训练CNN。对于我的项目,我需要黑白数据,因此我提取了R组件。到目前为止,一切都很好。问题在于图像的大小不同,所以我不知道如何将其传递给模型。我编译了模型,然后创建了如下的32个迷你批处理(其中X_train
和Y_train
是文件的路径)。
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))
但是,我怀疑由于图像的大小都不同,所以numpy数组的形状为(32,)而不是我期望的(32,height,width,1)。我该如何处理?
答案 0 :(得分:0)
根据某些资料,确实可以训练至少一些具有不同输入大小的体系结构。 (Quora,Cross Validated)
在生成大小可变的数组的数组时,可能只需要使用Python的NumPy数组列表或类型为ndarray
的{{1}}来收集所有图像数据。然后在训练过程中,Quora回答提到只能使用批处理大小1,否则可能会根据大小将多个图像合并在一起。甚至可以使用零填充来使图像大小均匀,但是我不能说这种方法的有效性。
最好的研究!
object