TensorFlow:应用于每个条目的Softmax

2024-10-03 06:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个x类型的张量tf.float32,我想对所有条目应用softmax。不幸的是,内置函数只能沿指定轴应用softmax

我想到的解决办法是:

e = tf.exp(x)
softmaxed = e / tf.reduce_sum(e)

不起作用-如果x的条目太大(例如100),则e无法正确计算


Tags: 函数类型reducetf条目内置sumfloat32
1条回答
网友
1楼 · 发布于 2024-10-03 06:27:09

因为softmax(x) = softmax(x-c)对于任何常数cexp(-c)从所有指数中求因子,并在分子和demoninator之间相消),可以通过减去适当的常数以数值稳定的方式应用softmax。减去所有输入的最大值意味着所有指数都在0到1之间,结果可以稳定地计算出来。试一试:

max_x = tf.reduce_max(x)
e = tf.exp(x-max_x)
softmaxed = e / tf.reduce_sum(e)

相关问题 更多 >