本文章内容:
Coursera吴恩达深度学习课程,
第二课改善深层神经网络:超参数调试、正则化以及优化(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization)
第一周:深度学习的实用层面(Practical aspects of Deep Learning)
包含三个部分,Initialization, L2 regularization , gradient checking
编程作业,记错本。
Initialization
the first assignment of "Improving Deep Neural Networks".
By completing this assignment you will:
- Understand that different regularization methods that could help your model.
- Implement dropout and see it work on data.
- Recognize that a model without regularization gives you a better accuracy on the training set but nor necessarily on the test set.
- Understand that you could use both dropout and regularization on your model.
2 - Zero initialization
Training your neural network requires specifying an initial value of the weights. A well chosen initialization method will help learning. (防止对称权重错误,it fails to "break symmetry",)
我的:
for l in range(1, L):
### START CODE HERE ### (≈ 2 lines of code)
parameters['W' + str(l)] = np.random.rand(np.shape(layers_dims[L], layers_dims[L-1]))
parameters['b' + str(l)] = np.random.rand(np.shape(layers_dims[L], 1))
### END CODE HERE ###
return parameters
正确:
parameters['W' + str(l)] = np.zeros((layers_dims[l], layers_dims[l-1]))
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
反思:
1.用循环内部的值小L,不是外面的那个大L
2. np.zeros的用法,内部直接设置维度。
3 - Random initialization
To break symmetry, lets intialize the weights randomly.
我的: parameters['W' + str(l)] = np.random.randn(layers_dims[l],layers_dims[l-1]) * 10 parameters['b' + str(l)] = np.zeros(layers_dims[l],1) |
正确: parameters['b' + str(l)] = np.zeros((layers_dims[l],1)) |
反思: np.zeros((维度)) |