Esempio n. 1
0
 def step(self, *args, rng_key=None, **kwargs):
     if self.svi_state is None:
         if rng_key is None:
             rng_key = numpyro.prng_key()
         self.svi_state = self.init(rng_key, *args, **kwargs)
     try:
         self.svi_state, loss = jit(self.update)(self.svi_state, *args,
                                                 **kwargs)
     except TypeError as e:
         if "not a valid JAX type" in str(e):
             raise TypeError(
                 "NumPyro backend requires args, kwargs to be arrays or tuples, "
                 "dicts of arrays.") from e
         else:
             raise e
     params = jit(super(SVI, self).get_params)(self.svi_state)
     get_param_store().update(params)
     return loss
Esempio n. 2
0
 def step(self, *args, rng_key=None, **kwargs):
     if self.svi_state is None:
         if rng_key is None:
             rng_key = numpyro.sample('svi.init', dist.PRNGIdentity())
         self.svi_state = self.init(rng_key, *args, **kwargs)
     try:
         self.svi_state, loss = jit(self.update)(self.svi_state, *args,
                                                 **kwargs)
     except TypeError as e:
         if 'not a valid JAX type' in str(e):
             raise TypeError(
                 'NumPyro backend requires args, kwargs to be arrays or tuples, '
                 'dicts of arrays.')
         else:
             raise e
     params = jit(super(SVI, self).get_params)(self.svi_state)
     get_param_store().update(params)
     return loss