首页 文章

Softmax随着时间的推移计算功能?

提问于
浏览
0

我有一些代码随着时间的推移计算Softmax,但我无法理解一条线 . 有人能为我解释一下吗?

def softmax_over_time(x):
        assert(K.ndim(x) > 2)
        e = K.exp(x - K.max(x, axis=1, keepdims=True))
        s = K.sum(e, axis=1, keepdims=True)
        return e / s

任何人都可以向我解释为什么我们使用“x - K.max(x,axis = 1,keepdims = True)”?我认为真的必须是“K.max(x,axis = 1,keepdims = True)”?

1 回答

  • 0

    这是为了防止数据溢出,例如:

    如果输出为1000.0,则计算的exp为inf .

    import numpy as np
    print(np.exp(1000.0))
    inf
    

    如果输出为-1000.0,则计算的exp为0 .

    import numpy as np
    print(np.exp(-1000.0))
    0.0
    

    但如果我们减去最大值,就没有问题 .

相关问题