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 op.sigmoid(p, out=p)
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)
def test_nan_in_toplayer_delta(): size = (200, 10) X = np.random.normal(size=size).astype(np.float32, order="c") A = op.sigmoid(X) Y = np.random.binomial(1.0, p=0.5, size=size).astype(np.float32) M = np.random.binomial(1.0, p=0.9, size=size).astype(np.float32) Y[~M.astype(np.bool)] = np.nan Y_orig = Y.copy() D = M * (A - Y) D[~M.astype(np.bool)] = 0.0 Y = op.toplayer_delta(A, Y, X) assert_allclose(Y, D) Yd = op.to_gpu(Y_orig) Ad = op.to_gpu(A) Xd = op.to_gpu(X) Yd = op.toplayer_delta(Ad, Yd, Xd) assert_allclose(Yd.get(), D)