Python 在计算后验概率时,使用参数(比如w_μ)和使用参数。数据(w_μ。数据)会有不同吗?
我试图通过Backprop实现Bayes。在计算后验概率时,如果我使用参数作为输入,而使用参数数据作为输入,则结果精度会发生剧烈变化Python 在计算后验概率时,使用参数(比如w_μ)和使用参数。数据(w_μ。数据)会有不同吗?,python,neural-network,pytorch,bayesian,Python,Neural Network,Pytorch,Bayesian,我试图通过Backprop实现Bayes。在计算后验概率时,如果我使用参数作为输入,而使用参数数据作为输入,则结果精度会发生剧烈变化 self.w_post = Normal(self.w_mu.data, torch.log(1+torch.exp(self.w_rho))) self.b_post = Normal(self.b_mu.data, torch.log(1+torch.exp(self.b_rho))) self.log_post = self.w_po
self.w_post = Normal(self.w_mu.data, torch.log(1+torch.exp(self.w_rho)))
self.b_post = Normal(self.b_mu.data, torch.log(1+torch.exp(self.b_rho)))
self.log_post = self.w_post.log_prob(self.w).sum() + self.b_post.log_prob(self.b).sum()
这是可行的,而下一个街区不行
self.w_post = Normal(self.w_mu, torch.log(1+torch.exp(self.w_rho)))
self.b_post = Normal(self.b_mu, torch.log(1+torch.exp(self.b_rho)))
self.log_post = self.w_post.log_prob(self.w).sum() + self.b_post.log_prob(self.b).sum()
既然w_post和b_post不是参数,那么为什么这会影响我的答案呢。这段代码位于自定义线性层的正向函数中
而log_posterior的值在各个时代都没有变化。这和种子有关吗 我认为这两种解决方案都可以应用,而且它只会以某种方式改变种子。经过几次迭代,两个模型都收敛了