deeplearning.ai 总结 - 如何计算神经网络各部分的shape
flyfish
标记方法采用deeplearning.ai的标记方法
输入层(Input layer)
隐藏层(Hidden layer)
输出层(Output layer)。
上图中是两层神经网络,输出层不算。
输入矩阵X记为
a[0]
a
[
0
]
,
隐藏层输出记为
a[1]
a
[
1
]
。
a[1]1]
a
1
[
1
]
]
表示隐藏层第1个神经元,
a[1]2]
a
2
[
1
]
]
表示隐藏层第2个神经元。
隐藏层有4个神经元写成矩阵的形式是
a[1]=⎡⎣⎢⎢⎢⎢⎢⎢a[1]1a[1]2a[1]3a[1]4⎤⎦⎥⎥⎥⎥⎥⎥
a
[
1
]
=
[
a
1
[
1
]
a
2
[
1
]
a
3
[
1
]
a
4
[
1
]
]
输出层记为
a[2]
a
[
2
]
计算过程
z=wTx+b
z
=
w
T
x
+
b
a=σ(z)
a
=
σ
(
z
)
从输入层到隐藏层的计算
z[1]1=w[1]T1x+b[1]1, a[1]1=σ(z[1]1)
z
1
[
1
]
=
w
1
[
1
]
T
x
+
b
1
[
1
]
,
a
1
[
1
]
=
σ
(
z
1
[
1
]
)
z[1]2=w[1]T2x+b[1]2, a[1]2=σ(z[1]2)
z
2
[
1
]
=
w
2
[
1
]
T
x
+
b
2
[
1
]
,
a
2
[
1
]
=
σ
(
z
2
[
1
]
)
z[1]3=w[1]T3x+b[1]3, a[1]3=σ(z[1]3)
z
3
[
1
]
=
w
3
[
1
]
T
x
+
b
3
[
1
]
,
a
3
[
1
]
=
σ
(
z
3
[
1
]
)
z[1]4=w[1]T4x+b[1]4, a[1]4=σ(z[1]4)
z
4
[
1
]
=
w
4
[
1
]
T
x
+
b
4
[
1
]
,
a
4
[
1
]
=
σ
(
z
4
[
1
]
)
隐藏层到输出层的计算
z[2]1=w[2]T1a[1]+b[2]1, a[2]1=σ(z[2]1)
z
1
[
2
]
=
w
1
[
2
]
T
a
[
1
]
+
b
1
[
2
]
,
a
1
[
2
]
=
σ
(
z
1
[
2
]
)
转换成矩阵计算
Z[1]=W[1]X+b[1]
Z
[
1
]
=
W
[
1
]
X
+
b
[
1
]
A[1]=σ(Z[1])
A
[
1
]
=
σ
(
Z
[
1
]
)
Z[2]=W[2]A[1]+b[2]
Z
[
2
]
=
W
[
2
]
A
[
1
]
+
b
[
2
]
A[2]=σ(Z[2])
A
[
2
]
=
σ
(
Z
[
2
]
)
W[1]
W
[
1
]
的维度是(4,3),4是隐藏层神经元个数,3是输入层特征数
b[1]
b
[
1
]
的维度是(4,1),
W[2]
W
[
2
]
的维度是(1,4),
1对应着输出层神经元个数,4对应着隐藏层神经元个数。
b[2]
b
[
2
]
的维度是(1,1)。
多个样本使用矩阵
fori=1到m
f
o
r
i
=
1
到
m
z[1](i)=W[1]x(i)+b[1]
z
[
1
]
(
i
)
=
W
[
1
]
x
(
i
)
+
b
[
1
]
a[1](i)=σ(z[1](i))
a
[
1
]
(
i
)
=
σ
(
z
[
1
]
(
i
)
)
z[2](i)=W[2]a[1](i)+b[2]
z
[
2
]
(
i
)
=
W
[
2
]
a
[
1
]
(
i
)
+
b
[
2
]
a[2](i)=σ(z[2](i))
a
[
2
]
(
i
)
=
σ
(
z
[
2
]
(
i
)
)
矩阵方式是
Z[1]=W[1]X+b[1]
Z
[
1
]
=
W
[
1
]
X
+
b
[
1
]
A[1]=σ(Z[1])
A
[
1
]
=
σ
(
Z
[
1
]
)
Z[2]=W[2]A[1]+b[2]
Z
[
2
]
=
W
[
2
]
A
[
1
]
+
b
[
2
]
A[2]=σ(Z[2])
A
[
2
]
=
σ
(
Z
[
2
]
)
行是神经元个数,列是样本数目m
Z[1]
Z
[
1
]
和
A[1]
A
[
1
]
的维度是(4,m)
Z[2]
Z
[
2
]
和
A[2]
A
[
2
]
的维度均为(1,m)。