Belief Propagation Neural Networks