Ejemplo n.º 1
0
def init_loc_fn(site):
    value = init_to_median(site, num_samples=50)
    # we also make sure the initial sigma is not too large.
    # (otherwise we run the danger of getting stuck in bad local optima during optimization).
    if site["name"] == "sigma":
        value = 0.1 * value
    return value
Ejemplo n.º 2
0
    value = torch.randn(()).exp() * 10
    kernel = NUTS(model,
                  init_strategy=partial(init_to_value, values={"x": value}))
    kernel.setup(warmup_steps=10)
    assert_close(value, kernel.initial_params['x'].exp())


@pytest.mark.parametrize("init_strategy", [
    init_to_feasible,
    init_to_mean,
    init_to_median,
    init_to_sample,
    init_to_uniform,
    init_to_value,
    init_to_feasible(),
    init_to_mean(),
    init_to_median(num_samples=4),
    init_to_sample(),
    init_to_uniform(radius=0.1),
    init_to_value(values={"x": torch.tensor(3.)}),
    init_to_generated(
        generate=lambda: init_to_value(values={"x": torch.rand(())})),
],
                         ids=str_erase_pointers)
def test_init_strategy_smoke(init_strategy):
    def model():
        pyro.sample("x", dist.LogNormal(0, 1))

    kernel = NUTS(model, init_strategy=init_strategy)
    kernel.setup(warmup_steps=10)