我已经将图像数据集安排在子文件夹中,因此可以使用以下代码创建图像数据生成器:
train_datagen = ImageDataGenerator(rescale=1. / 255, validation_split=0.2)
train = train_datagen.flow_from_directory(train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical',
subset='training')
validation = train_datagen.flow_from_directory(train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical',
subset='validation')
我的模型是双输出模型,所以我将需要使用自定义生成器,该生成器应接近:
def gen_flow_for_two_outputs(generator, X, Y1, Y2):
genX = generator.flow(X, seed=7)
genY1 = generator.flow(Y1, seed=7)
while True:
Xi = genX.next()
Yi1 = genY1.next()
Yi2 = function(Y2)
yield Xi, [Yi1, Yi2]
但是,自定义生成器要求数据必须为numpy数组。
是否有一种方法可以将train_datagen.flow_from_directory
的输出保存为一个完整的numpy数组,该数组将包含所有训练图像及其标签?
我已经尝试过HERE提出的解决方案,但是正如预期的那样,当为整个训练数据集提供单个批次时,我的系统内存不足。
最终,我希望开始拟合与以下类似的模型,但使用model.fit_generator
而不是model.fit
model.fit(x_train,
{'logits_variance':y_train, 'softmax_output':y_train},
callbacks=callbacks,
verbose=FLAGS.verbose,
epochs=FLAGS.epochs,
batch_size=FLAGS.batch_size,
validation_data=(x_test, {'logits_variance':y_test, 'softmax_output':y_test}))
有什么办法解决这个问题吗?