Je suis un peu confus comment utiliser fit_generator
en keras
.Comment: fit_generator dans keras
Par exemple permet de dire:
- nous avons 10000 points de données
- nous voulons courir pour 10 époques
- avec la taille du lot de 512
En utilisant fit
nous venons:
x, y = load_data()
model.fit(x=x, y=y, batch_size=512, epochs=10)
où load_data
charge toutes les données.
Maintenant, comment faire la même chose avec fit_generator
.
Ce n'est pas clair pour moi comment il est traité lors de l'utilisation fit_generator
. Si je le générateur suivant:
def data_generator():
for x, y in load_data_per_line():
yield x, y
Dans le générateur ci-dessus chaque fois qu'il yields
un point de données. Et:
def data_generator_2():
x_output = []
y_output = []
i = 0
for x, y in load_data_per_line():
x_output[i] = x
y_output[i] = y
i = i + 1
if i == batch_size:
yield x_output, y_output
i = 0
x_output = []
y_output = []
Dans le générateur ci-dessus chaque fois qu'il yields
points de données de taille de lot (512 dans ce cas).
Pour obtenir la même chose que fit
mais en utilisant fit_generator
:
model.fit_generator(data_generator(), steps_per_epoch=10000/512, epochs=10)
ou
model.fit_generator(data_generator_2(), steps_per_epoch=10000/512, epochs=10)
ou les deux sont faux (fit_generator
et data_generator
s)? Si l'un d'entre eux est correct, est-ce que cela garantit que tous les points de données seront traités et traités de manière séquentielle?
Toute idée est utile
Juste une curiosité, alors dans ce cas, le dernier lot n'aura pas la taille de 512 et c'est très bien non? – titipata
C'est bien, tant que vous ne laissez pas votre générateur essayer de lire plus que ce qui est autorisé. –
merci pour la réponse détaillée. comme le but du générateur d'ajustement est de former un modèle avec beaucoup de données pourquoi il suppose que je dois connaître le nombre de points de données? que se passe-t-il si pour une raison quelconque je ne connais pas le nombre exact de points de données? comment définir les étapes dans ce cas? –