【发布时间】:2021-01-25 05:16:29
【问题描述】:
我有一个 1-D np.ndarray 填充了定义分类分布的非标准化对数概率。我想从这个分布中采样一个整数索引。由于许多概率很小,归一化和取幂对数概率会引入显着的数值错误,因此我不能使用np.random.choice。实际上,我正在寻找与 TensorFlow 的 tf.random.categorical 等效的 NumPy,它适用于非标准化的对数概率。
如果 NumPy 中没有直接实现这一点的函数,那么实现这种采样的有效方式是什么?
【问题讨论】:
-
“由于许多概率很小,归一化和取幂对数概率会引入显着的数值错误,” 你有一组对数概率的例子吗?证明问题?
-
@WarrenWeckesser 并不是说我可以方便地发帖。 well known 使用对数概率可防止出现下溢。采样是作为我正在实施的重要性采样算法的一部分完成的。因此,所涉及的许多概率都很小(1e-8 阶)。过去我遇到过问题,当从非标准化对数概率转换为标准化概率时,我最终会得到 NaN。
-
您能否至少给出一些关于您拥有多少对数概率的典型值,以及对数概率值的典型范围是多少? 1e-8 似乎不足以引起问题。