def test_sample(self): """Check whether sampling works correctly.""" seed = 5 space = Space() probs = (0.1, 0.2, 0.3, 0.4) categories = ("asdfa", 2, 3, 4) dim1 = Categorical("yolo", OrderedDict(zip(categories, probs)), shape=(2, 2)) space.register(dim1) dim2 = Integer("yolo2", "uniform", -3, 6) space.register(dim2) dim3 = Real("yolo3", "norm", 0.9) space.register(dim3) point = space.sample(seed=seed) rng = check_random_state(seed) test_point = [ dict( yolo=dim1.sample(seed=rng)[0], yolo2=dim2.sample(seed=rng)[0], yolo3=dim3.sample(seed=rng)[0], ) ] assert len(point) == len(test_point) == 1 assert len(point[0].params) == len(test_point[0]) == 3 assert np.all(point[0].params["yolo"] == test_point[0]["yolo"]) assert point[0].params["yolo2"] == test_point[0]["yolo2"] assert point[0].params["yolo3"] == test_point[0]["yolo3"] points = space.sample(2, seed=seed) rng = check_random_state(seed) points1 = dim1.sample(2, seed=rng) points2 = dim2.sample(2, seed=rng) points3 = dim3.sample(2, seed=rng) test_points = [ dict(yolo=points1[0], yolo2=points2[0], yolo3=points3[0]), dict(yolo=points1[1], yolo2=points2[1], yolo3=points3[1]), ] assert len(points) == len(test_points) == 2 for i in range(2): assert len(points[i].params) == len(test_points[i]) == 3 assert np.all(points[i].params["yolo"] == test_points[i]["yolo"]) assert points[i].params["yolo2"] == test_points[i]["yolo2"] assert points[i].params["yolo3"] == test_points[i]["yolo3"]
def test_sample(self, seed): """Check whether sampling works correctly.""" space = Space() probs = (0.1, 0.2, 0.3, 0.4) categories = ("asdfa", 2, 3, 4) dim1 = Categorical("yolo", OrderedDict(zip(categories, probs)), shape=(2, 2)) space.register(dim1) dim2 = Integer("yolo2", "uniform", -3, 6) space.register(dim2) dim3 = Real("yolo3", "norm", 0.9) space.register(dim3) point = space.sample(seed=seed) test_point = [ (dim1.sample()[0], dim2.sample()[0], dim3.sample()[0]), ] assert len(point) == len(test_point) == 1 assert len(point[0]) == len(test_point[0]) == 3 assert np.all(point[0][0] == test_point[0][0]) assert point[0][1] == test_point[0][1] assert point[0][2] == test_point[0][2] points = space.sample(2, seed=seed) points1 = dim1.sample(2) points2 = dim2.sample(2) points3 = dim3.sample(2) test_points = [ (points1[0], points2[0], points3[0]), (points1[1], points2[1], points3[1]), ] assert len(points) == len(test_points) == 2 for i in range(2): assert len(points[i]) == len(test_points[i]) == 3 assert np.all(points[i][0] == test_points[i][0]) assert points[i][1] == test_points[i][1] assert points[i][2] == test_points[i][2]
def test_probabilities_are_ok(self, seed): """Test that the probabilities given are legit using law of big numbers.""" bins = defaultdict(int) probs = (0.1, 0.2, 0.3, 0.4) categories = ('asdfa', '2', '3', '4') categories = OrderedDict(zip(categories, probs)) dim = Categorical('yolo', categories) for _ in range(500): sample = dim.sample(seed=seed)[0] bins[sample] += 1 for keys in bins.keys(): bins[keys] /= float(500) for key, value in categories.items(): assert abs(bins[key] - value) < 0.01
def test_with_dict(self, seed): """Test Categorical.__init__ with a dictionary.""" probs = (0.1, 0.2, 0.3, 0.4) categories = ('asdfa', 2, 3, 4) dim = Categorical('yolo', OrderedDict(zip(categories, probs))) samples = dim.sample(seed=seed) assert len(samples) == 1 assert samples[0] == 2 assert dim._probs == probs assert categories == dim.categories assert 2 in dim assert 0 not in dim assert dim.name == 'yolo' assert dim.type == 'categorical' assert dim.shape == ()
def test_with_tuple(self, seed): """Test Categorical.__init__ with a tuple.""" categories = ('asdfa', 2) dim = Categorical('yolo', categories) samples = dim.sample(seed=seed) assert len(samples) == 1 assert samples[0] == 'asdfa' assert dim._probs == (0.5, 0.5) assert categories == dim.categories assert 2 in dim assert 3 not in dim assert str(dim) == "Categorical(name=yolo, prior={asdfa: 0.50, 2: 0.50}, "\ "shape=(), default value=None)" assert dim.name == 'yolo' assert dim.type == 'categorical' assert dim.shape == ()