# DeepLearning.ai作业:(1-4)-- 深层神经网络（Deep neural networks） 1. 不要抄作业！
2. 我只是把思路整理了，供个人学习。
3. 不要抄作业！

# Part1

• Initialize the parameters
• two-layer
• L-layer
• Linear part 先构建一个线性的计算函数
• linear->activation 在构建某一个神经元的线性和激活函数
• L_model_forward funciton 再融合 L-1次的Relu 和 一次 的 sigmoid最后一层
• Compute loss
• backward propagation
• Linear part
• linear->activation
• L_model_backward funciton

## Initialization

w : np.random.randn(shape)*0.01

b : np.zeros(shape)

1. two-layer

2. L-layer

## Forward propagation module

1. Linear Forward

$$Z^{[l]} = W^{[l]}A^{[l-1]} +b^{[l]}$$

where $A^{} = X$.

2. Linear-Activation Forward

3. L-Layer Model

## Cost function

$$-\frac{1}{m} \sum\limits_{i = 1}^{m} (y^{(i)}\log\left(a^{[L] (i)}\right) + (1-y^{(i)})\log\left(1- a^{L}\right))$$

## Backward propagation module

1. Linear backward

$$dW^{[l]} = \frac{\partial \mathcal{L} }{\partial W^{[l]}} = \frac{1}{m} dZ^{[l]} A^{[l-1] T}$$

$$db^{[l]} = \frac{\partial \mathcal{L} }{\partial b^{[l]}} = \frac{1}{m} \sum_{i = 1}^{m} dZ^{[l] (i)}$$

$$dA^{[l-1]} = \frac{\partial \mathcal{L} }{\partial A^{[l-1]}} = W^{[l] T} dZ^{[l]}$$

cache是linear cache: A_prev,W,b

2. Linear-Activation backward

dA通过激活函数的导数可以求得dZ，再由上面的函数，最终：

$$dZ^{[l]} = dA^{[l]} * g’(Z^{[l]})$$

3. L-Model Backward

$$-\frac{y}{a}-\frac{1-y}{1-a}$$

numpy表示为：

# Part2 ## L-layer Neural Network

1. 初始化参数
2. 进入for的n次迭代循环：
1. L_model_forward(X, parameters) 得到 AL,caches
2. 计算cost
3. L_model_backward(AL, Y, caches)计算grads
4. update_parameters(parameters, grads, learning_rate)更新参数
5. 每100层记录一下cost的值
3. 画出cost梯度下降图

2500的迭代次数，精度达到了80%！

part1构建的那些函数，一步步来是比较简单的，但是如果自己要一下子想出来的话，也很难想得到。所以思路要清晰，一步一步来，才能构建好函数！