diff --git a/inference/dimmwitted/src/factor_graph.cc b/inference/dimmwitted/src/factor_graph.cc index 2b713d1da..f036adc74 100644 --- a/inference/dimmwitted/src/factor_graph.cc +++ b/inference/dimmwitted/src/factor_graph.cc @@ -158,6 +158,8 @@ void FactorGraph::construct_index_part(size_t v_start, size_t v_end, v.total_truthiness += item.second.truthiness; } for (size_t j = 0; j < v.cardinality; ++j) { + // catch spurious values (e.g., due to duplicate tuples from DD) + assert(value_list[j] != Variable::INVALID_VALUE); values[value_index_base] = VariableToFactor(value_list[j], truthiness_list[j], 0, 0); ++value_index_base; diff --git a/inference/dimmwitted/src/inference_result.h b/inference/dimmwitted/src/inference_result.h index afe47c40e..e20ecec06 100644 --- a/inference/dimmwitted/src/inference_result.h +++ b/inference/dimmwitted/src/inference_result.h @@ -64,8 +64,7 @@ class InferenceResult { void dump_marginals_in_text(std::ostream &text_output) const; inline void update_weight(size_t wid, double stepsize, double gradient) { - double diff = stepsize * gradient; - weight_grads[wid] += diff; + weight_grads[wid] += gradient; double weight = weight_values[wid]; switch (opts.regularization) { case REG_L2: { @@ -80,7 +79,7 @@ class InferenceResult { default: std::abort(); } - weight -= diff; + weight -= stepsize * gradient; weight_values[wid] = weight; }