Esempio n. 1
0
 def forward(self):
     mu = self.marsaglia(self.prior_mean, self.prior_stddev)
     likelihood = Normal(mu, self.likelihood_stddev)
     pyprob.tag(mu, name='mu')
     pyprob.observe(likelihood, name='obs0')
     pyprob.observe(likelihood, name='obs1')
     return mu
Esempio n. 2
0
 def forward(self):
     uniform = Uniform(0, 1)
     val = pyprob.sample(uniform)
     val = pyprob.sample(uniform)
     val = pyprob.sample(uniform, control=False)
     val = pyprob.sample(uniform, control=False)
     val = pyprob.sample(uniform, control=False)
     pyprob.tag(value=val, name='val')
     pyprob.observe(uniform, 0.5)
     pyprob.observe(uniform, 0.5)
     pyprob.observe(uniform, 0.5)
     pyprob.observe(uniform, 0.5)
     return val
Esempio n. 3
0
 def marsaglia(self, mean, stddev):
     uniform = Uniform(-1, 1)
     s = 1
     i = 0
     while True:
         # x = pyprob.sample(uniform, replace=self.replace)
         # y = pyprob.sample(uniform, replace=self.replace)
         x = pyprob.sample(uniform)
         y = pyprob.sample(uniform)
         s = x * x + y * y
         i += 1
         if float(s) < 1:
             pyprob.tag(x, name='x_accepted')
             pyprob.tag(y, name='y_accepted')
             pyprob.tag(s, name='s_accepted')
             break
         else:
             pyprob.tag(x, name='x_rejected')
             pyprob.tag(y, name='y_rejected')
             pyprob.tag(s, name='s_rejected')
     pyprob.tag(i, name='iterations')
     return mean + stddev * (x * torch.sqrt(-2 * torch.log(s) / s))