【问题标题】:TensorFlow: Softmax applied to each entryTensorFlow:Softmax 应用于每个条目
【发布时间】:2018-08-09 13:00:21
【问题描述】:

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

我想到的解决方案:

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

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

【问题讨论】:

    标签: python tensorflow softmax


    【解决方案1】:

    因为softmax(x) = softmax(x-c) 对于任何常数cexp(-c) 是所有指数的因子,并在分子和分母之间抵消),您可以通过减去适当的常数以数值稳定的方式应用 softmax。减去所有条目的最大值意味着所有指数都在 0 和 1 之间,并且可以稳定地计算结果。试试这个:

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

    【讨论】:

      猜你喜欢
      • 2019-09-11
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2019-04-23
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多