Я ищу пакет настройки гиперпараметров для кода, написанного непосредственно в Tensorflow (а не в Keras или Tflearn). Не могли бы вы сделать какое-нибудь предложение?
Настройка гиперпараметров для Tensorflow
Ответы (6)
Обычно вам не нужно связывать логику оптимизации гиперпараметров с оптимизированной моделью (если логика оптимизации гиперпараметров не зависит от типа модели, которую вы обучаете, и в этом случае вам нужно будет сообщить нам немного больше). Для этой задачи доступно несколько инструментов и пакетов. Вот хорошая статья по этой теме, и здесь это более практичный пост в блоге с примерами.
- hyperopt реализует случайный поиск и оптимизацию оценщиков дерева парзенов.
- Scikit-Optimize реализует несколько других, включая байесовскую оптимизацию гауссовского процесса.
- SigOpt - удобный сервис (платный, но с бесплатным уровнем и дополнительными надбавками для студентов и исследователей) для оптимизации гиперпараметров. Он основан на MOE Yelp с открытым исходным кодом (хотя опубликованная версия, похоже, не сильно обновляется ) и теоретически может использоваться сам по себе, хотя для этого потребуются дополнительные усилия.
- Spearmint - это тоже часто упоминаемый пакет, также с открытым исходным кодом, но не бесплатный для коммерческих целей (хотя вы можете вернуться на более старую версию с меньшими ограничениями). Он выглядит неплохо, но не очень активно, а доступная версия несовместима с Python 3 (хотя для исправления этого были отправлены запросы на вытягивание).
- BayesOpt кажется золотым стандартом байесовской оптимизации, но в основном это C ++, а интерфейс Python - нет. выглядят очень задокументированными.
Из них я только действительно (то есть с реальной проблемой) использовал hyperopt с TensorFlow, и это не потребовало особых усилий. API в некоторых точках выглядит немного странно, а документация не очень тщательна, но он действительно работает и, похоже, находится в активной разработке, и, возможно, появятся дополнительные алгоритмы оптимизации и адаптации (например, специально для нейронных сетей). Однако, как было предложено в ранее связанном сообщении блога, Scikit-Optimize, вероятно, так же хорош, а SigOpt выглядит довольно простым в использовании, если он вам подходит.
Я хотел бы добавить еще одну библиотеку в список @ jdehesa, которую я применил в своих исследованиях, в частности, с tenorflow. Это гипер-движок с лицензией Apache 2.0.
Он также реализует байесовскую оптимизацию гауссовского процесса и некоторые другие методы, такие как прогнозирование кривой обучения, которые экономят много времени.
Вы можете попробовать Ray Tune, простую библиотеку для масштабирования поиска по гиперпараметрам. Я в основном использую его для обучения модели Tensorflow, но он не зависит от фреймворка - без проблем работает с PyTorch, Keras и т. Д. Вот страница документации - ray.readthedocs.io/en/latest/tune.html
Вы можете использовать его для запуска распределенных версий современных алгоритмов, таких как HyperBand или байесовская оптимизация примерно в 10 строках кода.
В качестве примера одновременного выполнения 4 параллельных вычислений:
import ray
import ray.tune as tune
from ray.tune.hyperband import HyperBandScheduler
def train_model(config, reporter): # add the reporter parameter
model = build_tf_model(config["alpha"], config["beta"])
loss = some_loss_function(model)
optimizer = tf.AdamOptimizer(loss)
for i in range(20):
optimizer.step()
stats = get_statistics()
reporter(timesteps_total=i,
mean_accuracy=stats["accuracy"])
ray.init(num_cpus=4)
tune.run(train_model,
name="my_experiment",
stop={"mean_accuracy": 100},
config={
"alpha": tune.grid_search([0.2, 0.4, 0.6]),
"beta": tune.grid_search([1, 2])
},
scheduler=HyperBandScheduler(reward_attr="mean_accuracy"))
Вам также не нужно изменять свой код, если вы хотите запустить этот сценарий в кластере.
Отказ от ответственности: я работаю над этим проектом - дайте мне знать, если у вас есть отзывы!
model
после вызова tune.run_experiments(...)
?
- person Karl; 15.03.2019
analysis.get_best_config
.
- person richliaw; 14.08.2019
Я не уверен, что это также те параметры, которые вам нужны, но вы упомянули гиперпараметры TensorFlow, поэтому я думаю, что могу предложить некоторые.
Попробуйте клонировать этот репозиторий, чтобы получить нужные скрипты;
git clone https://github.com/googlecodelabs/tensorflow-for-poets-2 < / а>
и в папке Master вызовите командную строку и запустите эту строку;
python -m scripts.retrain -h
чтобы получить список необязательных аргументов.
Источник: https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#6
Я обнаружил, что sci-kit optimize очень прост в использовании для байесовской оптимизации гиперметров, и он работает с любым API тензорного потока (оценщик, настраиваемый оценщик, ядро, keras и т. Д.)
https://stackoverflow.com/a/53582472/2218905
Вы можете использовать вариационный вывод (байесовский) как облако точек над пространством оптимизации; настройка гиперпараметров была бы намного лучше. Вероятность тензорного потока была бы подходом.