Tensorflow概率:分布数组

时间:2019-03-20 10:31:47

标签: python tensorflow data-science tensorflow-probability

我正在尝试使用Tensorflow概率编写代码,以使用EM算法对一组样本(来自多个高斯分布)进行分类。

我想为任何一般性问题编写此代码(如果样本来自2个高斯分布或8个高斯分布,我希望它可以工作)。

我现在遇到的问题是我找不到创建tfd.Normal数组的方法。

我希望将其作为数组(或其他类似类型的数据),因为这样我就可以处理不确定数量的分布。

有人可以帮助我解决这个问题吗?

编辑:以下代码可以作为解决方案吗?

{{1}}

1 个答案:

答案 0 :(得分:0)

TFP发行版具有批处理功能。您的代码应该可以正常工作,并且代表2个正态分布的向量,其中第一个是N(X|20, 8),第二个是N(X|60, 4)

您可以通过true_dist.batch_shape(在这种情况下将返回[2])进行查询。

您现在可以采样:true_dist.sample()(返回形状为[2]的float64)。

您可以计算概率:true_dist.log_prob(0)(返回形状为[2],代表[log N(0|20, 8), log N(0|60, 4)]的float64)。

您可以估计每个批次成员的独立概率:true_dist.log_prob([0, 1])(返回形状为float64的{​​{1}},代表[2])。

还请注意,TFP分布会广播其参数,因此,如果您想要两个具有相同位置和不同比例的法线,则可以编写[log N(0|20, 8), log N(1|60, 4)]