pyro/infer/tracegraph_elbo.py
Killed 107 out of 143 mutantsSurvived
Survived mutation testing. These mutants show holes in your test suite.Mutant 51
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -22,7 +22,7 @@
"""
# XXX default for baseline_beta currently set here
options_dict = site["infer"].get("baseline", {}).copy()
- options_tuple = (options_dict.pop('nn_baseline', None),
+ options_tuple = (options_dict.pop('XXnn_baselineXX', None),
options_dict.pop('nn_baseline_input', None),
options_dict.pop('use_decaying_avg_baseline', False),
options_dict.pop('baseline_beta', 0.90),
Mutant 52
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -23,7 +23,7 @@
# XXX default for baseline_beta currently set here
options_dict = site["infer"].get("baseline", {}).copy()
options_tuple = (options_dict.pop('nn_baseline', None),
- options_dict.pop('nn_baseline_input', None),
+ options_dict.pop('XXnn_baseline_inputXX', None),
options_dict.pop('use_decaying_avg_baseline', False),
options_dict.pop('baseline_beta', 0.90),
options_dict.pop('baseline_value', None))
Mutant 54
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -24,7 +24,7 @@
options_dict = site["infer"].get("baseline", {}).copy()
options_tuple = (options_dict.pop('nn_baseline', None),
options_dict.pop('nn_baseline_input', None),
- options_dict.pop('use_decaying_avg_baseline', False),
+ options_dict.pop('use_decaying_avg_baseline', True),
options_dict.pop('baseline_beta', 0.90),
options_dict.pop('baseline_value', None))
if options_dict:
Mutant 56
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -25,7 +25,7 @@
options_tuple = (options_dict.pop('nn_baseline', None),
options_dict.pop('nn_baseline_input', None),
options_dict.pop('use_decaying_avg_baseline', False),
- options_dict.pop('baseline_beta', 0.90),
+ options_dict.pop('baseline_beta', 1.9),
options_dict.pop('baseline_value', None))
if options_dict:
raise ValueError("Unrecognized baseline options: {}".format(options_dict.keys()))
Mutant 57
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -26,7 +26,7 @@
options_dict.pop('nn_baseline_input', None),
options_dict.pop('use_decaying_avg_baseline', False),
options_dict.pop('baseline_beta', 0.90),
- options_dict.pop('baseline_value', None))
+ options_dict.pop('XXbaseline_valueXX', None))
if options_dict:
raise ValueError("Unrecognized baseline options: {}".format(options_dict.keys()))
return options_tuple
Mutant 59
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -36,7 +36,7 @@
# XXX should the average baseline be in the param store as below?
- baseline = 0.0
+ baseline = 1.0
baseline_loss = 0.0
(nn_baseline, nn_baseline_input, use_decaying_avg_baseline, baseline_beta,
Mutant 61
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -37,7 +37,7 @@
# XXX should the average baseline be in the param store as below?
baseline = 0.0
- baseline_loss = 0.0
+ baseline_loss = 1.0
(nn_baseline, nn_baseline_input, use_decaying_avg_baseline, baseline_beta,
baseline_value) = _get_baseline_options(guide_site)
Mutant 65
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -42,7 +42,7 @@
(nn_baseline, nn_baseline_input, use_decaying_avg_baseline, baseline_beta,
baseline_value) = _get_baseline_options(guide_site)
- use_nn_baseline = nn_baseline is not None
+ use_nn_baseline = None
use_baseline_value = baseline_value is not None
use_baseline = use_nn_baseline or use_decaying_avg_baseline or use_baseline_value
Mutant 67
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -43,7 +43,7 @@
baseline_value) = _get_baseline_options(guide_site)
use_nn_baseline = nn_baseline is not None
- use_baseline_value = baseline_value is not None
+ use_baseline_value = None
use_baseline = use_nn_baseline or use_decaying_avg_baseline or use_baseline_value
Mutant 71
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -47,7 +47,7 @@
use_baseline = use_nn_baseline or use_decaying_avg_baseline or use_baseline_value
- assert(not (use_nn_baseline and use_baseline_value)), \
+ assert(not (use_nn_baseline or use_baseline_value)), \
"cannot use baseline_value and nn_baseline simultaneously"
if use_decaying_avg_baseline:
dc_shape = downstream_cost.shape
Mutant 73
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -51,7 +51,7 @@
"cannot use baseline_value and nn_baseline simultaneously"
if use_decaying_avg_baseline:
dc_shape = downstream_cost.shape
- param_name = "__baseline_avg_downstream_cost_" + node
+ param_name = "XX__baseline_avg_downstream_cost_XX" + node
with torch.no_grad():
avg_downstream_cost_old = pyro.param(param_name,
torch.zeros(dc_shape, device=guide_site['value'].device))
Mutant 75
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -51,7 +51,7 @@
"cannot use baseline_value and nn_baseline simultaneously"
if use_decaying_avg_baseline:
dc_shape = downstream_cost.shape
- param_name = "__baseline_avg_downstream_cost_" + node
+ param_name = None
with torch.no_grad():
avg_downstream_cost_old = pyro.param(param_name,
torch.zeros(dc_shape, device=guide_site['value'].device))
Mutant 85
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -58,7 +58,7 @@
avg_downstream_cost_new = (1 - baseline_beta) * downstream_cost + \
baseline_beta * avg_downstream_cost_old
pyro.get_param_store()[param_name] = avg_downstream_cost_new
- baseline += avg_downstream_cost_old
+ baseline = avg_downstream_cost_old
if use_nn_baseline:
# block nn_baseline_input gradients except in baseline loss
baseline += nn_baseline(detach_iterable(nn_baseline_input))
Mutant 87
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -65,7 +65,7 @@
elif use_baseline_value:
# it's on the user to make sure baseline_value tape only points to baseline params
baseline += baseline_value
- if use_nn_baseline or use_baseline_value:
+ if use_nn_baseline and use_baseline_value:
# accumulate baseline loss
baseline_loss += torch.pow(downstream_cost.detach() - baseline, 2.0).sum()
Mutant 105
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -100,7 +100,7 @@
nodes_included_in_sum = set([node])
downstream_guide_cost_nodes[node] = set([node])
# make more efficient by ordering children appropriately (higher children first)
- children = [(k, -ordered_guide_nodes_dict[k]) for k in guide_trace.successors(node)]
+ children = [(k, +ordered_guide_nodes_dict[k]) for k in guide_trace.successors(node)]
sorted_children = sorted(children, key=itemgetter(1))
for child, _ in sorted_children:
child_cost_nodes = downstream_guide_cost_nodes[child]
Mutant 119
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -145,7 +145,7 @@
# terms depending on the parameterization. This reduces the variance of the
# gradient under some conditions.
- elbo = 0.0
+ elbo = 1.0
surrogate_elbo = 0.0
# Bring log p(x, z|...) terms into both the ELBO and the surrogate
Mutant 121
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -146,7 +146,7 @@
# gradient under some conditions.
elbo = 0.0
- surrogate_elbo = 0.0
+ surrogate_elbo = 1.0
# Bring log p(x, z|...) terms into both the ELBO and the surrogate
for name, site in model_trace.nodes.items():
Mutant 126
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -151,7 +151,7 @@
# Bring log p(x, z|...) terms into both the ELBO and the surrogate
for name, site in model_trace.nodes.items():
if site["type"] == "sample":
- elbo += site["log_prob_sum"]
+ elbo = site["log_prob_sum"]
surrogate_elbo += site["log_prob_sum"]
# Bring log q(z|...) terms into the ELBO, and effective terms into the
Mutant 127
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -151,7 +151,7 @@
# Bring log p(x, z|...) terms into both the ELBO and the surrogate
for name, site in model_trace.nodes.items():
if site["type"] == "sample":
- elbo += site["log_prob_sum"]
+ elbo -= site["log_prob_sum"]
surrogate_elbo += site["log_prob_sum"]
# Bring log q(z|...) terms into the ELBO, and effective terms into the
Mutant 135
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -161,7 +161,7 @@
# site[`score_parts`] are used.
for name, site in guide_trace.nodes.items():
if site["type"] == "sample":
- elbo -= site["log_prob_sum"]
+ elbo = site["log_prob_sum"]
entropy_term = site["score_parts"].entropy_term
# For fully reparameterized terms, this entropy_term is log q(z|...)
# For fully non-reparameterized terms, it is zero
Mutant 136
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -161,7 +161,7 @@
# site[`score_parts`] are used.
for name, site in guide_trace.nodes.items():
if site["type"] == "sample":
- elbo -= site["log_prob_sum"]
+ elbo += site["log_prob_sum"]
entropy_term = site["score_parts"].entropy_term
# For fully reparameterized terms, this entropy_term is log q(z|...)
# For fully non-reparameterized terms, it is zero
Mutant 143
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -175,7 +175,7 @@
# construct all the reinforce-like terms.
# we include only downstream costs to reduce variance
# optionally include baselines to further reduce variance
- surrogate_elbo = 0.0
+ surrogate_elbo = 1.0
baseline_loss = 0.0
for node in non_reparam_nodes:
guide_site = guide_trace.nodes[node]
Mutant 145
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -176,7 +176,7 @@
# we include only downstream costs to reduce variance
# optionally include baselines to further reduce variance
surrogate_elbo = 0.0
- baseline_loss = 0.0
+ baseline_loss = 1.0
for node in non_reparam_nodes:
guide_site = guide_trace.nodes[node]
downstream_cost = downstream_costs[node]
Mutant 154
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -186,7 +186,7 @@
if use_baseline:
downstream_cost = downstream_cost - baseline
- baseline_loss = baseline_loss + baseline_loss_term
+ baseline_loss = baseline_loss - baseline_loss_term
surrogate_elbo += (score_function * downstream_cost.detach()).sum()
Mutant 164
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -257,7 +257,7 @@
torch_backward(surrogate_loss, retain_graph=self.retain_graph)
elbo = torch_item(elbo)
- loss = -elbo
+ loss = +elbo
warn_if_nan(loss, "loss")
return loss
Mutant 166
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -258,7 +258,7 @@
elbo = torch_item(elbo)
loss = -elbo
- warn_if_nan(loss, "loss")
+ warn_if_nan(loss, "XXlossXX")
return loss
def _loss_and_surrogate_loss(self, model, guide, args, kwargs):
Mutant 167
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -263,7 +263,7 @@
def _loss_and_surrogate_loss(self, model, guide, args, kwargs):
- loss = 0.0
+ loss = 1.0
surrogate_loss = 0.0
for model_trace, guide_trace in self._get_traces(model, guide, args, kwargs):
Mutant 169
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -264,7 +264,7 @@
def _loss_and_surrogate_loss(self, model, guide, args, kwargs):
loss = 0.0
- surrogate_loss = 0.0
+ surrogate_loss = 1.0
for model_trace, guide_trace in self._get_traces(model, guide, args, kwargs):
Mutant 172
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -269,7 +269,7 @@
for model_trace, guide_trace in self._get_traces(model, guide, args, kwargs):
lp, slp = self._loss_and_surrogate_loss_particle(model_trace, guide_trace)
- loss += lp
+ loss = lp
surrogate_loss += slp
loss /= self.num_particles
Mutant 173
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -269,7 +269,7 @@
for model_trace, guide_trace in self._get_traces(model, guide, args, kwargs):
lp, slp = self._loss_and_surrogate_loss_particle(model_trace, guide_trace)
- loss += lp
+ loss -= lp
surrogate_loss += slp
loss /= self.num_particles
Mutant 174
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -270,7 +270,7 @@
lp, slp = self._loss_and_surrogate_loss_particle(model_trace, guide_trace)
loss += lp
- surrogate_loss += slp
+ surrogate_loss = slp
loss /= self.num_particles
surrogate_loss /= self.num_particles
Mutant 176
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -272,7 +272,7 @@
loss += lp
surrogate_loss += slp
- loss /= self.num_particles
+ loss = self.num_particles
surrogate_loss /= self.num_particles
return loss, surrogate_loss
Mutant 177
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -272,7 +272,7 @@
loss += lp
surrogate_loss += slp
- loss /= self.num_particles
+ loss *= self.num_particles
surrogate_loss /= self.num_particles
return loss, surrogate_loss
Mutant 179
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -273,7 +273,7 @@
surrogate_loss += slp
loss /= self.num_particles
- surrogate_loss /= self.num_particles
+ surrogate_loss *= self.num_particles
return loss, surrogate_loss
Mutant 181
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -281,7 +281,7 @@
# compute elbo for reparameterized nodes
elbo, surrogate_elbo = _compute_elbo_reparam(model_trace, guide_trace)
- baseline_loss = 0.0
+ baseline_loss = 1.0
# the following computations are only necessary if we have non-reparameterizable nodes
non_reparam_nodes = set(guide_trace.nonreparam_stochastic_nodes)
Mutant 189
--- pyro/infer/tracegraph_elbo.py
+++ pyro/infer/tracegraph_elbo.py
@@ -292,7 +292,7 @@
downstream_costs)
surrogate_elbo += surrogate_elbo_term
- surrogate_loss = -surrogate_elbo + baseline_loss
+ surrogate_loss = -surrogate_elbo - baseline_loss
return elbo, surrogate_loss