在colab.research.google.com(v2.8.0-0-g3f878cff5b6
)上运行。
查看这段代码。
import tensorflow as tf
import math
print(tf.version.GIT_VERSION, tf.version.VERSION)
for lam in [3.2,-3.2,math.inf,-math.inf,math.nan]:
print(lam,tf.random.poisson((1,),tf.convert_to_tensor(lam).numpy()))
描述当前行为
tf.random.poisson
目前似乎以以下方式处理无意义的输入:
- 负值 --> 返回0
- +无穷大值 --> 返回无穷大
- -无穷大值 --> 返回0
- nan值 --> 使程序完全冻结(可能是无限次地运行拒绝采样算法??)
所有这些都看起来没问题,除了最后一个。
描述预期行为
我对此没有强烈的看法。我想我的直觉是:
- 负值 --> 返回nan
- +无穷大值 --> 返回无穷大
- -无穷大值 --> 返回nan
- nan值 --> 返回nan
但可能有其他行为的原因。
至少,我认为应该在文档中添加一些内容,说明预期的行为是什么(或者在某些情况下,这种行为是未定义的)。
2条答案
按热度按时间toiithl61#
@chunduriv ,
我能够在TensorFlow v2.8、v2.7和nightly版本中重现这个问题。请查看gist链接:here。
omqzjyyz2#
这个问题在 TensorFlow 2.15.0 上仍然存在。请检查下面的代码。
$x_1a^0b^1x$