理解 LSTM 模型的总结

Understand the summary of a LSTM model

我有以下 LSTM 模型。有人可以帮助我理解模型的摘要吗?

a) 如何计算参数#?

b) 我们没有价值?

c) dropoout 附近的 param# 为什么是 0?

model = Sequential()
model.add(LSTM(64, return_sequences=True, recurrent_regularizer=l2(0.0015), input_shape=(timestamps, 
input_dim)))
model.add(Dropout(0.5))
model.add(LSTM(64, recurrent_regularizer=l2(0.0015), input_shape=(timesteps,input_dim)))


model.add(Dense(64, activation='relu'))
model.add(Dense(64, activation='relu'))

model.add(Dense(n_classes, activation='softmax'))
model.summary()

以下是输入,时间戳,x_train

timesteps=100
input_dim= 6
X_train=1120

总结为:

    Layer (type)                 Output Shape              Param #   
=================================================================
    lstm_1 (LSTM)                (None, 100, 64)           18176     
_________________________________________________________________
    dropout_1 (Dropout)          (None, 100, 64)           0         
_________________________________________________________________
    lstm_2 (LSTM)                (None, 64)                33024     
_________________________________________________________________
    dense_1 (Dense)              (None, 64)                4160      
_________________________________________________________________
    dense_2 (Dense)              (None, 64)                4160      
_________________________________________________________________
    dense_3 (Dense)              (None, 6)                 390       
=================================================================
    Total params: 59,910
    Trainable params: 59,910
    Non-trainable params: 0

你的部分问题在这里得到了回答。

https://datascience.stackexchange.com/questions/10615/number-of-parameters-in-an-lstm-model

简而言之,LSTM 模型的参数如此之多的原因是因为您的模型中有大量数据,并且需要训练许多权重以适应模型。

丢弃层没有参数,因为丢弃层中没有权重。一个 dropout 层所做的只是给出一个神经元在测试期间不被包含的概率。在本例中,您选择了 50%。除此之外,在 dropout 层中无需配置任何内容。

  1. 参数是如何计算的?

嗯!!输入维度为 6,第一个 LSTM 层中的隐藏神经元为 64.

所以第一个 LSTM 层采用这种形式的输入 [64(初始化隐藏状态)+ 6(输入)]。所以我们可以说输入维度是 70 [64(t-1 处的隐藏状态)+ 6 t 处的当前输入]。

现在是计算部分。

参数数量 = 输入维度 * 隐藏单元 + 偏差。

         = [64 (randomly initialized hidden state dimension) + 6 (input dimension)]*64( hidden neurons ) + 64 ( bias 1 for each hidden neurons)

         = (64+6)*64+64

一个 FFNN = 4544

但是LSTM有4个FFNN,所以直接乘以4就可以了

总可训练参数 = 4 * 4544

                   = 18176
  1. Dropout层没有任何参数。

  2. 我不确定你说的是哪个值?