簡體   English   中英

使用 ImageDataGenerator 和 flow_from_directory 時,Keras 中的數據增強是否應用於驗證集

[英]Is data augmentation in Keras applied to the validation set when using ImageDataGenerator and flow_from_directory

我正在使用flow_from_directory中的ImageDataGeneratorflow_from_directory訓練一個深度神經網絡。 數據在一個文件夾中。 因此,我在使用ImageDataGenerator創建生成器時使用了validation_split=0.x 然后我創建了兩個流,一個用於訓練,另一個用於使用flow_from_directory使用subset="training"subset="validation"

我想知道在創建ImageDataGenerator時是否有任何指定的圖像增強(轉換)適用於訓練和驗證子集或僅適用於訓練子集。

我在 GitHub 的 Keras 存儲庫中找不到正確的部分來檢查它。

(注意:我知道使用兩個單獨的生成器進行訓練和驗證的兩個單獨目錄是更好的做法)

代碼示例:

img_gen = ImageDataGenerator(validation_split=0.2,horizontal_flip = True, vertical_flip = True,...)
train_flow = img_gen.flow_from_directory('directory',subset = "training",...)
validation_flow = img_gen.flow_from_directory('directory',subset = "validation",...)
history=model.fit_generator(generator = train_flow ,validation_data = validation_flow,...)

將 ImageDataGenerator 和 flow_from_directory 用於訓練和驗證集,也將增加驗證數據。 這在Keras 文檔中顯示,該 文檔在 Image Generator Methods flow_from_directory 下說明:獲取數據和標簽數組,生成批量增強數據。 如果不想在驗證集上使用數據增強,可以查看提供的示例:

train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

validation_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        'data/train',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

validation_generator = validation_datagen.flow_from_directory(
        'data/validation',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

model.fit_generator(
        train_generator,
        steps_per_epoch=2000,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800)

注意:在這種情況下,您也可以直接傳遞重新縮放的驗證數據,而不使用生成器,例如: validation_data=(x_valid, y_valid)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM