deeplearning.ai 总结 - 如何计算神经网络各部分的shape
·
deeplearning.ai 总结 - 如何计算神经网络各部分的shape
flyfish
标记方法采用deeplearning.ai的标记方法
输入层(Input layer)
隐藏层(Hidden layer)
输出层(Output layer)。
上图中是两层神经网络,输出层不算。
输入矩阵X记为
a[0]a[0]
<script type="math/tex; mode=display" id="MathJax-Element-35">a^{[0]}</script>,
隐藏层输出记为
a[1]a[1]
<script type="math/tex; mode=display" id="MathJax-Element-36">a^{[1]}</script>。
a[1]1]a1[1]]
<script type="math/tex; mode=display" id="MathJax-Element-37">a_1^{[1]}]</script>表示隐藏层第1个神经元,
a[1]2]a2[1]]
<script type="math/tex; mode=display" id="MathJax-Element-38">a_2^{[1]}]</script>表示隐藏层第2个神经元。
隐藏层有4个神经元写成矩阵的形式是
a[1]=⎡⎣⎢⎢⎢⎢⎢⎢a[1]1a[1]2a[1]3a[1]4⎤⎦⎥⎥⎥⎥⎥⎥a[1]=[a1[1]a2[1]a3[1]a4[1]]
<script type="math/tex; mode=display" id="MathJax-Element-39"> \boldsymbol{a^{[1]}}= \left[ \begin{matrix} a_1^{[1]} \\ a_2^{[1]} \\ a_3^{[1]} \\ a_4^{[1]} \end{matrix} \right] </script>
输出层记为
a[2]a[2]
<script type="math/tex; mode=display" id="MathJax-Element-40">a^{[2]}</script>
计算过程
z=wTx+bz=wTx+b
<script type="math/tex; mode=display" id="MathJax-Element-41">z=w^Tx+b</script>
a=σ(z)a=σ(z)
<script type="math/tex; mode=display" id="MathJax-Element-42">a=\sigma(z)</script>
从输入层到隐藏层的计算
z[1]1=w[1]T1x+b[1]1, a[1]1=σ(z[1]1)z1[1]=w1[1]Tx+b1[1], a1[1]=σ(z1[1])
<script type="math/tex; mode=display" id="MathJax-Element-43">z_1^{[1]}=w_1^{[1]T}x+b_1^{[1]},\ a_1^{[1]}=\sigma(z_1^{[1]})</script>
z[1]2=w[1]T2x+b[1]2, a[1]2=σ(z[1]2)z2[1]=w2[1]Tx+b2[1], a2[1]=σ(z2[1])
<script type="math/tex; mode=display" id="MathJax-Element-44">z_2^{[1]}=w_2^{[1]T}x+b_2^{[1]},\ a_2^{[1]}=\sigma(z_2^{[1]})</script>
z[1]3=w[1]T3x+b[1]3, a[1]3=σ(z[1]3)z3[1]=w3[1]Tx+b3[1], a3[1]=σ(z3[1])
<script type="math/tex; mode=display" id="MathJax-Element-45">z_3^{[1]}=w_3^{[1]T}x+b_3^{[1]},\ a_3^{[1]}=\sigma(z_3^{[1]})</script>
z[1]4=w[1]T4x+b[1]4, a[1]4=σ(z[1]4)z4[1]=w4[1]Tx+b4[1], a4[1]=σ(z4[1])
<script type="math/tex; mode=display" id="MathJax-Element-46">z_4^{[1]}=w_4^{[1]T}x+b_4^{[1]},\ a_4^{[1]}=\sigma(z_4^{[1]})</script>
隐藏层到输出层的计算
z[2]1=w[2]T1a[1]+b[2]1, a[2]1=σ(z[2]1)z1[2]=w1[2]Ta[1]+b1[2], a1[2]=σ(z1[2])
<script type="math/tex; mode=display" id="MathJax-Element-47">z_1^{[2]}=w_1^{[2]T}a^{[1]}+b_1^{[2]},\ a_1^{[2]}=\sigma(z_1^{[2]})</script>
转换成矩阵计算
Z[1]=W[1]X+b[1]Z[1]=W[1]X+b[1]
<script type="math/tex; mode=display" id="MathJax-Element-48">Z^{[1]}=W^{[1]}X+b^{[1]}</script>
A[1]=σ(Z[1])A[1]=σ(Z[1])
<script type="math/tex; mode=display" id="MathJax-Element-49">A^{[1]}=\sigma(Z^{[1]})</script>
Z[2]=W[2]A[1]+b[2]Z[2]=W[2]A[1]+b[2]
<script type="math/tex; mode=display" id="MathJax-Element-50">Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}</script>
A[2]=σ(Z[2])A[2]=σ(Z[2])
<script type="math/tex; mode=display" id="MathJax-Element-51">A^{[2]}=\sigma(Z^{[2]})</script>
W[1]W[1]
<script type="math/tex; mode=display" id="MathJax-Element-52">W^{[1]}</script>的维度是(4,3),4是隐藏层神经元个数,3是输入层特征数
b[1]b[1]
<script type="math/tex; mode=display" id="MathJax-Element-53">b^{[1]}</script>的维度是(4,1),
W[2]W[2]
<script type="math/tex; mode=display" id="MathJax-Element-54">W^{[2]}</script>的维度是(1,4),
1对应着输出层神经元个数,4对应着隐藏层神经元个数。
b[2]b[2]
<script type="math/tex; mode=display" id="MathJax-Element-55">b^{[2]}</script>的维度是(1,1)。
多个样本使用矩阵
fori=1到mfori=1到m
<script type="math/tex; mode=display" id="MathJax-Element-56">for i=1 到 m</script>
z[1](i)=W[1]x(i)+b[1] z[1](i)=W[1]x(i)+b[1]
<script type="math/tex; mode=display" id="MathJax-Element-57">\ \ \ \ z^{[1](i)}=W^{[1]}x^{(i)}+b^{[1]}</script>
a[1](i)=σ(z[1](i)) a[1](i)=σ(z[1](i))
<script type="math/tex; mode=display" id="MathJax-Element-58">\ \ \ \ a^{[1](i)}=\sigma(z^{[1](i)})</script>
z[2](i)=W[2]a[1](i)+b[2] z[2](i)=W[2]a[1](i)+b[2]
<script type="math/tex; mode=display" id="MathJax-Element-59">\ \ \ \ z^{[2](i)}=W^{[2]}a^{[1](i)}+b^{[2]}</script>
a[2](i)=σ(z[2](i)) a[2](i)=σ(z[2](i))
<script type="math/tex; mode=display" id="MathJax-Element-60">\ \ \ \ a^{[2](i)}=\sigma(z^{[2](i)})</script>
矩阵方式是
Z[1]=W[1]X+b[1]Z[1]=W[1]X+b[1]
<script type="math/tex; mode=display" id="MathJax-Element-61">Z^{[1]}=W^{[1]}X+b^{[1]}</script>
A[1]=σ(Z[1])A[1]=σ(Z[1])
<script type="math/tex; mode=display" id="MathJax-Element-62">A^{[1]}=\sigma(Z^{[1]})</script>
Z[2]=W[2]A[1]+b[2]Z[2]=W[2]A[1]+b[2]
<script type="math/tex; mode=display" id="MathJax-Element-63">Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}</script>
A[2]=σ(Z[2])A[2]=σ(Z[2])
<script type="math/tex; mode=display" id="MathJax-Element-64">A^{[2]}=\sigma(Z^{[2]})</script>
行是神经元个数,列是样本数目m
Z[1]Z[1]
<script type="math/tex; mode=display" id="MathJax-Element-65">Z^{[1]}</script>和
A[1]A[1]
<script type="math/tex; mode=display" id="MathJax-Element-66">A^{[1]}</script>的维度是(4,m)
Z[2]Z[2]
<script type="math/tex; mode=display" id="MathJax-Element-67">Z^{[2]}</script>和
A[2]A[2]
<script type="math/tex; mode=display" id="MathJax-Element-68">A^{[2]}</script>的维度均为(1,m)。更多推荐
所有评论(0)