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(а если это не эпохи сети, то чего?)) при этом не указывая количество моделей явно, из-за чего мне и не понятно, чего и сколько будет

в общем мне механизм действия непонятен, а в документации это почти не описывается.


Ответы (0 шт):