Softmax函数的导数

问题描述 投票:1回答:1

我试图计算softmax函数的导数。我有一个2d numpy数组,我正在计算沿轴1的数组的softmax。我的python代码是:

def softmax(z):

     return np.exp(z) / np.sum(np.exp(z), axis=1, keepdims=True)

现在我用于计算softmax方程导数的python代码是:

def softmax_derivative(Q):

    x=softmax(Q)
    s=x.reshape(-1,1)
    return (np.diagflat(s) - np.dot(s, s.T))

这是正确的方法吗?

此外,如果我的numpy数组有一个形状(3,3)那么softmax衍生返回的数组的形状是什么?返回的数组的形状是否为(9,9)?

python machine-learning softmax
1个回答
-1
投票

我会减去z的最大值,并执行以下操作:

def softmax(z):
     exps = np.exp(z - z.max())
     return exps/np.sum(exps)

提高稳定性,但是,你所做的是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.