如何在python中找到softmax的派生版本

如何在python中找到softmax的派生版本,python,numpy,neural-network,deep-learning,calculus,Python,Numpy,Neural Network,Deep Learning,Calculus,我无法实现CIFAR10数据集的多类分类的反向传播 我的神经网络有两层 正向传播 X->L1->L2 权重w2初始化为随机 np.random.randn(L1.shape[0], X.shape[0]) * 0.01 X是输入的大小(无特征*示例数) L1具有ReLu激活 Z2 = (w2 * A1) + b2 A2 = softmax(Z1) L2已激活softmax 使用此方程式计算成本 cost = -(1/m)*np.sum((Y * np.log(A2) ) + ((1 - Y

我无法实现CIFAR10数据集的多类分类的反向传播

我的神经网络有两层

正向传播 X->L1->L2

权重w2初始化为随机

np.random.randn(L1.shape[0], X.shape[0]) * 0.01
X是输入的大小(无特征*示例数)

L1具有ReLu激活

Z2 = (w2 * A1) + b2

A2 = softmax(Z1)
L2已激活softmax

使用此方程式计算成本

cost = -(1/m)*np.sum((Y * np.log(A2) ) + ((1 - Y)*np.log(1-A2)))
反向传播 计算成本的导数

dA2 = -(1/m)*(np.divide(Y, A2) - np.divide(1 - Y, 1 - A2))
dA2=A2的导数

Y=一个热编码真值

现在我如何从这里开始

如何使用dA2查找dZ2(Z2的导数)

请尝试在处询问,因为堆栈溢出是为了解决特定的编码问题,而不是一般的数学问题。MathJax也得到了支持,因此关于数学概念的讨论更容易。
dA2 = -(1/m)*(np.divide(Y, A2) - np.divide(1 - Y, 1 - A2))