Если вы обновите последнюю строку следующим образом, это займет около 40 секунд в течение 5 эпох.
от
model.fit_generator(train_generator, epochs=5, validation_data=valid_generator)
до
model.fit_generator(train_generator, epochs=5, steps_per_epoch=len(train_generator), validation_data=valid_generator, validation_steps=len(valid_generator))
Пожалуйста, проверьте описание того, что ожидается, когда вход для model.fit является генератором. Поэтому, когда значение «steps_per_epoch» равно None, эпоха будет работать до тех пор, пока не будет исчерпан входной набор данных. Таким образом, генератор работает бесконечно, если ваш набор данных является бесконечно повторяющимся набором данных.
steps_per_epoch: Integer или None. Общее количество шагов (партий образцов) до объявления одной эпохи законченной и начала следующей эпохи. При обучении с использованием входных тензоров, таких как тензоры данных TensorFlow, значение по умолчанию None равно количеству выборок в вашем наборе данных, деленному на размер пакета, или 1, если это невозможно определить. Если x - это набор данных tf.data, а 'steps_per_epoch' - None, эпоха будет работать до тех пор, пока не будет исчерпан входной набор данных. При передаче бесконечно повторяющегося набора данных вы должны указать аргумент steps_per_epoch. Этот аргумент не поддерживается для входных данных массива.