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
Example #4
0
    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
Example #5
0
    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
Example #8
0
    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