Ejemplo n.º 1
0
def _HParamExperiment(hparams, metrics):
    from guild.plugins import tensorboard

    hp = tensorboard.hparams_hp_proto()
    return hp.hparams_config_pb(
        hparams=[_HParam(key, vals) for key, vals in sorted(hparams.items())],
        metrics=[hp.Metric(tag) for tag in sorted(metrics)],
    )
Ejemplo n.º 2
0
def _HParamSessionEnd(status):
    from guild.plugins import tensorboard

    hp = tensorboard.hparams_hp_proto()
    info = hp.plugin_data_pb2.SessionEndInfo(status=_Status(status))
    return hp._summary_pb(
        hp.metadata.SESSION_END_INFO_TAG,
        hp.plugin_data_pb2.HParamsPluginData(session_end_info=info),
    )
Ejemplo n.º 3
0
def _HParamSessionStart(name, hparams):
    from guild.plugins import tensorboard

    hp = tensorboard.hparams_hp_proto()
    try:
        # pylint: disable=unexpected-keyword-arg
        return hp.hparams_pb(hparams, trial_id=name)
    except TypeError:
        return _legacy_hparams_pb(hparams, name)
Ejemplo n.º 4
0
def _legacy_hparams_pb(hparams, trial_id):
    from guild.plugins import tensorboard

    hp = tensorboard.hparams_hp_proto()
    hparams = hp._normalize_hparams(hparams)
    info = hp.plugin_data_pb2.SessionStartInfo(group_name=trial_id)
    for name in sorted(hparams):
        val = hparams[name]
        if isinstance(val, bool):
            info.hparams[name].bool_value = val
        elif isinstance(val, (float, int)):
            info.hparams[name].number_value = val
        elif isinstance(val, six.string_types):
            info.hparams[name].string_value = val
        elif val is None:
            info.hparams[name].string_value = ""
        else:
            info.hparams[name].string_value = str(val)
    return hp._summary_pb(
        hp.metadata.SESSION_START_INFO_TAG,
        hp.plugin_data_pb2.HParamsPluginData(session_start_info=info),
    )
Ejemplo n.º 5
0
def _HParam(name, vals):
    """Returns an `HParam` object for flag name and known values.

    Uses real interval domain iff all values are numeric.

    Uses discrete interval iff all values are strings.

    Otherwise does not use a domain.
    """
    from guild.plugins import tensorboard

    hp = tensorboard.hparams_hp_proto()

    type = hparam_type(vals)
    if type == HPARAM_TYPE_NUMBER:
        return hp.HParam(name, hp.RealInterval(float("-inf"), float("inf")))
    elif type == HPARAM_TYPE_BOOL:
        return hp.HParam(name, hp.Discrete((True, False)))
    elif type == HPARAM_TYPE_STRING:
        return hp.HParam(name, hp.Discrete(vals))
    elif type == HPARAM_TYPE_NONE:
        return hp.HParam(name)
    else:
        assert False, type