本文章内容:
Coursera吴恩达深度学习课程,第一课神经网络和深度学习Neural Networks and Deep Learning,
第一周:深度学习引言(Introduction to Deep Learning)
编程改错本。
我的:
### START CODE HERE ### (≈ 3 lines of code)
shape_X = np.shape(X)
shape_Y = np.shape(Y)
#shape_Y = Y.shape
m = # training set size
### END CODE HERE ###
正确:
shape_X = X.shape
shape_Y = Y.shape
m = shape_X[1] # training set size### END CODE HERE ###
反思:
直接取数组的第二个数。
我的:
n_x = X[0]# size of input layer
n_h = 4
n_y = Y[0] #size of output layer
正确:
n_x = X.shape[0] # size of input layer
n_h = 4
n_y = Y.shape[0] # size of output layer
反思:shape函数是numpy.core.fromnumeric中的函数,它的功能是查看矩阵或者数组的维数。
我的:
W1 = np.random.randn(n_h,n_x)
b1 = np.zeros((n_h, 1))
W2 = np.random.randn(n_y,n_h)
b2 = np.zeros((n_y, 1))
正确:
W1 = np.random.randn(n_h, n_x)* 0.01
b1 = np.zeros((n_h, 1))
W2 = np.random.randn(n_y, n_h)* 0.01
b2 = np.zeros((n_y, 1))
反思:
忘记了0.01
我的:
dZ2 = A2-Y
dW2 = 1/m* np.dot(dZ2,A1.T)
db2 = 1/m * np.sum( dZ2, axis=1, keepdims=True)
dZ1 = np.dot(W2.T, dZ2) * 1-np.power(A1,2)
dW1 = 1/m * np.dot(dZ1, X.T)
db1 = 1/m * np.sum( dZ1, axis=1, keepdims=True)
正确:
dZ2 = A2 - Y
dW2 = 1/m * np.dot(dZ2, A1.T)
db2 = 1/m * np.sum(dZ2, axis=1, keepdims=True)
dZ1 = np.dot(W2.T, dZ2) * (1 - np.power(A1, 2))
dW1 = 1/m * np.dot(dZ1, X.T)
db1 = 1/m * np.sum(dZ1, axis=1, keepdims=True)
反思:第二项元素乘法的时候忘记了(),经验:在复杂的公式中,丢掉()会有意想不到的事情发生。