Já jsem si hrála s doplňováním údajů v Keras v poslední době a já jsem s použitím základní ImageDataGenerator. Naučil jsem se tvrdě, jak je to vlastně generátor, není iterator (protože type(train_aug_ds)
dává <class 'keras.preprocessing.image.DirectoryIterator'>
Myslel jsem, že to je iterátor). Také jsem četla pár blogů o jeho použití, ale oni nemají odpověď na všechny mé otázky.
Tak jsem nahrál svoje data, jako 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énovat svůj model jsem udělal následující:
model.fit(
train_aug_ds,
epochs=150,
validation_data=(valid_aug_ds,),
)
A ono to fungovalo. Jsem trochu zmatená, jak to funguje, protože train_aug_ds
je generátor, takže by to mělo dát nekonečně velký dataset. A dokumentace říká:
Při průchodu nekonečně opakovat datového souboru, musíte zadat steps_per_epoch argument.
Což jsem neudělal, ale přesto, to funguje. Má to nějak odvodit počet kroků? Také, není to jen rozšířená data, nebo to také používá non-rozšířená obrázků v dávkovém?
Takže v podstatě, moje otázka je, jak používat tento generátor správně s funkcí fit
mít všechna data v mém sadu školení, včetně původní, non-rozšířená obrázky a rozšířené snímků, a procházet několikrát/kroky (teď to vypadá, že to dělá jen jeden krok za epochy)?