Недопустимая форма (64, 125, 125, 3) для данных изображения после использования ImageDataGenerator

#python #tensorflow #opencv #matplotlib #keras

#python #тензорный поток #opencv #matplotlib #keras

Вопрос:

Итак, я пытаюсь отобразить изображение, которое уже увеличено. Но получил Invalid shape (64, 125, 125, 3) for image data ошибку. Это мой код:

 from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale=1./255,
                                    zoom_range=0.1,
                                    rotation_range=25,
                                    width_shift_range=0.1,
                                    height_shift_range=0.1,
                                    shear_range=0.1, horizontal_flip=True,
                                    fill_mode='nearest')

val_datagen = ImageDataGenerator(rescale=1./255)

# build image augmentation generators
train_generator = train_datagen.flow(train_data, train_labels_enc, batch_size=64, shuffle=True)
val_generator = val_datagen.flow(val_data, val_labels_enc, batch_size=64, shuffle=False)


from matplotlib import pyplot
for i in range(9):
    # define subplot
    pyplot.subplot(330   1   i)
    # generate batch of images
    batch = train_generator.next()
    # convert to unsigned integers for viewing
    image = batch[0].astype('uint8')
    # plot raw pixel data
    pyplot.imshow(image)

pyplot.show()

  

И ошибка, на которую указывалось pyplot.imshow(image) . Любая помощь будет оценена

Комментарии:

1. попробуйте image[0,:,:,:] отобразить первое изображение из пакета из 64 изображений. Вы не можете отображать 64 изображения одновременно

Ответ №1:

batch Объект представляет собой кортеж (images, labels) , поэтому, если вы выберете batch[0] , вы выберете все изображения.

Попробуйте:

 for i in range(9):
    pyplot.subplot(330   1   i)
    images, labels = train_generator.next()
    image = (images[0]*255).astype('uint8')
    pyplot.imshow(image)
  

Комментарии:

1. И вы, и ответ sai привели к исчезновению ошибки, но на графике отображается только черное изображение

2. Это потому, что вы разделили пиксели на 255. Смотрите мое редактирование