如何将Numpy数组转换为Keras ImageDataGenerator?

thigvfpy  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(177)

在Kaggle中,我得到了输入数据文件夹。

#Training data
train_datagen = ImageDataGenerator(
        rescale=1./255,
        rotation_range=10,
        zoom_range=0.4,
        horizontal_flip=True,
        validation_split=0.01
        )

train_generator = train_datagen.flow_from_directory(
        '../input/chest-xray-covid19-pneumonia/Data/train',
        target_size=(256, 256),
        batch_size=32,
        class_mode='categorical',
        subset='training'
        )

我不得不向这个数据集中添加更多的图像,因此我使用下面的代码将我的train_generator转换为NumPy(nd)数组。

x_train=np.concatenate([train_generator.next()[0] for i in range(train_generator.__len__())])
y_train=np.concatenate([train_generator.next()[1] for i in range(train_generator.__len__())])

多亏了this
现在,我将更多的图像连接到这些图像数组中

gan_images = np.concatenate((x_train,t_x), axis=0)
gan_labels = np.concatenate((y_train,t_y), axis=0)

现在,我如何再次将其转换回train_generator格式?

Type of train_generator is keras.preprocessing.image.DirectoryIterator

编辑

按照我的建议,我试着

train_dataset = train_datagen.flow(x_train,y_train)
additional_gan_dataset = train_datagen.flow(t_x,t_y)
abc = np.concatenate((gan_dataset,train_dataset), axis=0)

kaggle中的OOM错误;

"我尝试的另一种方式"

dataset = train_datagen.flow(gan_images, gan_labels)

 history1 = model1.fit(dataset,validation_data=val_generator, verbose=1, epochs= 500,
                       callbacks=[early_stopping, reduce_lr , learning_rate_reduction]
                        )

它正在工作,但这里的准确性是如此之差,我敢肯定它没有正确合并。我有总共5094张图像。我已经创建了另外100张图像。由于这些是预取数据集,我无法通过检查长度来理解。len(train_dataset) is giving me 160合并后,它给我163。如何修复这些?如何正确理解这些预取数据集?

kuhbmx9i

kuhbmx9i1#

ImageDataGenerator.flow(x_array, y_array)

dataset = ImageDataGenerator.flow(gan_images, gan_labels)

尽管如此,除非您需要ImageDataGenerator的方法或者确实需要数据集对象,否则您可以只将数组传递给.fit()

相关问题