Начальная точка следующей эпохи для fit_generator в Керасе - PullRequest
0 голосов
/ 14 декабря 2018

В документации Keras steps_per_epoch in fit_generator означает:

Общее количество шагов (партий образцов), которое нужно получить от генератора до объявления одной эпохи законченной и начала следующей эпохи.

Мне интересно, есть ли у меня бесконечный генератор, с чего начать, когда я войду в следующую эпоху?Должен ли я забрать, где я остался?Или я снова начну с первого образца?

1 Ответ

0 голосов
/ 14 декабря 2018

Это зависит от определения вашего генератора.На самом деле, если у вас есть генератор, который выдает партии бесконечно, то вы должны убедиться, что он определен так, что после прохождения всех выборок (т. Е. Одной эпохи) он возвращается к исходной точке (т. Е. Мы не генерируем выборку болееодин раз в эпоху).Например, примерный набросок такого генератора будет выглядеть так:

def my_gen(x_train, y_train, batch_size):
    n_samples = x_train.shape[0]
    n_steps = np.ceil(n_samples // batch_size)
    while True:
        # one epoch: goes over all the samples
        for i in range(n_steps):
            # the last batch might have less than batch_size samples
            if (i+1) * batch_size > n_samples:
                x = x_train[i * batch_size:]
                y = y_train[i * batch_size:]
            else:  
                x = x_train[i * batch_size : (i+1) * batch_size]
                y = y_train[i * batch_size : (i+1) * batch_size]
            yield x, y
...