Exemple #1
0
    def sample_h_given_x(self, x):
        h_pre = K.dot(x, self.Wrbm) + self.bh
        h_sigm = self.activation(self.scaling_h_given_x * h_pre)

        # drop out noise
        #if(0.0 < self.p < 1.0):
        #	noise_shape = self._get_noise_shape(h_sigm)
        #	h_sigm = K.in_train_phase(K.dropout(h_sigm, self.p, noise_shape), h_sigm)

        if (self.hidden_unit_type == 'binary'):
            h_samp = K.random_binomial(shape=h_sigm.shape, p=h_sigm)

    # random sample
    #   \hat{h} = 1,      if p(h=1|x) > uniform(0, 1)
    #             0,      otherwise
        elif (self.hidden_unit_type == 'nrlu'):
            h_samp = nrlu(h_pre)
        else:
            h_samp = h_sigm

        if (0.0 < self.p < 1.0):
            noise_shape = self._get_noise_shape(h_samp)
            h_samp = K.in_train_phase(K.dropout(h_samp, self.p, noise_shape),
                                      h_samp)

        return h_samp, h_pre, h_sigm
Exemple #2
0
    def sample_h_given_x(self, x):

        h_pre = K.dot(x, self.W) + self.bh
	h_sigm = K.maximum(self.scaling_h_given_x * h_pre, 0)
	#std = K.mean(K.sigmoid(self.scaling_h_given_x * h_pre))
	#eta = random_normal(shape=h_pre.shape, std=std)
	#h_samp = K.maximum(h_pre + eta, 0)
	h_samp = nrlu(h_pre)

        return h_samp, h_pre, h_sigm
    def call(self, x, mask=None):
        if self.mode == 'maximum_likelihood':
            # draw maximum likelihood sample from Bernoulli distribution
            #    x* = argmax_x p(x) = 1         if p(x=1) >= 0.5
            #                         0         otherwise
            return T.round(x, mode='half_away_from_zero')
        elif self.mode == 'random':
            # draw random sample from Bernoulli distribution
            #    x* = x ~ p(x) = 1              if p(x=1) > uniform(0, 1)
            #                    0              otherwise
            return self.srng.binomial(size=x.shape, n=1, p=x, dtype=theano.config.floatX)
        elif self.mode == 'mean_field':
            # draw mean-field approximation sample from Bernoulli distribution
            #    x* = E[p(x)] = E[Bern(x; p)] = p
            return x
	elif self.mode == 'nrlu':
            return nrlu(x)
        else:
            raise NotImplementedError('Unknown sample mode!')