我定义了张量,然后变成标量并用作分子。我想事先捕获错误,即分析器得到0。
到目前为止,这是我的代码:
#Some stuff hapens before that gives the numbers for denumerator and numerator
#Set denumerator to 1 for example
def check(): return denumerator= tf.constant([1])
tf.cond(tf.equal(denumerator,tf.zeros([1]),check)
res = tf.divide(numerator,denumerator)
我查看了这里的文档:https://www.tensorflow.org/api_docs/python/tf/cond。但这只解释了如何执行基于条件的图形,而不是如何在满足特定条件时为图形设置特定值。
答案 0 :(得分:1)
您的问题的答案
denumerator = tf.cond(tf.equal(denumerator, 0), lambda: tf.ones(()), lambda: denumerator)
res = tf.divide(numerator, denumerator)
您应该使用的答案
不要将你的除数与零进行比较 - 它不稳健(你可能仍然会遇到微小值的问题)并且结果不是denumerator
的函数的连续性,这在优化设置中通常效果不佳
使用更成熟的技术。例如,如果你知道它是积极的,你可以用1:
来最大化它res = tf.divide(numerator, tf.maximum(denumerator, 1))