首页 > 解决方案 > PyMC3 Dirichlet 过程多元高斯混合模型

问题描述

我无法让我的形状适用于狄利克雷过程高斯混合模型。我的数据observations有形状(number of samples, number of dimensions)。每个高斯的均值应该从各向同性的先验中得出,每个高斯的协方差应该是单位矩阵。我以为我设置正确,但出现以下错误:

Input dimension mis-match. (input[0].shape[1] = 13, input[1].shape[1] = 2)

我的代码是:

import numpy as np
import pymc3 as pm
import theano.tensor as tt

num_obs, obs_dim = observations.shape
max_num_clusters = 13

def stick_breaking(beta):
    portion_remaining = tt.concatenate([[1], tt.extra_ops.cumprod(1 - beta)[:-1]])
    return beta * portion_remaining

with pm.Model() as model:
    w = pm.Deterministic("w", stick_breaking(beta))
    cluster_means = pm.MvNormal(f'cluster_means',
                                mu=pm.floatX(np.zeros(obs_dim)),
                                cov=pm.floatX(gaussian_mean_prior_cov_scaling * np.eye(obs_dim)),
                                shape=(max_num_clusters, obs_dim))

    comp_dists = pm.MvNormal.dist(mu=cluster_means,
                                  cov=gaussian_cov_scaling * np.eye(obs_dim),
                                  shape=(max_num_clusters, obs_dim))

    obs = pm.Mixture(
        "obs",
        w=w,
        comp_dists=comp_dists,
        observed=observations,
        shape=obs_dim)

有人可以澄清如何让形状工作吗?

标签: pythonbayesianpymc3mixture-model

解决方案


推荐阅读