深度学习神经网络矩阵维度的变换
首先,以输入特征数为2,样本数为1,层数为2的神经网络举例子(隐藏层1层+输出层1层)激活函数为sigmoid函数所以有以下的网络一般输入层不算入层数,在这里写为第0层。第0层有两个输入特征,1个样本数,所以矩阵维度为[2,1]第1层有4个单元数,所以矩阵维度的第一维为4,第二维为前一层的单元数(即第0层),所以第1层的矩阵维度为[4,2]第2层有1个单元数,所以矩阵维度的第一维为1,第二维为前一
首先,以输入特征数为2,样本数为1,层数为2的神经网络举例子(隐藏层1层+输出层1层)
激活函数为sigmoid函数
所以有以下的网络
一般输入层不算入层数,在这里写为第0层。
第0层有两个输入特征,1个样本数,所以矩阵维度为[2,1]
第1层有4个单元数,所以矩阵维度的第一维为4,第二维为前一层的单元数(即第0层),所以第1层的矩阵维度为[4,2]
第2层有1个单元数,所以矩阵维度的第一维为1,第二维为前一层的单元数(即第1层),所以第2层的矩阵维度为[1,4]
一般一个单元里面有两个计算,一个是线性计算,一个的激活函数
线性计算为 z = W * x + b
激活函数为 a = σ(z)
如果把这两条式子代入神经网络中,
首先把特征数输入第0层,假设有2个特征,1个样本,那么x的维度就是[2,1]
而 W为第一层的参数,所以维度为[4,2]
z[ __, __ ]=W[4,2] * x [2,1] + b[ __ , __]
由矩阵运算可知z的维度应为[4,1]
,所以b的维度也为[4,1]
即z[4, 1 ]=W[4,2] * x [2,1] + b[4,1]
接着经过激活函数a = σ(z)
,所以a的维度也为[4,1]
接着来到第二层,第一层的输出为a,a则作为第二层的输入,所以有:
z = W * a + b
z[ __, __ ]=W[__,__] * a [4,1] + b[ __ , __]
而第二层的参数W的维度为[1,4]
,所以:
z[ __, __ ]=W[1,4] * a [4,1] + b[ __ , __]
同理可得z的维度和b的维度
z[ 1, 1]=W[1,4] * a [4,1] + b[1,1]
接着,接着经过激活函数y= σ(z)
,输出y
那么,可以推广到m个样本
首先把样本输入第0层,假设有2个特征,m个样本,那么x的维度就是[2,m]
而 W为第一层的参数,所以维度为[4,2]
z[ __, __ ]=W[4,2] * x [2,m] + b[ __ , __]
由矩阵运算可知z的维度应为[4,m]
,所以b的维度也为[4,m]
即z[4, m ]=W[4,2] * x [2,m] + b[4,m]
接着经过激活函数a = σ(z)
,所以a的维度也为[4,m]
接着来到第二层,第一层的输出为a,a则作为第二层的输入,所以有:
z = W * a + b
z[ __, __ ]=W[__,__] * a [4,m] + b[ __ , __]
而第二层的参数W的维度为[1,4]
,所以:
z[ __, __ ]=W[1,4] * a [4,m] + b[ __ , __]
同理可得z的维度和b的维度
z[ 1, m]=W[1,4] * a [4,m] + b[1,m]
上面为2层神经网络,接着推广到多层网络:
假设n^L 代表第L层的单元数
那么第L(0层除外)层的w矩阵维度为[n^L ,n^(L-1)]
而第L(0层除外)层的b矩阵维度为[n^L ,m]
m代表样本数
第L(0层除外)层的b矩阵维度也可以为[n^L ,1]
这是因为python有广播机制,他会自动把b复制m份。
更多推荐
所有评论(0)