Соответствует ли fit_generator функции l oop? - PullRequest
0 голосов
/ 16 января 2020

Я строю модель с керасом. Я использую fit_generator для обучения своей модели и получения хороших результатов со средней точностью 0,9.

net.fit_generator(train_it.generator(), epoch_iterations * batch_size, nb_epoch=nb_epoch, validation_data=val_it.generator())

Но когда я заменил fit_generator на функцию fit l oop, обучение стало медленнее (1/10 скорости). И результаты стали хуже (средняя точность - 0,8, некоторые категории - хорошие, а некоторые - намного хуже), а кривая точности сильно колебалась.

        x, y = next(train_it.generator())
        valid_data = next(val_it.generator())
        net.fit(x, y, batch_size=batch_size, validation_data=valid_data)

Кто-нибудь может это объяснить? Я думал, что fit_generator должно быть таким же, как fit loop function, но кажется, что два метода обучения могут не совпадать.

1 Ответ

0 голосов
/ 16 января 2020

Они не обязательно одинаковы. Fit l oop будет равномерно проходить по всему набору данных (один раз для каждой точки данных). Если вы использовали собственный генератор и использовали random.sample (или что-то похожее), то подходящий генератор будет неравномерно выбирать из данных тренировки. Это приведет к некоторой разнице.

И оценка с использованием пользовательского генератора, который будет random.sample, вызовет большую разницу. Тем не менее, та же теория, valu_generator будет выбирать случайным образом из набора тестов. Но на этот раз он оценивает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...