在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。如何修复这些?如何正确理解这些预取数据集?
1条答案
按热度按时间kuhbmx9i1#
ImageDataGenerator.flow(x_array, y_array)
尽管如此,除非您需要ImageDataGenerator的方法或者确实需要数据集对象,否则您可以只将数组传递给
.fit()
。