print(sample)

# Print samples from single variable
x_sample = x.get_sample(10)
print(x_sample)

# Print samples conditional on an input
in_sample = model.get_sample(10, input_values={mu: 100.})
print(in_sample)

# # Generate data
data = x_real._get_sample(number_samples=50)

# Observe data
x.observe(data[x_real][:, 0, :])

# Variational model
Qnu = LogNormalVariable(0., 1., "nu", learnable=True)
Qmu = NormalVariable(0., 1., "mu", learnable=True)
model.set_posterior_model(ProbabilisticModel([Qmu, Qnu]))

# Inference
inference.stochastic_variational_inference(model,
                                           number_iterations=100,
                                           number_samples=50,
                                           optimizer=chainer.optimizers.Adam(0.1))
loss_list = model.diagnostics["loss curve"]

# print posterior sample
post_samples = model.get_posterior_sample(10)
print(post_samples)
Exemple #2
0
#Generate data
data = y.get_sample(20, input_values={z1: 1, z2: 0})
data.hist(bins=20)
plt.show()

#Observe data
y.observe(data)

#Variational Model
Qz1 = BernulliVariable(logits=0., name="z1", learnable=True)
Qz2 = BernulliVariable(logits=0., name="z2", learnable=True)
variational_model = ProbabilisticModel([Qz1, Qz2])
model.set_posterior_model(variational_model)

# Joint-contrastive inference
inference.perform_inference(
    model,
    inference_method=ReverseKL(gradient_estimator=Taylor1Estimator),
    number_iterations=600,
    number_samples=20,
    optimizer="SGD",
    lr=0.001)
loss_list = model.diagnostics["loss curve"]

#Plot results
plt.plot(loss_list)
plt.show()

#Plot posterior
model.get_posterior_sample(200).hist(bins=20)
plt.show()
# Observe data
noise_level = 0.2
data = np.sin(2 * np.pi * 0.4 * x_range) + noise_level * np.random.normal(
    0., 1., (1, num_datapoints))
y.observe(data)

#Variational Model
Qf = Normal(loc=np.zeros((num_datapoints, )),
            scale=2.,
            name="f(x)",
            learnable=True)
variational_model = ProbabilisticModel([Qf])
model.set_posterior_model(variational_model)

# Inference
inference.perform_inference(model,
                            number_iterations=2000,
                            number_samples=20,
                            optimizer='SGD',
                            lr=0.00001)
loss_list = model.diagnostics["loss curve"]
plt.plot(loss_list)
plt.show()

# Posterior
posterior_samples = model.get_posterior_sample(8000)["f(x)"]
posterior_mean = posterior_samples.mean()
plt.plot(x_range, posterior_mean)
plt.scatter(x_range, data, color="k")
plt.show()