Python NN的反向传播正确吗

Python NN的反向传播正确吗,python,neural-network,Python,Neural Network,我有三层NN。输入3个神经元,然后3个激活RELU,然后3个激活乙状结肠,然后3个激活Softmax(其输出)。 还有重量: W = np.array([[[0.1, 0.2, 0.3], [0.3, 0.2, 0.7], [0.1, 0.2, 0.3]], [[0.2, 0.3, 0.5], [0.3, 0.5, 0.7], [0.6, 0.4, 0.8]],

我有三层NN。输入3个神经元,然后3个激活RELU,然后3个激活乙状结肠,然后3个激活Softmax(其输出)。 还有重量:

W = np.array([[[0.1, 0.2, 0.3],
             [0.3, 0.2, 0.7],
             [0.1, 0.2, 0.3]],
            [[0.2, 0.3, 0.5],
             [0.3, 0.5, 0.7],
             [0.6, 0.4, 0.8]],
            [[0.1, 0.4, 0.8],
             [0.3, 0.7, 0.2],
             [0.5, 0.2, 0.9]]])
输入和结果:

X = np.array([0.1, 0.2, 0.7])
Y = np.array([1.0, 0.0, 0.0])
前馈:

Z1 = W[0] @ X
H1 = RELU(Z1)
Z2 = W[1] @ H1
H2 = Sigmoid(Z2)
Z3 = W[2] @ H2
H3 = Softmax(Z3)
Loss = CrossEntropy(Ypred,Y)
反向传播:

dLoss = dCrossEntropy(Ypred, Y)
o_error = dLoss
o_delta = dLoss*(dSoftmax(o_error))

z2_error = o_delta*(W[2].T)
z2_delta = z2_error * dSigmoid(Z2)

z1_error = z2_error*(W[1].T)
z1_delta = z1_error * dRELU(Z1)

W[0] += X.T.dot(z1_delta)
W[1] += (Z1.T).dot(z1_delta)
W[2] += (Z2.T).dot(o_delta)
我的反向传播正确吗