Example #1
0
    def bprop(self, delta, momentum=0.0):
        op.streams[2].synchronize()  # make sure layer above is done
        self.dfunc(delta, self.A, self.Z, stream=op.streams[0])
        op.streams[0].synchronize()
        op.add_dot(delta,
                   self.X,
                   self.dW,
                   True,
                   False,
                   alpha=1.0 / delta.shape[0],
                   beta=momentum,
                   stream=op.streams[0])
        m = op.mean(delta, axis=0, stream=op.streams[1])
        op.add_vec(self.db, 1.0, m, beta=momentum, stream=op.streams[1])

        if self.l2_penalty > 0:
            op.add_vec(self.dW, self.l2_penalty, self.W, stream=op.streams[0])

        if not self.is_input_layer:
            if self.dropout > 0.0 and self.activation not in ("relu",
                                                              "sigmoid"):
                return op.dot(delta, self.W) * self.M
            else:
                return op.dot(delta, self.W)
        else:
            return 0.0
Example #2
0
 def fprop(self, X, stream=None):
     ''' Forward propagation.
     NOTE: If we do dropout, X will get mutated. Usually, X == lowerlayer.A.
           Thus, we don't need to multiply by a dropout mask in bprop.'''
     self.X, self.M = self._corrupt_input(X, stream=stream)
     self.Z = op.dot(self.X, self.W, False, True, stream=stream)
     self.Z = op.add_matvec(self.Z, self.b, out=self.Z, stream=stream)
     self.A = self.func(self.Z, stream=stream)
     return self.A
Example #3
0
 def fprop(self, X, stream=None):
     ''' Forward propagation.
     NOTE: If we do dropout, X will get mutated. Usually, X == lowerlayer.A.
           Thus, we don't need to multiply by a dropout mask in bprop.'''
     self.X, self.M = self._corrupt_input(X, stream=stream)
     self.Z = op.dot(self.X, self.W, False, True, stream=stream)
     self.Z = op.add_matvec(self.Z, self.b, out=self.Z, stream=stream)
     self.A = self.func(self.Z, stream=stream)
     return self.A
Example #4
0
    def bprop(self, delta, momentum=0.0):
        op.streams[2].synchronize()  # make sure layer above is done
        self.dfunc(delta, self.A, self.Z, stream=op.streams[0])
        op.streams[0].synchronize()
        op.add_dot(delta, self.X, self.dW, True, False,
                  alpha=1.0/delta.shape[0], beta=momentum, stream=op.streams[0])
        m = op.mean(delta, axis=0, stream=op.streams[1])
        op.add_vec(self.db, 1.0, m, beta=momentum, stream=op.streams[1])

        if self.l2_penalty > 0:
            op.add_vec(self.dW, self.l2_penalty, self.W, stream=op.streams[0])

        if not self.is_input_layer:
            if self.dropout > 0.0 and self.activation not in ("relu", "sigmoid"):
                return op.dot(delta, self.W)*self.M
            else:
                return op.dot(delta, self.W)
        else:
            return 0.0
Example #5
0
def test_csrmm_bug():
    ''' the 2nd call might crash'''
    from scipy.sparse import csr_matrix
    W = np.random.normal(size=(5, 3)).astype(np.float32, order="c")
    X = np.random.laplace(size=(6, 3)).astype(np.float32)
    X[X<0.1] = 0
    X = csr_matrix(X, dtype=np.float32)

    Xd = GPUCSRArray(X)
    Wd = op.to_gpu(W)
    Cd = op.dot(Xd, Wd, False, True, out=None, stream=op.streams[0])
    op.add_dot(Cd, Xd, Wd, True, False, alpha=-0.3, beta=1.0, stream=op.streams[0])
    op.mean(Cd, axis=0, stream=op.streams[1])
Example #6
0
    def _mean_hiddens(self, v):
        """Computes the probabilities P(h=1|v).

        Parameters
        ----------
        v : array-like, shape (n_samples, n_features)
            Values of the visible layer.

        Returns
        -------
        h : array-like, shape (n_samples, n_components)
            Corresponding mean field values for the hidden layer.
        """
        p = op.dot(v, self.W, False, True)
        p = op.add_matvec(p, self.bh, out=p)
        return op.sigmoid(p, out=p)
Example #7
0
    def _mean_visibles(self, h):
        """Computes the probabilities P(v=1|h).

        Parameters
        ----------
        h : array-like, shape (n_samples, n_components)
            Values of the hidden layer to sample from.

        Returns
        -------
        v : array-like, shape (n_samples, n_features)
            Values of the visible layer.
        """
        p = op.dot(h, self.W, False, False)
        p = op.add_matvec(p, self.bv, out=p)
        return p
Example #8
0
File: rbm.py Project: stachon/binet
    def _mean_hiddens(self, v):
        """Computes the probabilities P(h=1|v).

        Parameters
        ----------
        v : array-like, shape (n_samples, n_features)
            Values of the visible layer.

        Returns
        -------
        h : array-like, shape (n_samples, n_components)
            Corresponding mean field values for the hidden layer.
        """
        p = op.dot(v, self.W, False, True)
        p = op.add_matvec(p, self.bh, out=p)
        return op.sigmoid(p, out=p)
Example #9
0
File: rbm.py Project: stachon/binet
    def _mean_visibles(self, h):
        """Computes the probabilities P(v=1|h).

        Parameters
        ----------
        h : array-like, shape (n_samples, n_components)
            Values of the hidden layer to sample from.

        Returns
        -------
        v : array-like, shape (n_samples, n_features)
            Values of the visible layer.
        """
        p = op.dot(h, self.W, False, False)
        p = op.add_matvec(p, self.bv, out=p)
        return p
Example #10
0
def test_csrmm_bug():
    ''' the 2nd call might crash'''
    from scipy.sparse import csr_matrix
    W = np.random.normal(size=(5, 3)).astype(np.float32, order="c")
    X = np.random.laplace(size=(6, 3)).astype(np.float32)
    X[X < 0.1] = 0
    X = csr_matrix(X, dtype=np.float32)

    Xd = GPUCSRArray(X)
    Wd = op.to_gpu(W)
    Cd = op.dot(Xd, Wd, False, True, out=None, stream=op.streams[0])
    op.add_dot(Cd,
               Xd,
               Wd,
               True,
               False,
               alpha=-0.3,
               beta=1.0,
               stream=op.streams[0])
    op.mean(Cd, axis=0, stream=op.streams[1])