keras_tuner какие параметр за что отвечают в Hyperband
Я пытаюсь с помощью Hyperband из KerasTuner подобрать оптимальные гипер-параметры для сети на keras, обычно я делал это методом keras_tuner.BayesianOptimization, с использованием которого у меня проблем нет, но эта сеть полностью обучается достаточно долго, из-за чего этот метод тратит слишком много лишнего времени на полное обучение вариантов, которые уже спустя пару эпох показывают свою неэффективность.
По этому я решил обратиться к использованию keras_tuner.Hyperband, который в такой ситуации должен быть намного выгоднее, так-как не обучает полностью каждый вариант сети, а обучает в начале лишь частично, на малом количестве эпох, и затем отсеивает какое-то количество более худших вариантов, обучая дальше лишь лучшие, и так отбор происходит какое-то количество раз.
проблема в том, что нельзя просто указать количество моделей и шагов отбора (они высчитываются алгоритмом исходя из остальных параметров), а как именно это вычисляется, в документации я понятного объяснения не нашёл, по этому прошу объяснить.
вот что я имею в виду:
# BayesianOptimization
tuner = BayesianOptimization(MyHyperModel(), objective='val_loss', max_trials=2000, directory="8.6.2_Apparel_multi-label/keras_tuner", project_name="MyBayesianOptimization_1")
tuner.search(train_gen, steps_per_epoch=89, epochs=50 validation_data=val_gen, validation_steps=22,)
# тут всё понятно: max_trials=2000 значит 2000 моделей, epochs=50 значит что каждая по 50 эпох обучается
# но вот как в huperband:
tuner = HuperBand(MyHyperModel(), objective='val_loss', max_epochs=50, factor=3, hyperband_iterations=1, directory="8.6.2_Apparel_multi-label/keras_tuner", project_name="MyHuperBand_1")
tuner.search(train_gen, steps_per_epoch=89, epochs=50 validation_data=val_gen, validation_steps=22, callbacks=callback_early_stoping)
# как видно, тут ты выставляешь в тюнере только максимум эпох (max_epochs=50), фактор по которому что-то множится (factor=3) и количество раз повторения полного процесса вообще (hyperband_iterations=1),
# при этом так-же указывая в search количество эпох (epochs=50)(хотя они уже были указанны в tuner(а если это не эпохи сети, то чего?)) при этом не указывая количество моделей явно, из-за чего мне и не понятно, чего и сколько будет
в общем мне механизм действия непонятен, а в документации это почти не описывается.