Skip to main content
 首页 » 编程设计

python3 ValueError : shapes (4, 1) 和 (4,3) 未对齐 : 1 (dim 1) ! = 4 (dim 0)

2025年05月04日21telwanggs

我正在编写一个带有来自 Coursera 类(class)的隐藏层的平面数据分类程序。

这段代码应该做什么,为什么不起作用?

def backward_propagation(parameters, cache, X, Y): 
    """ 
    Implement the backward propagation using the instructions above. 
 
    """ 
    m = X.shape[1] 
 
    # First, retrieve W1 and W2 from the dictionary "parameters". 
    ### START CODE HERE ### (≈ 2 lines of code) 
    W1 = parameters["W1"] 
    W2 = parameters["W2"] 
    ### END CODE HERE ### 
 
    # Retrieve also A1 and A2 from dictionary "cache". 
    ### START CODE HERE ### (≈ 2 lines of code) 
    A1 = cache["A1"] 
    A2 = cache["A1"] 
    ### END CODE HERE ### 
 
    # Backward propagation: calculate dW1, db1, dW2, db2.  
    ### START CODE HERE ### (≈ 6 lines of code, corresponding to 6 equations on slide above) 
    dZ2= A2-Y 
    dW2 = (1/m)*np.dot(dZ2,A1.T) 
    db2 = (1/m)*np.sum(dZ2, axis=1, keepdims=True) 
    dZ1 = np.multiply(np.dot(W2.T, dZ2),1 - np.power(A1, 2)) 
    dW1 = (1 / m) * np.dot(dZ1, X.T) 
    db1 = (1/m)*np.sum(dZ1,axis1,keepdims=True) 
    ### END CODE HERE ### 
 
    grads = {"dW1": dW1, 
             "db1": db1, 
             "dW2": dW2, 
             "db2": db2} 
 
    return grads 
    parameters, cache, X_assess, Y_assess =      backward_propagation_test_case() 
 
    grads = backward_propagation(parameters, cache, X_assess, Y_assess) 
    print ("dW1 = "+ str(grads["dW1"])) 
    print ("db1 = "+ str(grads["db1"])) 
    print ("dW2 = "+ str(grads["dW2"])) 
    print ("db2 = "+ str(grads["db2"])) 

当我运行这段代码时,我得到了这个错误:

ValueError: shapes (4,1) and (4,3) not aligned: 1 (dim 1) != 4 (dim 0) 

请您参考如下方法:

当两个矩阵相乘时,即 np.dot。第一个矩阵的列和第二个矩阵的行应该相等。这就是 numpy 抛出的错误。您不能将 4x1 矩阵与 4x3 矩阵相乘。