核对矩阵维数
- 以一个五层神经网络为例:
注:目前我们看到的神经网络只有一个输出神经元。
从神经网络的第一层开始看起:
显然,第一层计算的Z^[1] = W^[1[ * x + b^[1]
的Z^[1]
是一个(3,1)的矩阵(此处我们暂时不使用向量化的方法使多组输入进入到神经网络中),也可写作(n^[1]
,1)矩阵。而对于x,由于有两个特征量,x是一个(n^[0]
,1)也就是(2,1)的矩阵。显然,在此处,使用W^[1]
矩阵和一个(2,1)的矩阵相乘得到一个(3,1)的矩阵,故矩阵W^[1]
是(3,2)的矩阵,即(n^[1]
,n^[0]
)的矩阵。
W^[l]
的维数一定会是(n^[l],n^[l-1])
的,而b^[l]
的维数一定会是(n^[l],1)
的,这样才能实现矩阵乘法和矩阵加法。同样,如果做反向传播,dW和db的维数一定和对应的W和b相同。而a^[l]
是由z^[l]
通过激活函数计算得到的,因此二者的维数相同。 - 而如果使用向量化的方法,
Z^[1]
矩阵的维数不再是(n^[1]
,1)而变为(n^[1]
,m),其中m为训练集的大小。但W^[1]
的维数不变,X变为(n^[0]
,m),b^[1]
的维数不变,因为通过numpy的广播可以将它拓展为(n^[1]
,m)的矩阵。而Z^[l]
,A^[l]
的维数变为(n^[l]
,m
),它们的导数和它们维数相同。