Exemplo n.º 1
0
def test():
    func = SourceModule(source).get_function('log_diag_mvn_likelihood')
    n_samples = 8
    n_states = 9
    n_features = 33
    np.random.seed(42)
    sequences = np.random.rand(n_samples, n_features).astype(np.float32)
    means = np.random.rand(n_states, n_features).astype(np.float32)
    variances = np.random.rand(n_states, n_features).astype(np.float32)
    loglikelihoods = np.zeros((n_samples, n_states), dtype=np.float32)

    func(cuda.In(sequences),
         cuda.In(means),
         cuda.In(variances),
         cuda.In(np.log(variances)),
         np.int32(n_samples),
         np.int32(n_states),
         np.int32(n_features),
         cuda.InOut(loglikelihoods),
         block=(64, 1, 1),
         grid=(1, 1))

    print 'loglikelihoods'
    print loglikelihoods

    print 'sklearn'
    from sklearn.mixture.gmm import _log_multivariate_normal_density_diag
    r = _log_multivariate_normal_density_diag(sequences, means, variances)
    print r
    print np.abs(r - loglikelihoods) < 1e-4
Exemplo n.º 2
0
def test_gaussian_likelihood():
    np.random.seed(42)
    from sklearn.mixture.gmm import _log_multivariate_normal_density_diag
    n_states = 4
    n_features = 33
    n_observations = 10
    means = np.random.randn(n_states, n_features).astype(np.float32)
    variances = np.random.rand(n_states, n_features).astype(np.float32)
    s = np.random.randn(n_observations, n_features).astype(np.float32)
    ref = _log_multivariate_normal_density_diag(s, means, variances)

    loglikelihoods = np.zeros((n_observations, n_states), dtype=np.float32)
    mod.get_function('gaussian_likelihood')(drv.In(s),
                                            drv.In(means),
                                            drv.In(variances),
                                            np.int64(1),
                                            drv.In(np.array([n_observations])),
                                            drv.In(np.array(0)),
                                            np.int64(n_states),
                                            np.int64(n_features),
                                            drv.Out(loglikelihoods),
                                            block=(32, 1, 1),
                                            grid=(1, 1))
    print 'reference'
    print ref
    print 'cuda'
    print loglikelihoods
Exemplo n.º 3
0
def test_gaussian_likelihood():
    np.random.seed(42)
    from sklearn.mixture.gmm import _log_multivariate_normal_density_diag
    n_states = 4
    n_features = 33
    n_observations = 10
    means = np.random.randn(n_states, n_features).astype(np.float32)
    variances = np.random.rand(n_states, n_features).astype(np.float32)
    s = np.random.randn(n_observations, n_features).astype(np.float32)
    ref = _log_multivariate_normal_density_diag(s, means, variances)

    loglikelihoods = np.zeros((n_observations, n_states), dtype=np.float32)
    mod.get_function('gaussian_likelihood')(drv.In(s), drv.In(means), drv.In(variances),
                                            np.int64(1), drv.In(np.array([n_observations])), drv.In(np.array(0)),
                                            np.int64(n_states), np.int64(n_features), drv.Out(loglikelihoods),
                                            block=(32,1,1), grid=(1,1))
    print 'reference'
    print ref
    print 'cuda'
    print loglikelihoods
Exemplo n.º 4
0
def test():
    func = SourceModule(source).get_function('log_diag_mvn_likelihood')
    n_samples = 8
    n_states = 9
    n_features = 33
    np.random.seed(42)
    sequences = np.random.rand(n_samples, n_features).astype(np.float32)
    means = np.random.rand(n_states, n_features).astype(np.float32)
    variances = np.random.rand(n_states, n_features).astype(np.float32)
    loglikelihoods = np.zeros((n_samples, n_states), dtype=np.float32)
    
    func(cuda.In(sequences), cuda.In(means), cuda.In(variances), cuda.In(np.log(variances)),
         np.int32(n_samples), np.int32(n_states), np.int32(n_features),
         cuda.InOut(loglikelihoods),
         block=(64,1,1), grid=(1,1))

    print 'loglikelihoods'
    print loglikelihoods

    print 'sklearn'
    from sklearn.mixture.gmm import _log_multivariate_normal_density_diag
    r = _log_multivariate_normal_density_diag(sequences, means, variances)
    print r
    print np.abs(r - loglikelihoods) < 1e-4