Пример #1
0
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))
Пример #2
0
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])))
Пример #3
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
Пример #4
0
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])))
Пример #5
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
Пример #6
0
    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)
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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
Пример #11
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
Пример #12
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
Пример #13
0
            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 = [
Пример #14
0
        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 = [