我有一些代码可以随时间计算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)”吗?
答案 0 :(得分: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
但是如果我们减去最大值,就不会有问题。