使用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