Som hrať s rozšírením údajov v Keras v poslednej dobe a ja som s použitím základných ImageDataGenerator. Naučil som sa tvrdo, to je vlastne generátor, nie iterator (pretože type(train_aug_ds)
dáva <class 'keras.preprocessing.image.DirectoryIterator'>
Myslel som, že to je iterator). Tiež som skontroloval niekoľko blogov o jeho použití, ale oni nemajú odpovede na všetky moje otázky.
Tak som načítané dáta, ako je tento:
train_aug = ImageDataGenerator(
rescale=1./255,
horizontal_flip=True,
height_shift_range=0.1,
width_shift_range=0.1,
brightness_range=(0.5,1.5),
zoom_range = [1, 1.5],
)
train_aug_ds = train_aug.flow_from_directory(
directory='./train',
target_size=image_size,
batch_size=batch_size,
)
A trénovať svoj model som urobil nasledujúce:
model.fit(
train_aug_ds,
epochs=150,
validation_data=(valid_aug_ds,),
)
A fungovalo to. Som trochu zmätená, ako to funguje, pretože train_aug_ds
je generátor, tak to by mala dať nekonečne veľká množina údajov. A dokumentácia hovorí:
Pri prechode nekonečne opakovanie dokumentačný materiál, musíte zadať steps_per_epoch argument.
Čo som neurobil, napriek tomu, že to funguje. Robí to nejako usudzovať, počet krokov? Tiež, to použiť len augmented údaje, alebo používa aj non-augmented obrazy v dávke?
Takže v podstate, moja otázka je, ako používať tento generátor správne s funkciou fit
chcete mať všetky údaje v mojej prípravy nastaviť, vrátane pôvodnom, non-augmented obrázky a rozšírená obrázky, a prechádzať sa niekoľko krát/kroky (práve teraz, zdá sa, že to robí iba jeden krok za epoch)?