Eu joc cu marirea de date în Keras în ultima vreme și eu sunt, folosind de bază ImageDataGenerator. Am învățat la fel de greu este de fapt un generator, nu iterator (pentru că type(train_aug_ds)
dă <class 'keras.preprocessing.image.DirectoryIterator'>
Am crezut că este un iterator). Am verificat, de asemenea, câteva bloguri despre folosesc, dar nu mi-au răspuns la toate întrebările mele.
Deci, am încărcat datele mele de genul asta:
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,
)
Și pentru a instrui modelul meu am făcut următoarele:
model.fit(
train_aug_ds,
epochs=150,
validation_data=(valid_aug_ds,),
)
Și a funcționat. Sunt un pic confuz, cum funcționează, pentru că train_aug_ds
este generator, așa că ar trebui să dea infinit de mare de date. Și documentația spune:
Când trece un infinit de repetarea set de date, trebuie să specificați steps_per_epoch argument.
Ceea ce nu am făcut, totuși, funcționează. Nu cumva deduce numărul de pași? De asemenea, nu folosi doar augmentată de date, sau se utilizează, de asemenea, non-augmented imagini în lot?
Deci, practic, întrebarea mea este cum să utilizați acest generator corect cu funcția fit
pentru a avea toate datele în formare, inclusiv originale, non-augmented imagini și imagini augmentată, și să ciclu prin ea de mai multe ori/etape (acum se pare că nu doar un singur pas pe epoci)?