簡體   English   中英

如何在 TensorFlow Probability 中創建分布數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM