Dirichlet-Multinomial 複合分布。
繼承自:Distribution
用法
tf.compat.v1.distributions.DirichletMultinomial(
total_count, concentration, validate_args=False, allow_nan_stats=True,
name='DirichletMultinomial'
)
參數
-
total_count
非負浮點張量,其 dtype 與concentration
相同。該形狀可通過m >= 0
廣播到[N1,..., Nm]
。將此定義為一批N1 x ... x Nm
不同的狄利克雷多項分布。它的組件應該等於整數值。 -
concentration
正浮點張量,其 dtype 與n
相同,形狀可廣播到[N1,..., Nm, K]
m >= 0
。將此定義為一批N1 x ... x Nm
不同的K
類狄利克雷多項分布。 -
validate_args
Pythonbool
,默認False
。盡管可能會降低運行時性能,但檢查True
分發參數的有效性時。當False
無效輸入可能會默默呈現不正確的輸出。 -
allow_nan_stats
Pythonbool
,默認True
。當True
時,統計信息(例如,均值、眾數、方差)使用值“NaN
”來指示結果未定義。當False
時,如果一個或多個統計數據的批處理成員未定義,則會引發異常。 -
name
Pythonstr
名稱以此類創建的 Ops 為前綴。
屬性
-
allow_nan_stats
Pythonbool
說明未定義統計信息時的行為。統計數據在有意義時返回 +/- 無窮大。例如,柯西分布的方差是無窮大的。但是,有時統計數據是未定義的,例如,如果分布的 pdf 在分布的支持範圍內沒有達到最大值,則模式是未定義的。如果均值未定義,則根據定義,方差未定義。例如: df = 1 的 Student's T 的平均值是未定義的(沒有明確的方式說它是 + 或 - 無窮大),因此方差 = E[(X - mean)**2] 也是未定義的。
-
batch_shape
來自單個事件索引的單個樣本的形狀作為TensorShape
.可能部分定義或未知。
批次維度是該分布的獨立、不同參數化的索引。
-
concentration
濃度參數;該坐標的預期先前計數。 -
dtype
Tensor
的DType
由此Distribution
處理。 -
event_shape
單個批次的單個樣品的形狀作為TensorShape
.可能部分定義或未知。
-
name
此Distribution
創建的所有操作前的名稱。 -
parameters
用於實例化此Distribution
的參數字典。 -
reparameterization_type
說明如何重新參數化分布中的樣本。目前這是靜態實例
distributions.FULLY_REPARAMETERIZED
或distributions.NOT_REPARAMETERIZED
之一。 -
total_concentration
last dim of 濃度參數的總和。 -
total_count
用於構建樣本的試驗次數。 -
validate_args
Pythonbool
表示啟用了可能昂貴的檢查。
Dirichlet-Multinomial 分布由(一批)長度參數化 - K
concentration
向量( K > 1
)和 total_count
試驗次數,即從 DirichletMultinomial 中每次抽取的試驗次數。它是在(一批)長度上定義的 - K
向量 counts
使得 tf.reduce_sum(counts, -1) = total_count
。 Dirichlet-Multinomial 與 K = 2
時的 Beta-Binomial 分布相同。
數學細節
Dirichlet-Multinomial 是在 K
-類計數上的分布,即非負整數 counts = n = [n_0, ..., n_{K-1}]
的長度 - K
向量。
概率質量函數 (pmf) 是,
pmf(n; alpha, N) = Beta(alpha + n) / (prod_j n_j!) / Z
Z = Beta(alpha) / N!
其中:
concentration = alpha = [alpha_0, ..., alpha_{K-1}]
,alpha_j > 0
,total_count = N
,N
一個正整數,N!
是N
階乘,並且,Beta(x) = prod_j Gamma(x_j) / Gamma(sum_j x_j)
是多元 beta 函數,並且,Gamma
是伽瑪函數。
Dirichlet-Multinomial 是一個複合分布,即它的樣本生成如下。
- 選擇類概率:
probs = [p_0,...,p_{K-1}] ~ Dir(concentration)
- 繪製整數:
counts = [n_0,...,n_{K-1}] ~ Multinomial(total_count, probs)
最後一個 concentration
維度參數化了單個 Dirichlet-Multinomial 分布。當調用分布函數(例如 dist.prob(counts)
)時,concentration
, total_count
和 counts
被廣播到相同的形狀。 counts
的最後一個維度對應於單個 Dirichlet-Multinomial 分布。
分布參數在所有函數中自動廣播;有關詳細信息,請參見示例。
陷阱
類數 K
不得超過:
self.dtype
可表示的最大整數,即2**(mantissa_bits+1)
(IEE754),- 最大
Tensor
索引,即2**31-1
。
換一種說法,
K <= min(2**31-1, {
tf.float16:2**11,
tf.float32:2**24,
tf.float64:2**53 }[param.dtype])
注意:此條件僅在 self.validate_args = True
時有效。
例子
alpha = [1., 2., 3.]
n = 2.
dist = DirichletMultinomial(n, alpha)
創建一個 3 類分布,最有可能繪製 3 類分布。分布函數可以根據計數進行評估。
# counts same shape as alpha.
counts = [0., 0., 2.]
dist.prob(counts) # Shape []
# alpha will be broadcast to [[1., 2., 3.], [1., 2., 3.]] to match counts.
counts = [[1., 1., 0.], [1., 0., 1.]]
dist.prob(counts) # Shape [2]
# alpha will be broadcast to shape [5, 7, 3] to match counts.
counts = [[...]] # Shape [5, 7, 3]
dist.prob(counts) # Shape [5, 7]
創建 2 批 3 類分布。
alpha = [[1., 2., 3.], [4., 5., 6.]] # Shape [2, 3]
n = [3., 3.]
dist = DirichletMultinomial(n, alpha)
# counts will be broadcast to [[2., 1., 0.], [2., 1., 0.]] to match alpha.
counts = [2., 1., 0.]
dist.prob(counts) # Shape [2]
相關用法
- Python tf.compat.v1.distributions.DirichletMultinomial.log_survival_function用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.survival_function用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.quantile用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.log_cdf用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.covariance用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.cdf用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.variance用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.kl_divergence用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.stddev用法及代碼示例
- Python tf.compat.v1.distributions.DirichletMultinomial.cross_entropy用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.covariance用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.stddev用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.kl_divergence用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.cross_entropy用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.cdf用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.survival_function用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.log_survival_function用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.log_cdf用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet.variance用法及代碼示例
- Python tf.compat.v1.distributions.Dirichlet用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.distributions.DirichletMultinomial。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。