【问题标题】:How to parametrize Tensorflow Distributions?如何参数化 TensorFlow 分布?
【发布时间】:2021-07-29 16:52:56
【问题描述】:

如何参数化 TensorFlow 分布? IE。我想要一个分类分布,并想在其中添加高斯噪声。 tfp.distributions.Normal 将 loc 作为输入,如何将此 loc 设置为分类分布?

【问题讨论】:

    标签: tensorflow distribution tensorflow-probability


    【解决方案1】:

    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 文档中导出。我会考虑修复。

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多