Tensorflow 使用非常小的值在张量上应用tf.log时获取-inf

Tensorflow 使用非常小的值在张量上应用tf.log时获取-inf,tensorflow,Tensorflow,我有一个保存密度值的张量,在会话中计算时,取(0,1e-31)中的值。然后我在张量上应用tf.log elementwise,当计算这个张量时,我得到两个元素,它们有-inf 在应用日志之前,当计算时,我的张量的最小值是1.4012985e-45,然后在日志之后,我得到-inf 这会是什么?我认为这可能是因为我使用了tf.float32,但更改为float64仍然会产生-inf值 编辑:问题实际上是由于精度太低造成的。在图形上的所有占位符和变量上使用tf.float64会导致没有-inf值。Te

我有一个保存密度值的张量,在会话中计算时,取(0,1e-31)中的值。然后我在张量上应用tf.log elementwise,当计算这个张量时,我得到两个元素,它们有-inf

在应用日志之前,当计算时,我的张量的最小值是1.4012985e-45,然后在日志之后,我得到-inf

这会是什么?我认为这可能是因为我使用了tf.float32,但更改为float64仍然会产生-inf值


编辑:问题实际上是由于精度太低造成的。在图形上的所有占位符和变量上使用tf.float64会导致没有-inf值。

Tensorflow在使用非常小的值(~1e-50)对tf.float32类型的张量计算tf.log op时输出-inf。为了防止出现此问题,您应该在图表中的所有变量上使用tf.float64。

如果您解决了此问题,也许您可以将您的解决方案发布为答案,并将其标记为已接受,这样人们就不会再出现此问题。只能在2天内接受我的答案。