理解 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 层中无需配置任何内容。
- 参数是如何计算的?
嗯!!输入维度为 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
Dropout层没有任何参数。
我不确定你说的是哪个值?
我有以下 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 层中无需配置任何内容。
- 参数是如何计算的?
嗯!!输入维度为 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
Dropout层没有任何参数。
我不确定你说的是哪个值?