In [4]:
def linear_forward(A_prev, W, b):
    
    Z = np.dot(W, A_prev) + b
    cache = (A_prev, W, b)
    
    return Z, cache