【发布时间】:2021-10-25 20:07:35
【问题描述】:
我正在研究反向传播,但我不明白为什么我们需要划分 'dW_curr' 'm'。我看到的每个代码都这样做,但是为什么呢?如果我们使用交叉熵作为我们的损失函数或每个单独的损失函数,我们是否只需要进行这种划分?
下一个代码来自https://towardsdatascience.com/lets-code-a-neural-network-in-plain-numpy-ae7e74410795。
def single_layer_backward_propagation(dA_curr, W_curr, b_curr, Z_curr, A_prev, activation="relu"):
m = A_prev.shape[1]
if activation is "relu":
backward_activation_func = relu_backward
elif activation is "sigmoid":
backward_activation_func = sigmoid_backward
else:
raise Exception('Non-supported activation function')
dZ_curr = backward_activation_func(dA_curr, Z_curr)
dW_curr = np.dot(dZ_curr, A_prev.T) / m
db_curr = np.sum(dZ_curr, axis=1, keepdims=True) / m
dA_prev = np.dot(W_curr.T, dZ_curr)
return dA_prev, dW_curr, db_curr
【问题讨论】:
标签: python math neural-network backpropagation