参考文章中说的很明白了,这里我只是再单纯的写一下笔记。
一、普通的神经网络
假设,对于一个一层神经网络,此网络层有64个units,即隐藏神经元个数是64个,激活函数为sigmoid。输入X是一个128维的向量X,分类的话,有10个类别。问这个神经网络共有多少个参数?
X.shape() = (128,1),隐藏神经元个数是64,为了能够让W1X相乘,那么第一层就要有一个W跟一个b1。其中W1.shape() = (64,128),,b1.shape() = (64,1)
于是再第一层sigmoid激活函数以后以后,得到一个(64,1)的向量,输出有10个类别,也可以认为输出层有10个隐藏单元个数,所以W1.shape()=(10,64),,b2.shape() = (10,1).
也就是说,第一层运算是sigmoid(W1X+b1)=A,
第二层运算是softmax(W2A+b2)。所以共有,(64x128+64)+()10x64+10)个参数。
二、一个LSTM_cell中,共有多少参数
2.1,首先弄明白,keras中的units参数是什么意思
对,就是这么简单,就是这层的隐藏神经单元个数。
2.2,一个cell共有多少个参数呢
假设units = 64
根据上图,我们可以计算,假设a向量是128维向量,x向量是28维向量,那么二者concat以后就是156维向量,为了能相乘,那么Wf就应该是(64,156),同理其余三个框,也应该是同样的shape。于是,在第一层就有参数64x156x4 + 64x4个。
若是把cell外面的参数也算进去,那么假设有10个类,那么对于最终的shape为(64,1)的输出at,还要有一个shape为(10,64)的W跟一个shape为(10,1)的b。