Python 在神经网络中使用softmax函数使用反向传播算法

Python 在神经网络中使用softmax函数使用反向传播算法,python,python-3.x,math,neural-network,backpropagation,Python,Python 3.x,Math,Neural Network,Backpropagation,我正在从头开始为MNIST数据创建一个神经网络,所以我在输出层有10个类。我需要执行反向传播,为此,我需要计算最后一层的dA*dZ,其中dA是损失函数Lwrt的导数,softmax激活函数A,dZ是softmax激活函数Awrt到z的导数,其中z=wx+b。dA获得的大小为10*1,而dZ获得的大小为10*10 对吗?如果是,我应该乘谁,因为他们有不同的维度。你就快到了。但是,您需要转置dA,例如使用numpy.transpose(dA)。 然后,您将拥有正确的dA和dZ维度来执行矩阵乘法。谢谢

我正在从头开始为MNIST数据创建一个神经网络,所以我在输出层有10个类。我需要执行反向传播,为此,我需要计算最后一层的
dA*dZ
,其中
dA
是损失函数
L
wrt的导数,softmax激活函数
A
dZ
是softmax激活函数
A
wrt到
z
的导数,其中
z=wx+b
dA
获得的大小为
10*1
,而
dZ
获得的大小为
10*10


对吗?如果是,我应该乘谁,因为他们有不同的维度。

你就快到了。但是,您需要转置
dA
,例如使用
numpy.transpose(dA)

然后,您将拥有正确的
dA
dZ
维度来执行矩阵乘法。

谢谢,顺便问一下,应用softmax和softmax导数是否正确?是的,没错,但不要忘了用
z
相对于
w
的导数相乘。以下链接可能对您有所帮助: