Hello @eb8680_2
I am running the code for boosting following is my guide function.
Blockquote
def guide(X_data, index):
print(X_data.shape)
features = X_data.shape[1]
X_data = X_data.view(-1, features)
n_X_data = X_data.size(0)
a1_mean = pyro.param(‘a1_mean_{}’.format(index), 0.01 * torch.randn(n_X_data, 128))
a1_scale = pyro.param(‘a1_scale_{}’.format(index), 0.1 * torch.ones(n_X_data, 128),
constraint=constraints.greater_than(0.01))
a1_dropout = pyro.param(‘a1_dropout_{}’.format(index), torch.tensor(0.25),
constraint=constraints.interval(0.1, 1.0))
a2_mean = pyro.param(‘a2_mean_{}’.format(index), 0.01 * torch.randn(128 + 1, 128))
a2_scale = pyro.param(‘a2_scale_{}’.format(index), 0.1 * torch.ones(128 + 1, 128),
constraint=constraints.greater_than(0.01))
a2_dropout = pyro.param(‘a2_dropout_{}’.format(index), torch.tensor(1.0),
constraint=constraints.interval(0.1, 1.0))
a3_mean = pyro.param(‘a3_mean_{}’.format(index), 0.01 * torch.randn(128 + 1, 128))
a3_scale = pyro.param(‘a3_scale_{}’.format(index), 0.1 * torch.ones(128 + 1, 128),
constraint=constraints.greater_than(0.01))
a3_dropout = pyro.param(‘a3_dropout_{}’.format(index), torch.tensor(1.0),
constraint=constraints.interval(0.1, 1.0))
a4_mean = pyro.param(‘a4_mean_{}’.format(index), 0.01 * torch.randn(128 + 1, 2))
a4_scale = pyro.param(‘a4_scale_{}’.format(index), 0.1 * torch.ones(128 + 1, 2),
constraint=constraints.greater_than(0.01))
# Sample latent values using the variational parameters that are set-up above.
# Notice how there is no conditioning on labels in the guide!
with pyro.plate(‘data’, size=n_X_data):
h1 = pyro.sample(‘h1’, hnn(X_data, a1_mean, a1_scale,
non_linearity=nnf.leaky_relu,
KL_factor=kl_factor))
h2 = pyro.sample(‘h2’, hnn(h1, a2_mean, a2_scale,
non_linearity=nnf.leaky_relu,
KL_factor=kl_factor))
h3 = pyro.sample(‘h3’, hnn(h2, a3_mean, a3_scale,
non_linearity=nnf.leaky_relu,
KL_factor=kl_factor))
logits = pyro.sample(‘logits’, hnn(h3, a4_mean, a4_scale,
non_linearity=lambda x: torch.sigmoid(x),
KL_factor=kl_factor,
include_hidden_bias=False))
I am getting following error
Blockquote
Traceback (most recent call last):
File “New_boosting.py”, line 280, in
boosting_bbvi()
File “New_boosting.py”, line 238, in boosting_bbvi
loss = svi.step(data,labels, approximation=wrapped_approximation)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/infer/svi.py”, line 99, in step
loss = self.loss_and_grads(self.model, self.guide, *args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/infer/svi.py”, line 58, in _loss_and_grads
loss_val = loss(*args, **kwargs)
File “New_boosting.py”, line 187, in relbo
loss_fn = elbo.differentiable_loss(model, traced_guide, *args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/infer/trace_elbo.py”, line 108, in differentiable_loss
for model_trace, guide_trace in self._get_traces(model, guide, *args, **kwargs):
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/infer/elbo.py”, line 168, in _get_traces
yield self._get_trace(model, guide, *args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/infer/trace_elbo.py”, line 52, in _get_trace
“flat”, self.max_plate_nesting, model, guide, *args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/infer/enum.py”, line 42, in get_importance_trace
guide_trace = poutine.trace(guide, graph_type=graph_type).get_trace(*args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/poutine/trace_messenger.py”, line 169, in get_trace
self(*args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/poutine/trace_messenger.py”, line 147, in call
ret = self.fn(*args, **kwargs)
File “/home/pranav/.local/lib/python3.6/site-packages/pyro/poutine/trace_messenger.py”, line 147, in call
ret = self.fn(*args, **kwargs)
TypeError: guide() got multiple values for argument ‘index’