![](/img/trans.png)
[英]How to model structured parameters in Tensorflow Probability distributions?
[英]How can I create an array of distributions in TensorFlow Probability?
我正在嘗試使用 Tensorflow Probability 編寫代碼,以使用 EM 算法對一組樣本(來自多個高斯分布)進行分類。
因為我想為任何通用問題編寫此代碼(如果樣本來自 2 個高斯分布或 8 個高斯分布,我希望它可以工作)。
我現在遇到的問題是我找不到創建tfd.Normal
數組的tfd.Normal
。
我想把它作為一個數組(或其他類似類型的數據),因為這樣我可以處理不確定數量的分布。
誰能幫我解決這個問題?
下面的代碼是一個解決方案嗎?
true_mu = np.array([20,60], dtype=np.float64)
true_sigma = np.array([8,4], dtype=np.float64)
true_dist = tfd.Normal(loc=true_mu, scale=true_sigma)
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]
的 float64 ,表示[log N(0|20, 8), log N(0|60, 4)]
)。
您可以估計每個批次成員的獨立true_dist.log_prob([0, 1])
: true_dist.log_prob([0, 1])
(返回形狀為[2]
的float64
,代表[log N(0|20, 8), log N(1|60, 4)]
)。
另請注意,TFP 分布會廣播它們的參數,因此如果您想要兩個具有相同位置和不同比例的法線,您可以編寫tfd.Normal(0, [10, 20])
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.