Coursera Deeplearning.ai「深度学习」课程笔记L1.W4深层神经网络
深层神经网络
1. 各参数的向量化表示
LLL表示神经网络的层数,输入层的索引为0,对于每层 lll 都用a[l]a^{[l]}a[l]。
用 w[l]w^{[l]}w[l] 来记作在 lll 层计算 z[l]z^{[l]}z[l] 的权重,再通过用激活函数 ggg 计算 a[l]a^{[l]}a[l]。
(1)输入变量A[0]=X=[⋮⋮⋮⋮x(1)x(2)⋯x(m)⋮⋮⋮⋮]维度为_∗m,m为样本数
输入变量A^{[0]}=X = \left[
\begin{matrix}
\vdots & \vdots & \vdots &\vdots \\
x^{(1)} & x^{(2)} & \cdots & x^{(m)} \\
\vdots & \vdots & \vdots &\vdots \\
\end{matrix}
\right] 维度为 \_*m ,m为样本数\tag{1}
输入变量A[0]=X=⎣⎢⎢⎡⋮x(1)⋮⋮x(2)⋮⋮⋯⋮⋮x(m)⋮⎦⎥⎥⎤维度为_∗m,m为样本数(1)
(2)输入变量W[l]=[⋯w(1)⋯⋯w(2)⋯⋮⋯w(h)⋯]维度为h∗_,h为隐藏层节点数 输入变量W^{[l]}=\left[ \begin{matrix} \cdots & w^{(1)} & \cdots \\ \cdots & w^{(2)} & \cdots \\ & \vdots &\\ \cdots & w^{(h)} &\cdots\\ \end{matrix} \right] 维度为 h*\_ ,h为隐藏层节点数\tag{2} 输入变量W[l]=⎣⎢⎢⎢⎡ 4000 ⋯⋯⋯w(1)w(2)⋮w(h)⋯⋯⋯⎦⎥⎥⎥⎤维度为h∗_,h为隐藏层节点数(2)
2. 前向传播
Z[l]=W[l]∗A[l−1]+B[l]Z^{[l]}=W^{[l]}*A^{[l-1]}+B^{[l]}Z[l]=W[l]∗A[l−1]+B[l]
A[l]=g[l](Z[l])A^{[l]}=g^{[l]}(Z^{[l]})A[l]=g[l](Z[l])
3. 反向传播
dZ[l]=dA[l]∗g[l]′(Z[l])dZ^{[l]}=dA^{[l]}*g^{[l]'}(Z^{[l]})dZ[l]=dA[l]∗g[l]′(Z[l])
dW[l]=1mdZ[l]∗A[l−1]TdW^{[l]}=\frac{1}{m}dZ^{[l]}*A^{[l-1]T}dW[l]=m1dZ[l]∗A[l−1]T
dB[l]=1mnp.sum(dZ[l], axis=1, keepdims=True)dB^{[l]}=\frac{1}{m}np.sum(dZ^{[l]},\,axis=1,\,keepdims=True)dB[l]=m1np.sum(dZ[l],axis=1,keepdims=True)
dA[l−1]=W[l]T∗dZ[l]dA^{[l-1]}=W^{[l]T}*dZ^{[l]}dA[l−1]=W[l]T∗dZ[l]
4. 核对矩阵维数
吴恩达:当实现深度神经网络的时候,其中一个我常用的检查代码是否有错的方法就是拿出一张纸过一遍算法中矩阵的维数。
www的维度是(下一层的维数,前一层的维数),即w[l]:(n[l],n[l−1])w^{[l]}:(n^{[l]},n^{[l-1]})w[l]:(n[l],n[l−1]);
bbb的维度是(下一层的维数,1),即b[l]:(n[l],1)b^{[l]}:(n^{[l]},1)b[l]:(n[l],1);
zzz和aaa的维度是,z[l],a[l]:(n[l],1)z^{[l]},a^{[l]}:(n^{[l]},1)z[l],a[l]:(n[l],1)
dw[l]dw^{[l]}dw[l]和w[l]w^{[l]}w[l]维度相同,db[l]db^{[l]}db[l]和b[l]b^{[l]}b[l]维度相同
向量化后:www和bbb向量化维度不变,但zzz,aaa以及xxx的维度会向量化后发生变化。
Z[l]Z^{[l]}Z[l]可以看成由每一个单独的z[l]z^{[l]}z[l]叠加而得到,即
Z[l]=(z[l][1],z[l][2],z[l][3],...,z[l][m])
Z^{[l]}=(z^{[l][1]},z^{[l][2]},z^{[l][3]},...,z^{[l][m]})
Z[l]=(z[l][1],z[l][2],z[l][3],...,z[l][m])
其中,mmm为训练集大小。所以,
ZZZ和AAA的维度是,Z[l],A[l]:(n[l],m)Z^{[l]},A^{[l]}:(n^{[l]},m)Z[l],A[l]:(n[l],m)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习实用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
- Coursera deeplearning.ai 深度学习笔记2-1-Practical aspects of deep learning-神经网络实际问题分析(初始化&正则化&训练效率)与代码实现
- Coursera deeplearning.ai 深度学习笔记1-3-Shallow Neural Networks-浅层神经网络原理推导与代码实现
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络(转载)
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
- Coursera deeplearning.ai 深度学习笔记1-4-Deep Neural Networks-深度神经网络原理推导与代码实现
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- Deeplearning.ai学习笔记-改善深层神经网络(二)-降低方差
- 深度学习DeepLearning.ai系列课程学习总结:5. 浅层神经网络
- [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈
- Coursera Deeplearning.ai「深度学习」课程笔记L5.W1循环序列模型
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络
- Coursera Deeplearning.ai「深度学习」课程笔记L2.W1深度学习的实践层面
- [DeeplearningAI笔记]神经网络与深度学习2.1-2.4神经网络基础
- 深度学习DeepLearning.ai系列课程学习总结:8. 多层神经网络代码实战
- 深度学习DeepLearning.ai系列课程学习总结:2. 神经网络基础