Ejemplo n.º 1
0
 def test_non_ints(self):
     with six.assertRaisesRegex(self, TypeError,
                                "min_value must be a float: True"):
         hp.RealInterval(True, 2.0)
     with six.assertRaisesRegex(self, TypeError,
                                "max_value must be a float: 'wat'"):
         hp.RealInterval(1.2, "wat")
Ejemplo n.º 2
0
def _create_hparams_config(searchspace):
    hparams = []

    for key, val in searchspace.names().items():
        if val == "DOUBLE":
            hparams.append(
                hp.HParam(
                    key,
                    hp.RealInterval(
                        float(searchspace.get(key)[0]), float(searchspace.get(key)[1])
                    ),
                )
            )
        elif val == "INTEGER":
            hparams.append(
                hp.HParam(
                    key,
                    hp.IntInterval(searchspace.get(key)[0], searchspace.get(key)[1]),
                )
            )
        elif val == "DISCRETE":
            hparams.append(hp.HParam(key, hp.Discrete(searchspace.get(key))))
        elif val == "CATEGORICAL":
            hparams.append(hp.HParam(key, hp.Discrete(searchspace.get(key))))

    return hparams
Ejemplo n.º 3
0
 def test_sample_uniform_unseeded(self):
     domain = hp.RealInterval(2.0, 4.0)
     with mock.patch.object(random, "uniform") as m:
         sentinel = object()
         m.return_value = sentinel
         result = domain.sample_uniform()
     self.assertIs(result, sentinel)
     m.assert_called_once_with(2.0, 4.0)
Ejemplo n.º 4
0
 def test_sample_uniform(self):
     domain = hp.RealInterval(2.0, 4.0)
     rng = mock.Mock()
     sentinel = object()
     rng.uniform.return_value = sentinel
     result = domain.sample_uniform(rng)
     self.assertIs(result, sentinel)
     rng.uniform.assert_called_once_with(2.0, 4.0)
Ejemplo n.º 5
0
def _HParam(name, vals):
    from tensorboard.plugins.hparams import summary_v2 as hp
    if _all_numbers(vals):
        min_val = float(min(vals))
        max_val = float(max(vals))
        return hp.HParam(name, hp.RealInterval(min_val, max_val))
    else:
        legal_vals = [_valid_param_val(val) for val in vals]
        return hp.HParam(name, hp.Discrete(legal_vals))
Ejemplo n.º 6
0
 def test_consistency_across_string_key_and_object_key(self):
     hparams_1 = {
         hp.HParam("optimizer", hp.Discrete(["adam", "sgd"])): "adam",
         "learning_rate": 0.02,
     }
     hparams_2 = {
         "optimizer": "adam",
         hp.HParam("learning_rate", hp.RealInterval(1e-2, 1e-1)): 0.02,
     }
     self.assert_hparams_summaries_equal(
         hp.hparams_pb(hparams_1, start_time_secs=self.start_time_secs),
         hp.hparams_pb(hparams_2, start_time_secs=self.start_time_secs),
     )
Ejemplo n.º 7
0
    def setUp(self):
        self.logdir = os.path.join(self.get_temp_dir(), "logs")
        self.hparams = {
            hp.HParam("learning_rate", hp.RealInterval(1e-2, 1e-1)):
            0.02,
            hp.HParam("dense_layers", hp.IntInterval(2, 7)):
            5,
            hp.HParam("optimizer", hp.Discrete(["adam", "sgd"])):
            "adam",
            hp.HParam("who_knows_what"):
            "???",
            hp.HParam(
                "magic",
                hp.Discrete([False, True]),
                display_name="~*~ Magic ~*~",
                description="descriptive",
            ):
            True,
            "dropout":
            0.3,
        }
        self.normalized_hparams = {
            "learning_rate": 0.02,
            "dense_layers": 5,
            "optimizer": "adam",
            "who_knows_what": "???",
            "magic": True,
            "dropout": 0.3,
        }
        self.start_time_secs = 123.45
        self.trial_id = "psl27"

        self.expected_session_start_pb = plugin_data_pb2.SessionStartInfo()
        text_format.Merge(
            """
            hparams { key: "learning_rate" value { number_value: 0.02 } }
            hparams { key: "dense_layers" value { number_value: 5 } }
            hparams { key: "optimizer" value { string_value: "adam" } }
            hparams { key: "who_knows_what" value { string_value: "???" } }
            hparams { key: "magic" value { bool_value: true } }
            hparams { key: "dropout" value { number_value: 0.3 } }
            """,
            self.expected_session_start_pb,
        )
        self.expected_session_start_pb.group_name = self.trial_id
        self.expected_session_start_pb.start_time_secs = self.start_time_secs
