我确实看过 Andrew Ng 的 DeepLearning 课程,他告诉我们应该创建w
小的参数,例如:
parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l - 1]) ** 0.001
但是在最后的应用程序分配中。他们选择了另一种方式:
layers_dims = [12288, 20, 7, 5, 1]
def initialize_parameters_deep(layer_dims):
np.random.seed(3)
parameters = {}
L = len(layer_dims)
for l in range(1, L):
parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l - 1]) / np.sqrt(layer_dims[l - 1])
parameters['b' + str(l)] = np.zeros((layer_dims[l], 1))
assert (parameters['W' + str(l)].shape == (layer_dims[l], layer_dims[l - 1]))
assert (parameters['b' + str(l)].shape == (layer_dims[l], 1))
return parameters
而且这种方式的结果非常好,但是如果我w
像上面的旧一样选择,那就34%
正确了!
那你能解释一下吗?