gpt4 book ai didi

python - 如何将 hparams 与估算器一起使用?

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:54 31 4
gpt4 key购买 nike

记录 hparams without using Keras ,我正在按照 tf 代码 here 中的建议执行以下操作:

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,但我没有看到针对它们记录的任何指标

enter image description here

我进一步确认它们出现在 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:

经过一番谷歌搜索后,我看到了一些旧的 tf 代码,它们将 hparams 传递给 Estimator 的 params 参数,所以只是为了确保 tf2 是否在以下情况下自行记录这些 hparams鉴于,我检查了 Estimator文档上写着:

The params argument contains hyperparameters. It is passed to the model_fn, if the model_fn has a parameter named "params", and to the input functions in the same manner. Estimator only passes params along, it does not inspect it. The structure of params is therefore entirely up to the developer.

因此使用 hparams 作为参数是没有用的。

<小时/>

尝试 2:

我怀疑,由于估计器使用 tensorflow.python.summary 而不是 v2 中默认的 tf.summary,因此 v1 记录的张量可能无法访问,因此,我也尝试过使用

with tensorflow.python.summary.FileWriter(model_dir).as_default()

但是失败并出现 RuntimeError: tf.summary.FileWriter 与急切执行不兼容。请改用 tf.contrib.summary

更新:我在禁用急切执行的情况下运行了它。现在,甚至 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.

有没有办法让tensorboard读取已经记录的度量张量并将它们与hparams链接?

最佳答案

罪魁祸首似乎是

# This doesn't seem to compatible with Estimator API
hp.hparams_config(hparams=hparams_list, metrics=metrics_to_monitor)

只需调用 hparams 即可记录使用 tf.summary 记录的所有指标。然后在tensorboard中,您可以仅过滤您需要的指标,然后比较试验。

with tf.summary.create_file_writer(train_folder).as_default():
# params is a dict which contains
# { 'learning_rate': 0.001, 'distance_margin': 0.5,...}
hp.hparams(hparams=params))

关于python - 如何将 hparams 与估算器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59962253/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com