Bayesian methods provide an approach to quantify uncertainty of prediction in deep neural networks. In order to do so, in this framework, we replace the deterministic weights by probability distributions, which helps in incorporating uncertainty in neural networks [1]}. Originally this idea was only used to prevent overfitting, but was observed to also increase variability of outputs in the extrapolated region. In order to suitably control the level of introduced perturbations to parameters, we use Bayesian Inference. This gives us a formal theoretical framework, allowing us to apply suitable computational techniques (VI) to efficiently training networks and predicting results. The input of a network remains the same, but some of model parameters become probability distributions (stochastic), and for that reason also the output of network becomes a distribution over possible outputs. As per the standard Bayesian approach, we specify a prior distribution \(P(\mathbf {w})\)  over parameters, we consider \(\mathcal {D}=\lbrace ({\bf f}_1,{\bf u}_1),...,({\bf f}_N,{\bf u}_N)\rbrace \)  as the given training dataset, then for a new vector \({\bf f}^*\) , prediction \({\bf u}^*\)  is given by
\(P({\bf u}^{*}|{\bf f}^{*},\mathcal {D}) = \int P({\bf u}^{*}|{\bf f}^{*},\mathbf {w})\cdot P(\mathbf {w}|\mathcal {D}) \text{d}\mathbf {w}\) 
