是否有可能使用fit_generator洗牌验证数据

时间:2019-11-01 17:26:04

标签: tensorflow keras

使用Tensorflow model.fit_generator,我们可以将shuffle设置为True。该文档说,它将在每个纪元之前重新整理训练生成器的数据。

由于我有大量数据,所以我的目标是每100个步骤对我的验证数据样本进行一次验证,因此我将steps_per_epoch设置为100并使用shuffle = True,我知道这100批训练数据将是随机的从训练数据中选择每个时期。

有没有办法使我的验证数据达到相同的目的?也就是说,每次我们进行验证时,都会从所有验证数据中随机抽取50个批次

traindata = 200_000
validation data = 40_000
batch_size = 32

model.fit_generator(
    train_generator,
    steps_per_epoch=100,
    epochs=20,
    verbose=1,
    callbacks=[tensorboard, early_stopping, mcp_save],
    validation_data=test_generator,
    validation_steps=50,
    max_queue_size=10,
    workers=4,
    use_multiprocessing=False,
    shuffle=True,
)
def make_train_generator():
    train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1. / 255)
    train_generator = train_datagen.flow_from_directory('data/train',
                                                        target_size=(32, 64), 
                                                        class_mode='binary', 
                                                        batch_size=32)
    return train_generator

def make_test_generator():
    test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1. / 255)
    test_generator = test_datagen.flow_from_directory('data/test',
                                                        target_size=(32, 64), 
                                                        class_mode='binary', 
                                                        batch_size=32)
    return test_generator

0 个答案:

没有答案