我试图计算softmax函数的导数。我有一个2d numpy数组,我正在计算沿着轴1的数组的软最大值。同样,我的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)?
发布于 2019-03-12 00:12:46
我将减去z的最大值,并执行如下操作:
def softmax(z):
exps = np.exp(z - z.max())
return exps/np.sum(exps)
以提高稳定性,但是,否则你所做的是正确的。
https://stackoverflow.com/questions/54682964
复制相似问题