我有一些代码随着时间的推移计算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 回答
这是为了防止数据溢出,例如:
如果输出为1000.0,则计算的exp为inf .
如果输出为-1000.0,则计算的exp为0 .
但如果我们减去最大值,就没有问题 .