Bayesian Neural Network captures the mean response but not the variance in the training data

The true weights are the ones you used to generate the data (which your model should be able to recover). For instance in the code above you added a noise with a standard deviation of 1 to your final output, that’s why sigma should be around 1.

Or did I misunderstand that you are testing on data you generated yourself?