Ejemplo n.º 8
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 tensorboard.plugins.hparams import summary_v2 as hp

    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
Ejemplo n.º 9
0
 def test_backward_endpoints(self):
     with six.assertRaisesRegex(self, ValueError, "2.1 > 1.2"):
         hp.RealInterval(2.1, 1.2)
Ejemplo n.º 10
0
 def test_infinite_domain(self):
     inf = float("inf")
     domain = hp.RealInterval(-inf, inf)
     self.assertEqual(domain.min_value, -inf)
     self.assertEqual(domain.max_value, inf)
     self.assertEqual(domain.dtype, float)
Ejemplo n.º 11
0
 def test_singleton_domain(self):
     domain = hp.RealInterval(61.318, 61.318)
     self.assertEqual(domain.min_value, 61.318)
     self.assertEqual(domain.max_value, 61.318)
     self.assertEqual(domain.dtype, float)
Ejemplo n.º 12
0
 def test_simple(self):
     domain = hp.RealInterval(3.1, 7.7)
     self.assertEqual(domain.min_value, 3.1)
     self.assertEqual(domain.max_value, 7.7)
     self.assertEqual(domain.dtype, float)
Ejemplo n.º 13
0
    def setUp(self):
        self.logdir = os.path.join(self.get_temp_dir(), "logs")

        self.hparams = [
            hp.HParam("learning_rate", hp.RealInterval(1e-2, 1e-1)),
            hp.HParam("dense_layers", hp.IntInterval(2, 7)),
            hp.HParam("optimizer", hp.Discrete(["adam", "sgd"])),
            hp.HParam("who_knows_what"),
            hp.HParam(
                "magic",
                hp.Discrete([False, True]),
                display_name="~*~ Magic ~*~",
                description="descriptive",
            ),
        ]
        self.metrics = [
            hp.Metric("samples_per_second"),
            hp.Metric(group="train",
                      tag="batch_loss",
                      display_name="loss (train)"),
            hp.Metric(
                group="validation",
                tag="epoch_accuracy",
                display_name="accuracy (val.)",
                description="Accuracy on the _validation_ dataset.",
                dataset_type=hp.Metric.VALIDATION,
            ),
        ]
        self.time_created_secs = 1555624767.0

        self.expected_experiment_pb = api_pb2.Experiment()
        text_format.Merge(
            """
            time_created_secs: 1555624767.0
            hparam_infos {
              name: "learning_rate"
              type: DATA_TYPE_FLOAT64
              domain_interval {
                min_value: 0.01
                max_value: 0.1
              }
            }
            hparam_infos {
              name: "dense_layers"
              type: DATA_TYPE_FLOAT64
              domain_interval {
                min_value: 2
                max_value: 7
              }
            }
            hparam_infos {
              name: "optimizer"
              type: DATA_TYPE_STRING
              domain_discrete {
                values {
                  string_value: "adam"
                }
                values {
                  string_value: "sgd"
                }
              }
            }
            hparam_infos {
              name: "who_knows_what"
            }
            hparam_infos {
              name: "magic"
              type: DATA_TYPE_BOOL
              display_name: "~*~ Magic ~*~"
              description: "descriptive"
              domain_discrete {
                values {
                  bool_value: false
                }
                values {
                  bool_value: true
                }
              }
            }
            metric_infos {
              name {
                tag: "samples_per_second"
              }
            }
            metric_infos {
              name {
                group: "train"
                tag: "batch_loss"
              }
              display_name: "loss (train)"
            }
            metric_infos {
              name {
                group: "validation"
                tag: "epoch_accuracy"
              }
              display_name: "accuracy (val.)"
              description: "Accuracy on the _validation_ dataset."
              dataset_type: DATASET_VALIDATION
            }
            """,
            self.expected_experiment_pb,
        )
Ejemplo n.º 14
0
def HParam(name, vals):
    if all_numbers(vals):
        return hp.HParam(name,
                         hp.RealInterval(float(min(vals)), float(max(vals))))
    else:
        return hp.HParam(name, hp.Discrete(vals))