我目前正在使用 Keras 构建图像分类模型。我面临的挑战与数据集中图像的可变大小有关。我的目标是建立一个模型,可以有效地对图像进行分类,同时保留其原始尺寸以避免扭曲。因此,我在使用 Keras 训练图像分类模型时遇到了问题。我的模型的架构允许使用可变的输入图像尺寸,指定为 input_shape=(None, None, 3),以保留图像的原始大小。
`模型 = 顺序()
model.add(Conv2D(3, (3, 3), activation="relu", input_shape=(None, None, 3)))
model.add(Conv2D(32, (3, 3), activation="relu"))
model.add(Conv2D(16, (3, 3), activation="relu"))
model.add(Conv2D(8, (3, 3), activation="relu"))
model.add(GlobalMaxPooling2D())
model.add(Dense(2, activation="softmax"))
steps = 50 epochs = 25
x_train = []
for img in df['Image']:
`x_train.append(img.array.transpose(1,2,0))`
training data gen (data agumentation)
train_datagen = ImageDataGenerator(shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
gen = train_datagen.flow(np.asarray(x_train), df['ClassIndex'])
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
model.fit_generator(gen, steps_per_epoch=steps, epochs=epochs, verbose=1)
我遇到了这个错误
Execute failed: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (11, 1)
我认为这个错误是关于尝试将图像转换为 NumPy 数组并将它们存储在列表中,但它无法处理图像尺寸不一致的情况。
因此,我正在寻求有关如何有效处理此问题的指导。 任何建议或替代方法将不胜感激。
您传递到 Conv2D 层的数据维度导致您出现此错误。 Conv2D层通常需要这种格式的数据:
(batch_size, height, width, channels)
。
(11, 1)
。 x_train
可能会有用。