def sample_v_given_hs(self, h_sample, s_sample, rng=None, size=None): """ Generates sample from p(v | h, s) """ v_mean = self.v_given_hs(h_sample, s_sample) rng = self.theano_rng if rng is None else rng size = size if size else self.batch_size if self.flags['truncate_v']: v_sample = truncated.truncated_normal( size=(size, self.n_v), avg = v_mean, std = T.sqrt(1./self.lambd_prec), lbound = -self.truncation_bound['v'], ubound = self.truncation_bound['v'], theano_rng = rng, dtype=floatX) else: v_sample = rng.normal( size=(size, self.n_v), avg = v_mean, std = T.sqrt(1./self.lambd_prec), dtype=floatX) return v_sample
def sample_s_given_ghv(self, g_sample, h_sample, v_sample, rng=None, size=None): """ Generates sample from p(s | g, h, v) """ s_mean = self.s_given_ghv(g_sample, h_sample, v_sample) rng = self.theano_rng if rng is None else rng size = size if size else self.batch_size if self.flags['truncate_s']: s_sample = truncated.truncated_normal( size=(size, self.n_s), avg = s_mean, std = T.sqrt(1./self.alpha_prec), lbound = self.truncation_bound['s'], ubound = self.truncation_bound['s'], theano_rng = rng, dtype=floatX) else: s_sample = rng.normal( size=(size, self.n_s), avg = s_mean, std = T.sqrt(1./self.alpha_prec), dtype=floatX) return s_sample
def sample_v_given_gsht(self, g_sample, s_sample, h_sample, t_sample, rng=None): v_mean = self.v_given_gsht(g_sample, s_sample, h_sample, t_sample) rng = self.theano_rng if rng is None else rng v_sample = truncated.truncated_normal( size=(self.batch_size, self.n_v), avg = v_mean, std = T.sqrt(1./self.lambd_prec), lbound = -self.vbound, ubound = self.vbound, theano_rng = rng, dtype=floatX) return v_sample
def sample_v_given_hs(self, h_sample, s_sample, rng=None): v_mean = self.v_given_hs(h_sample, s_sample) rng = self.theano_rng if rng is None else rng if self.flags.get('truncated_normal', False): v_sample = truncated.truncated_normal( size=(self.batch_size, self.n_v), avg=v_mean, std=T.sqrt(1. / self.beta_prec), lbound=-self.vbound, ubound=self.vbound, theano_rng=rng, dtype=floatX) else: v_sample = rng.normal(size=(self.batch_size, self.n_v), avg=v_mean, std=T.sqrt(1. / self.beta_prec), dtype=floatX) return v_sample
def sample_v_given_hs(self, h_sample, s_sample, rng=None): v_mean = self.v_given_hs(h_sample, s_sample) rng = self.theano_rng if rng is None else rng if self.flags.get('truncated_normal', False): v_sample = truncated.truncated_normal( size=(self.batch_size, self.n_v), avg = v_mean, std = T.sqrt(1./self.beta_prec), lbound = -self.vbound, ubound = self.vbound, theano_rng = rng, dtype=floatX) else: v_sample = rng.normal( size=(self.batch_size, self.n_v), avg = v_mean, std = T.sqrt(1./self.beta_prec), dtype=floatX) return v_sample
def sample_t_given_gshv(self, g_sample, s_sample, h_sample, v_sample, rng=None): t_mean = self.t_given_gshv(g_sample, s_sample, h_sample, v_sample) rng = self.theano_rng if rng is None else rng if self.flags['truncate_s']: t_sample = truncated.truncated_normal( size=(self.batch_size, self.n_h), avg = t_mean, std = T.sqrt(1./self.beta_prec), lbound = self.eta - self.truncation_bounds['t'], ubound = self.eta + self.truncation_bounds['t'], theano_rng = rng, dtype=floatX) else: t_sample = rng.normal( size=(self.batch_size, self.n_h), avg = t_mean, std = T.sqrt(1./self.beta_prec), dtype=floatX) return t_sample
def sample_s_given_ghtv(self, g_sample, h_sample, t_sample, v_sample, rng=None): s_mean = self.s_given_ghtv(g_sample, h_sample, t_sample, v_sample) rng = self.theano_rng if rng is None else rng if self.flags['truncate_s']: s_sample = truncated.truncated_normal( size=(self.batch_size, self.n_g), avg = s_mean, std = T.sqrt(1./self.alpha_prec), lbound = self.mu - self.truncation_bounds['s'], ubound = self.mu + self.truncation_bounds['s'], theano_rng = rng, dtype=floatX) else: s_sample = rng.normal( size=(self.batch_size, self.n_g), avg = s_mean, std = T.sqrt(1./self.alpha_prec), dtype=floatX) return s_sample
def sample_v_given_hs(self, h_sample, s_sample, rng=None, size=None): """ Generates sample from p(v | h, s) """ v_mean = self.v_given_hs(h_sample, s_sample) rng = self.theano_rng if rng is None else rng size = size if size else self.batch_size if self.flags['truncate_v']: v_sample = truncated.truncated_normal( size=(size, self.n_v), avg=v_mean, std=T.sqrt(1. / self.lambd_prec), lbound=-self.truncation_bound['v'], ubound=self.truncation_bound['v'], theano_rng=rng, dtype=floatX) else: v_sample = rng.normal(size=(size, self.n_v), avg=v_mean, std=T.sqrt(1. / self.lambd_prec), dtype=floatX) return v_sample