Python 3.x Log1Exp在Tensorflow中不可用?
log1pexpx以数值稳定的方式实现log1+expx。遗憾的是,tensorflow.math模块中不存在此函数 使用tensorflow中提供的log1p,这实际上非常容易实现。以下是基于 我可以定义这个函数,但我担心它可能比本机TF实现慢?另外,如果x是一个张量,我希望它能起作用,它应该在元素方面应用,但我不确定如何处理分支 有什么建议吗 如果我必须手动实现它,我将非常感谢您对如何在不必用C编写的情况下尽可能快地实现它的任何建议。尝试:Python 3.x Log1Exp在Tensorflow中不可用?,python-3.x,math,floating-point,numeric,tensorflow2.0,Python 3.x,Math,Floating Point,Numeric,Tensorflow2.0,log1pexpx以数值稳定的方式实现log1+expx。遗憾的是,tensorflow.math模块中不存在此函数 使用tensorflow中提供的log1p,这实际上非常容易实现。以下是基于 我可以定义这个函数,但我担心它可能比本机TF实现慢?另外,如果x是一个张量,我希望它能起作用,它应该在元素方面应用,但我不确定如何处理分支 有什么建议吗 如果我必须手动实现它,我将非常感谢您对如何在不必用C编写的情况下尽可能快地实现它的任何建议。尝试: 事实证明tensorflow确实有此函数的本机实现
事实证明tensorflow确实有此函数的本机实现,但名称为tensorflow.math.softplus
def log1pexp(x):
if x < 9:
return log1p(exp(x))
elif x < 16:
return x + exp(-x)
else:
return x
x = tf.range(20,dtype=tf.float64)
# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
result = tf.where(tf.less(x,9),
tf.log1p(tf.exp(x)),
tf.where(tf.less(x,16),
x + tf.exp(-x),
x))
# [ 0.69314718 1.31326169 2.12692801 3.04858735 4.01814993 5.00671535
# 6.00247569 7.00091147 8.00033541 9.00012341 10.0000454 11.0000167
# 12.00000614 13.00000226 14.00000083 15.00000031 16. 17.
# 18. 19. ]