【发布时间】:2018-01-09 23:48:52
【问题描述】:
我希望除法返回 0. 为 0./0. 而不是 NaN 或 tensorflow 应用程序中的错误。
我知道如何在 numpy [1]、[2] 中做到这一点,但我是 tensorflow 的新手。
如何做到这一点?
【问题讨论】:
-
tf.where(tf.less(s, 1e-7), s, 1./s) -
是的,稳健性,您通常不应该对浮点数进行精确相等测试,这些测试在现代硬件上可能会不确定地失败 (blog.nag.com/2011/02/wandering-precision.html)
-
@YaroslavBulatov 我想要
tf.realdiv(a, b)的等价物,而不仅仅是倒置。使用div0 = lambda s: tf.where(tf.less(s, 1e-7), s, 1./s),我可以使用a * div0(b),但这既不可读,也不认为这是健壮/最佳性能明智的。 -
对于遇到这种情况的人 - Yaroslav Bulatov 的建议可能会导致 NaN,不管事实上 NaN 位于 tf.where 调用的未采用分支上.在github上看到这个问题:github.com/tensorflow/tensorflow/issues/20091
-
即使这个问题很老了,tf.math.divide_no_nan (tensorflow.org/api_docs/python/tf/math/divide_no_nan) 应该做你想做的事
标签: python tensorflow division