keras中的扩充是在每个epoch修改数据集,还是只执行一次



我有一个关于图像数据集函数tf.keras.utils.image_dataset_from_directory和增强的问题:如果我们在这个数据集创建函数中设置一个种子,并在模型中提供一些增强层(这些层也指定了一个种子(,在每个历元会有新的增强图像吗?还是它总是在同一组增强图像上训练。

示例:

# model construction
model_input = tf.keras.Input(shape=(96, 96, 3))
add_layers=tf.keras.layers.RandomFlip(mode='horizontal',seed=75398)(model_input) # augmentation
add_layers=tf.keras.layers.RandomRotation(factor=0.1,seed=2143)(model_input) # augmentation
add_layers= #some nn layers# # model core
output = tf.keras.layers.Dense(1)(add_layers)
model = tf.keras.Model(inputs=model_input, outputs=output)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001),
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
# datasets construction
dataset = tf.keras.utils.image_dataset_from_directory(dataset_directory,
labels=[1 0 1 0 0 0 1 1 1 ...], label_mode='int',  
image_size=(96, 96), batch_size=32,
shuffle=True,
seed=2342)
dataset_length = [i for i, _ in enumerate(dataset)][-1] + 1
dataset = dataset.cache().shuffle(1000).prefetch(buffer_size=tf.data.AUTOTUNE)
validation_split = 0.1
train_set = dataset.skip(int(dataset_length * validation_split))
validation_set = dataset.take(int(dataset_length * validation_split))
# training
model.fit(train_set, validation_data=validation_set, epochs=5)

在这个例子中,增强图像在5个历元期间是相同的吗?还是每个历元都会创建一组新的增强图像?如果这将始终使用相同的图像,我如何通过增强来增加训练的图像数量?

执行image_dataset_from_directory方法时,图像会立即增强。因此,不,它不会为每个时代创建新的图像。此外,为了增加图像的数量,请尝试阅读以下博客:

https://machinelearningmastery.com/image-augmentation-with-keras-preprocessing-layers-and-tf-image/

最新更新