如何计算LSTM网络的参数数量?

是否有办法计算LSTM网络中的总参数数量?

我找到一个例子,但我不确定这个是否正确,或者我是否正确理解了它。

例如,考虑以下例子:

from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Activationfrom keras.layers import Embeddingfrom keras.layers import LSTMmodel = Sequential()model.add(LSTM(256, input_dim=4096, input_length=16))model.summary()

输出

____________________________________________________________________________________________________Layer (type)                       Output Shape        Param #     Connected to                     ====================================================================================================lstm_1 (LSTM)                      (None, 256)         4457472     lstm_input_1[0][0]               ====================================================================================================Total params: 4457472____________________________________________________________________________________________________

根据我的理解,n是输入向量的长度,m是时间步数。在这个例子中,他们认为隐藏层的数量为1。

因此,根据帖子中的公式,我的例子中4(nm+n^2)m=16n=4096num_of_units=256

4*((4096*16)+(4096*4096))*256 = 17246978048

为什么会有这么大的差异?我是否误解了这个例子,还是公式错了?


回答:

不,Keras中LSTM层的参数数量等于:

params = 4 * ((size_of_input + 1) * size_of_output + size_of_output^2)

额外的1来自偏置项。因此,n是输入的大小(增加了偏置项),m是LSTM层的输出大小。

所以最终是:

4 * (4097 * 256 + 256^2) = 4457472

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注