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
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
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
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