【发布时间】:2021-07-29 16:52:56
【问题描述】:
如何参数化 TensorFlow 分布? IE。我想要一个分类分布,并想在其中添加高斯噪声。 tfp.distributions.Normal 将 loc 作为输入,如何将此 loc 设置为分类分布?
【问题讨论】:
标签: tensorflow distribution tensorflow-probability
如何参数化 TensorFlow 分布? IE。我想要一个分类分布,并想在其中添加高斯噪声。 tfp.distributions.Normal 将 loc 作为输入,如何将此 loc 设置为分类分布?
【问题讨论】:
标签: tensorflow distribution tensorflow-probability
Categorical 具有有限整数集的值,不会真正进行类型检查。如果您有一组平均位置并想从分类中选择它们,您可以这样做,例如
num_categories = 5
means = np.linspace(-10, 10, num_categories)
jd = tfd.JointDistributionSequential([
tfd.Categorical(logits=tf.zeros([num_categories])),
lambda c: tfd.Normal(loc=tf.gather(means, c), scale=1.)
])
(有关这种模型规范的更多信息,请参阅Modeling with JointDistributions)
但这相当于mixture of Gaussians:
msf = tfd.MixtureSameFamily(
tfd.Categorical(logits=tf.zeros(num_categories])),
tfd.Normal(loc=means, scale=1.))
您还可以使用FiniteDiscrete* 作为一种实值 分类的。
一些进一步的入门建议阅读:
* - 由于某种原因,FiniteDiscrete 没有在我们的 API 文档中导出。我会考虑修复。
【讨论】: