def sample_predictive_parameters(self):
        Lext = \
            np.vstack((self.L, np.sqrt(self.sigma) * np.random.randn(1, self.dim)))

        D = -((Lext[:,None,:] - Lext[None,:,:])**2).sum(2)
        D += self.mu_0
        D += self.mu_self * np.eye(self.N+1)

        P = logistic(D)
        Prow = P[-1,:]
        Pcol = P[:,-1]

        return Prow, Pcol
    def sample_predictive_parameters(self):
        Lext = \
            np.vstack((self.L, np.sqrt(self.sigma) * np.random.randn(1, self.dim)))

        D = -((Lext[:, None, :] - Lext[None, :, :])**2).sum(2)
        D += self.mu_0
        D += self.mu_self * np.eye(self.N + 1)

        P = logistic(D)
        Prow = P[-1, :]
        Pcol = P[:, -1]

        return Prow, Pcol
 def P(self):
     P = logistic(self.D)
     return P
 def P(self):
     P = logistic(self.D)
     return P