作者:廖蓉以 | 来源:互联网 | 2023-09-15 21:06
To use the hparams dashboard, users currently have to manually construct
hparams-specific protocol buffers and send them to file
writers (see the tutorial notebook for an example; it takes a few
dozen lines of Python code). The protobuf bindings are not particularly
idiomatic Python, and are less than pleasant to use. We should
investigate possible simplifications to this API.
For example, we could streamline the construction of the
s
for the discrete domains by allowing the user to pass Python lists, and
we can also infer the data types from the types of the elements of the
domain* (which also lets us require that the list is homogeneously
typed):
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| py
def create_experiment_summary():
api = hparams_summary # for brevity
hparams = [
api.hparam("num_units", domain=api.discrete([16, 32])),
api.hparam("dropout_rate", domain=api.interval(min=0.1, max=0.2)),
api.hparam("optimizer", domain=api.discrete(["adam", "sgd"])),
]
metrics = [
api.metric("accuracy"),
api.metric("xent", display_name="cross-entropy"),
]
experiment = api.experiment(hparams=hparams, metrics=metrics)
experiment.write(logdir=os.path.join("logs", "hparam_tuning")) |
This is just a sketch, but it’s already three times shorter than the
current demo without (imho) any loss of utility.
* It’s fine to prohibit empty domains here. If a hyperparameter has
empty domain, then the whole hyperparameter space is empty, so there can
be no runs; thus, allowing empty domains is not actually useful.
该提问来源于开源项目:tensorflow/tensorboard
Great - thanks for the work!