Beispiel #1
0
    def __init__(self, num_hidden, num_visible, data=None, binary_visible=True, hidden_activation_function = Sigmoid(), dropout=0.0):
        '''Initialize a restricted boltzmann machine on GPU

        num_visible: The number of visible units. data.shape[0]
        num_hidden: The number of hidden units.
        binary: True if the visible units are binary, False if the visible units
          are normally distributed.
        '''
        self.num_hidden = num_hidden
        self.num_visible = num_visible 
        
        
        self.hidden_unittype = hidden_activation_function
        self.visible_unittype = self.hidden_unittype if binary_visible else Gaussian()
        
        if(data is not None):
            self.data = data#isinstance(data, gp.garray) and data or gp.garray(data.astype(np.float32))        
            self.num_visible = data.shape[1]
        
        self.weights = 0.1 * gp.randn(self.num_visible,self.num_hidden)
        self.hidden_bias = -4. * gp.ones(self.num_hidden)
        self.visible_bias = gp.zeros(self.num_visible)
    
        self.grad_weights = gp.zeros(self.weights.shape)
        self.grad_visible = gp.zeros(self.visible_bias.shape)
        self.grad_hidden = gp.zeros(self.hidden_bias.shape)
        self.dropout = dropout
        if(dropout is None or dropout==0):
            self.cd1 = CD1
        else:
            self.cd1=CD1_dropout
Beispiel #2
0
 def sampleStates(self, acts):
     if self.krizNoise:
         return self.activate(acts + gp.randn(*acts.shape))
     tiny = 1e-30
     stddev = gp.sqrt(acts.sigmoid() + tiny)
     return self.activate( acts + stddev*gp.randn(*acts.shape) )