def _wmvnpdf(x, pi, mu, va, d=1, logged=False, use_gpu=True, **kwargs): if len(x.shape) == 1: x = x.reshape((1, x.shape)) if len(mu.shape) == 1: mu = mu.reshape((1, mu.shape)) if len(va.shape) == 2: va = va.reshape(1, va.shape[0], va.shape[1]) if len(va.shape) == 1: va = va.reshape(va.shape[0], 1, 1) if isinstance(pi, float) or isinstance(pi, int): pi = array([pi]) elif isinstance(pi, ndarray): if len(pi.shape) == 0: pi = pi.reshape((1)) if has_gpu and use_gpu: if 'device' in kwargs: dev = kwargs['device'] else: dev = 0 select_gpu(dev) return mvnpdf_multi(x, mu, va, weights=pi, logged=logged, order='C').astype('float64') else: if logged: return mvn_weighted_logged(x, mu, va, pi) else: return exp(mvn_weighted_logged(x, mu, va, pi))
def _mvnpdf(x, mu, va, logged=False, use_gpu=True, **kwargs): if len(x.shape) == 1: x = x.reshape((1, x.shape[0])) if len(mu.shape) == 1: mu = mu.reshape((1, mu.shape[0])) if len(va.shape) == 2: va = va.reshape(1, va.shape[0], va.shape[1]) if has_gpu and use_gpu: if 'device' in kwargs: dev = kwargs['device'] else: dev = 0 select_gpu(dev) return mvnpdf_multi( x, mu, va, weights=np.ones(mu.shape[0]), logged=logged, order='C').astype('float64') else: if logged: return mvn_weighted_logged(x, mu, va, np.ones(mu.shape[0])) else: return np.exp(mvn_weighted_logged(x, mu, va, np.ones(mu.shape[0])))
def get_dp_labels_gpu(gpu_data, w, mu, sigma, relabel=False): densities = gpustats.mvnpdf_multi( gpu_data[0], mu, sigma, weights=w.flatten(), get=False, logged=True, order='C' ) if relabel: z = np.asarray( cuda_functions.gpu_apply_row_max(densities)[1].get(), dtype='i' ) else: z = None labels = np.asarray( gpu_sampler.sample_discrete(densities, logged=True), dtype='i' ) densities.gpudata.free() del densities return labels, z
def _mvnpdf(x, mu, va, n=1, logged=False, use_gpu=True, **kwargs): if len(x.shape) == 1: x = x.reshape((1, x.shape[0])) if len(mu.shape) == 1: mu = mu.reshape((1, mu.shape[0])) if len(va.shape) == 2: va = va.reshape(1, va.shape[0], va.shape[1]) if has_gpu and use_gpu: if 'device' in kwargs: dev = kwargs['device'] else: dev = 0 select_gpu(dev) return mvnpdf_multi(x, mu, va, weights=ones(mu.shape[0]), logged=logged, order='C').astype('float64') else: if logged: return mvn_weighted_logged(x, mu, va, ones(mu.shape[0])) else: return exp(mvn_weighted_logged(x, mu, va, ones(mu.shape[0])))
def get_hdp_labels_gpu(gpu_data, w, mu, sigma, relabel=False): labels = [] z = [] for i, data_set in enumerate(gpu_data): densities = gpustats.mvnpdf_multi(data_set, mu, sigma, weights=w[i].flatten(), get=False, logged=True, order='C') if relabel: z.append( np.asarray( cuda_functions.gpu_apply_row_max(densities)[1].get(), dtype='i')) else: z.append(None) labels.append( np.asarray(gpu_sampler.sample_discrete(densities, logged=True), dtype='i')) densities.gpudata.free() del densities return labels, z
def _update_labels(self, mu, Sigma, weights): # GPU business happens? densities = gpustats.mvnpdf_multi(self.data, mu, Sigma, weights=weights) densities = (densities.T / densities.sum(1)).T # convert this to run in the GPU return ffbs.f32_sample_discrete(densities)
def _compare_multi(n, k, p): data, means, covs = _make_test_case(n, k, p) # cpu in PyMC py_result = python_mvnpdf(data, means, covs) # gpu result = gps.mvnpdf_multi(data, means, covs) return result, py_result
def _compare_multi(n, k, p): data, means, covs = _make_test_case(n, k, p) # cpu in PyMC pyresult = compat.python_mvnpdf(data, means, covs) # gpu result = gps.mvnpdf_multi(data, means, covs) return result, pyresult
def get_bem_densities_gpu(gpu_data, w, mu, sigma): densities = gpustats.mvnpdf_multi(gpu_data[0], mu, sigma, weights=w.flatten(), get=False, logged=True, order='C') dens = np.asarray(densities.get(), dtype='d') densities.gpudata.free() return dens
def get_bem_densities_gpu(gpu_data, w, mu, sigma): densities = gpustats.mvnpdf_multi( gpu_data[0], mu, sigma, weights=w.flatten(), get=False, logged=True, order='C' ) dens = np.asarray(densities.get(), dtype='d') densities.gpudata.free() return dens
def get_dp_labels_gpu(gpu_data, w, mu, sigma, relabel=False): densities = gpustats.mvnpdf_multi(gpu_data[0], mu, sigma, weights=w.flatten(), get=False, logged=True, order='C') if relabel: z = np.asarray(cuda_functions.gpu_apply_row_max(densities)[1].get(), dtype='i') else: z = None labels = np.asarray(gpu_sampler.sample_discrete(densities, logged=True), dtype='i') densities.gpudata.free() del densities return labels, z
def get_hdp_labels_gpu(gpu_data, w, mu, sigma, relabel=False): labels = [] z = [] for i, data_set in enumerate(gpu_data): densities = gpustats.mvnpdf_multi( data_set, mu, sigma, weights=w[i].flatten(), get=False, logged=True, order='C' ) if relabel: z.append( np.asarray( cuda_functions.gpu_apply_row_max(densities)[1].get(), dtype='i' ) ) else: z.append(None) labels.append( np.asarray( gpu_sampler.sample_discrete(densities, logged=True), dtype='i' ) ) densities.gpudata.free() del densities return labels, z
a_Sigma.append(Sigma) for it in range(subtasknum): # get task parameters params = a_params[it] dataind, ncomp, ttype, gid = params nobs, ndim = alldata[dataind].shape w = a_w[it] mu = a_mu[it] Sigma = a_Sigma[it] if ttype > 0: # 1 -- just densities ... 2 -- relabel too # do GPU work ... densities = gpustats.mvnpdf_multi(gdata[dataind], mu, Sigma, weights=w.flatten(), get=False, logged=True, order='C') if ttype == 2: # identification!! Z = np.asarray( cufuncs.gpu_apply_row_max(densities)[1].get(), dtype='i' ) else: Z = None labs = np.asarray( gsamp.sample_discrete(densities, logged=True), dtype='i' ) subresult = [
for it in range(subtasknum): # get task parameters params = a_params[it] dataind, ncomp, ttype, gid = params nobs, ndim = alldata[dataind].shape w = a_w[it] mu = a_mu[it] Sigma = a_Sigma[it] if ttype > 0: # 1 -- just densities ... 2 -- relabel too # do GPU work ... densities = gpustats.mvnpdf_multi(gdata[dataind], mu, Sigma, weights=w.flatten(), get=False, logged=True, order='C') if ttype == 2: # identification!! Z = np.asarray( cufuncs.gpu_apply_row_max(densities)[1].get(), dtype='i') else: Z = None labs = np.asarray(gsamp.sample_discrete(densities, logged=True), dtype='i') subresult = [