Чтобы зарегистрировать hparams без использования Keras , я делаю следующее, как предложено в коде tf здесь :
with tf.summary.create_file_writer(model_dir).as_default():
hp_learning_rate = hp.HParam("learning_rate", hp.RealInterval(0.00001, 0.1))
hp_distance_margin = hp.HParam("distance_margin", hp.RealInterval(0.1, 1.0))
hparams_list = [
hp_learning_rate,
hp_distance_margin
]
metrics_to_monitor = [
hp.Metric("metrics_standalone/auc", group="validation"),
hp.Metric("loss", group="train", display_name="training loss"),
]
hp.hparams_config(hparams=hparams_list, metrics=metrics_to_monitor)
hparams = {
hp_learning_rate: params.learning_rate,
hp_distance_margin: params.distance_margin,
}
hp.hparams(hparams)
Обратите внимание, что params
здесь есть словарь, который я передам оценщику.
Затем я тренирую оценщик, как обычно,
config = tf.estimator.RunConfig(model_dir=params.model_dir)
estimator = tf.estimator.Estimator(model_fn, params=params, config=config)
train_spec = tf.estimator.TrainSpec(...)
eval_spec = tf.estimator.EvalSpec(...)
tf.estimator.train_and_evaluate(estimator, train_spec=train_spec, eval_spec=eval_spec)
После обучения, когда я запускаю тензорную доску, у меня есть hparams зарегистрировано, но я не вижу никаких метрик, зарегистрированных против них
Я также подтвердил, что они отображаются на странице scalars
с тем же тегом имя для поезда и валидации, т.е. .
и ./eval
, но на странице hparams не отображаются эти зарегистрированные тензоры.
Как использовать hparams с оценщиками?
Я использую
tensorboard 2.1.0
tensorflow 2.1.0
tensorflow-estimator 2.1.0
tensorflow-metadata 0.15.2
на Python 3.7.5
Попытка 1:
После некоторого поиска в Google Я видел более старый tf-код, в котором они передавали hparams
в params
аргумент Estimator, так что просто чтобы убедиться, что tf2 записывает эти hparams сам по себе, я проверил th e Оценщик документов и он говорит:
Аргумент params
содержит гиперпараметры. Он передается в model_fn
, если model_fn
имеет параметр с именем «params», и в функции ввода аналогичным образом. Estimator
только передает параметры, но не проверяет их. Поэтому структура params
полностью зависит от разработчика.
Поэтому использование hparams в качестве параметров не будет полезным.
Попытка 2:
Я сомневаюсь, что, поскольку оценщики используют tensorflow.python.summary
вместо tf.summary
, который является значением по умолчанию в v2, тензоры, зарегистрированные в v1, вероятно, были недоступны, и поэтому я также попытался использовать
with tensorflow.python.summary.FileWriter(model_dir).as_default()
Однако это не удалось с RuntimeError: tf.summary.FileWriter is not compatible with eager execution. Use tf.contrib.summary instead
.
Обновление : я запустил его с отключенным нетерпением. Теперь даже начальное ведение журнала hparam не произошло. В тензорной доске не было вкладки hparams
, так как она завершилась с ошибкой
E0129 13:03:07.656290 21584 hparams_plugin.py:104] HParams error: Can't find an HParams-plugin experiment data in the log directory. Note that it takes some time to scan the log directory; if you just started Tensorboard it could be that we haven't finished scanning it yet. Consider trying again in a few seconds.
Есть ли способ заставить тензорную доску читать уже записанные метри c тензоры и связать их с помощью hparams?