예제 #1
0
def test_expr_to_config():

    z = hp.randint("z", 10)
    a = hp.choice(
        "a",
        [
            hp.uniform("b", -1, 1) + z,
            {
                "c":
                1,
                "d":
                hp.choice("d", [
                    3 + hp.loguniform("c", 0, 1), 1 + hp.loguniform("e", 0, 1)
                ]),
            },
        ],
    )

    expr = as_apply((a, z))

    hps = {}
    expr_to_config(expr, (True, ), hps)

    for label, dct in list(hps.items()):
        print(label)
        print("  dist: %s(%s)" % (
            dct["node"].name,
            ", ".join(map(str, [ii.eval() for ii in dct["node"].inputs()])),
        ))
        if len(dct["conditions"]) > 1:
            print("  conditions (OR):")
            for condseq in dct["conditions"]:
                print("    ", " AND ".join(map(str, condseq)))
        elif dct["conditions"]:
            for condseq in dct["conditions"]:
                print("  conditions :", " AND ".join(map(str, condseq)))

    assert hps["a"]["node"].name == "randint"
    assert hps["b"]["node"].name == "uniform"
    assert hps["c"]["node"].name == "loguniform"
    assert hps["d"]["node"].name == "randint"
    assert hps["e"]["node"].name == "loguniform"
    assert hps["z"]["node"].name == "randint"

    assert set([(True, EQ("a", 0))]) == set([(True, EQ("a", 0))])
    assert hps["a"]["conditions"] == set([(True, )])
    assert hps["b"]["conditions"] == set([(True, EQ("a", 0))
                                          ]), hps["b"]["conditions"]
    assert hps["c"]["conditions"] == set([(True, EQ("a", 1), EQ("d", 0))])
    assert hps["d"]["conditions"] == set([(True, EQ("a", 1))])
    assert hps["e"]["conditions"] == set([(True, EQ("a", 1), EQ("d", 1))])
    assert hps["z"]["conditions"] == set([(True, ), (True, EQ("a", 0))])
def test_expr_to_config():

    z = hp.randint('z', 10)
    a = hp.choice('a', [
        hp.uniform('b', -1, 1) + z, {
            'c':
            1,
            'd':
            hp.choice(
                'd',
                [3 + hp.loguniform('c', 0, 1), 1 + hp.loguniform('e', 0, 1)])
        }
    ])

    expr = as_apply((a, z))

    hps = {}
    expr_to_config(expr, (True, ), hps)

    for label, dct in hps.items():
        print label
        print '  dist: %s(%s)' % (dct['node'].name, ', '.join(
            map(str, [ii.eval() for ii in dct['node'].inputs()])))
        if len(dct['conditions']) > 1:
            print '  conditions (OR):'
            for condseq in dct['conditions']:
                print '    ', ' AND '.join(map(str, condseq))
        elif dct['conditions']:
            for condseq in dct['conditions']:
                print '  conditions :', ' AND '.join(map(str, condseq))

    assert hps['a']['node'].name == 'randint'
    assert hps['b']['node'].name == 'uniform'
    assert hps['c']['node'].name == 'loguniform'
    assert hps['d']['node'].name == 'randint'
    assert hps['e']['node'].name == 'loguniform'
    assert hps['z']['node'].name == 'randint'

    assert set([(True, EQ('a', 0))]) == set([(True, EQ('a', 0))])
    assert hps['a']['conditions'] == set([(True, )])
    assert hps['b']['conditions'] == set([(True, EQ('a', 0))
                                          ]), hps['b']['conditions']
    assert hps['c']['conditions'] == set([(True, EQ('a', 1), EQ('d', 0))])
    assert hps['d']['conditions'] == set([(True, EQ('a', 1))])
    assert hps['e']['conditions'] == set([(True, EQ('a', 1), EQ('d', 1))])
    assert hps['z']['conditions'] == set([(True, ), (True, EQ('a', 0))])