tensorflow `tf.random.poisson`挂在nan输入上

rmbxnbpk  于 3个月前  发布在  其他
关注(0)|答案(2)|浏览(32)

在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

但可能有其他行为的原因。
至少,我认为应该在文档中添加一些内容,说明预期的行为是什么(或者在某些情况下,这种行为是未定义的)。

toiithl6

toiithl61#

@chunduriv ,
我能够在TensorFlow v2.8、v2.7和nightly版本中重现这个问题。请查看gist链接:here

omqzjyyz

omqzjyyz2#

这个问题在 TensorFlow 2.15.0 上仍然存在。请检查下面的代码。

$x_1a^0b^1x$

相关问题