Ostatnio gram wraz ze wzrostem danych w Keras i używam podstawowy ImageDataGenerator. Ja na własnej skórze przekonałem się, że faktycznie jest to alternator, a nie iterator (bo type(train_aug_ds)
daje <class 'keras.preprocessing.image.DirectoryIterator'>
Myślałem, że to iterator). Ja też sprawdziłem kilka blogów o jego użyciu, ale nie odpowiadają na wszystkie moje pytania.
Więc wysłałem swoje dane w następujący sposób:
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 aby szkolić swój model, zrobiłem następujący:
model.fit(
train_aug_ds,
epochs=150,
validation_data=(valid_aug_ds,),
)
I to zadziałało. Jestem trochę zakłopotany tym, jak to działa, bo train_aug_ds
jest generatorem, więc powinien dawać nieskończenie duży zestaw danych. W dokumentacji jest napisane:
Podczas biegu nieskończenie cyklicznego zestawu danych należy podać argument steps_per_epoch.
Czego ja nie robiłem, ale to działa. Czy to w jakiś sposób wniosek o liczbie kroków? Poza tym, czy używa tylko uzupełnione dane lub wykorzystuje również nie uzupełnione obrazu w trybie wsadowym?
Tak więc, w zasadzie, moje pytanie polega na tym, jak prawidłowo używać ten alternator z funkcją fit
mieć wszystkie dane w moim rozdziale nauki pisania, w tym oryginalne, nie uzupełnione o zdjęcia i uzupełnione o zdjęcia i wyświetlać je kilka razy/kroków (teraz wydaje się, że on robi tylko jeden krok po dobie)?