Я обучаю модель CNN, используя tf.keras
, проходя обучение и проверку генераторов следующим образом:
model.fit(
x=training_data_generator,
validation_data=validation_data_generator,
epochs=n_epochs,
use_multiprocessing=False,
max_queue_size=100,
workers=50
)
Генераторы основаны на tf.keras.Sequence
.
Проблема в том, что мой набор данных огромен. Обучение на одну эпоху занимает около дня (несмотря на обучение на двух GPU Titan RTX), а проверка после каждой эпохи занимает несколько часов.
Во время обучения я вижу отображаемый прогресс, но во время проверки все, что я вижу, - последнее снимок индикатора хода обучения:
130339/130340 [==============================] - 147432s 1s/step
до тех пор, пока проверка не закончится и, наконец, я увижу свою точность проверки, потери и т. д. c.
Is Есть ли способ отобразить индикатор выполнения для проверки?
Я думаю сделать что-то вроде этого:
for epoch in range(n_epochs):
model.fit(
x=training_data_generator,
epochs=1,
use_multiprocessing=False,
max_queue_size=100,
workers=50
)
validation_results = model.evaluate(
x=validation_data_generator,
use_multiprocessing=False,
max_queue_size=100,
workers=50
)
print(validation_results)
Другой вариант, который я рассматривал, - это создать собственный обратный вызов это проверяет модель on_epoch_end
, но это кажется очень нестандартным.
Есть ли лучший подход к этому?