Keras LSTM层实施背后的架构是什么?

时间:2018-04-18 06:21:28

标签: python keras lstm

如何将输入尺寸转换为Keras中LSTM图层的输出尺寸?从阅读Colah的blog post开始,似乎"timesteps"input_dim的AKA或input_shape中的第一个值)应该等于神经元的数量,这应该是等于此LSTM图层的输出数量(由units图层的LSTM参数描述。)

从阅读this post,我理解输入形状。令我困惑的是Keras如何将输入插入每个LSTM“智能神经元”。

Keras LSTM reference

困扰我的示例代码:

model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
model.add(Dense(2))

由此,我认为LSTM层有10个神经元,每个神经元被喂食​​长度为64的载体。然而,它似乎有32个神经元,我不知道每个神经元被喂食​​了什么。我知道,对于连接到Dense层的LSTM,我们可以将所有32个输出插入到2个神经元中的每一个。令我困惑的是LSTM的InputLayer。

similar SO post but not quite what I need

3 个答案:

答案 0 :(得分:4)

我是对的!该体系结构是10个神经元,每个神经元代表一个时间步长。每个神经元被馈送64个长度的向量,代表64个特征(input_dim)。

32代表隐藏状态的数量或隐藏单位长度"。它表示有多少隐藏状态,也代表输出维度(因为我们在LSTM末尾输出隐藏状态)。

最后,将来自最后一个时间步的32维输出矢量输入到2个神经元的密集层,这基本上意味着将32个长度的载体插入两个神经元。

更多阅读,有些有用的答案:

答案 1 :(得分:1)

@Sticky,您的解释错误。 Input_shape =(batch_size,sequence_length / timesteps,feature_size)。因此,您的输入张量为10x64(如10个单词及其64个特征。就像单词嵌入一样)。32个神经元使输出矢量大小为32。

输出将具有形状结构:

  1. (批处理,任意步长,单位),如果return_sequences = True。
  2. (批次,单位),如果return_sequences = False。
  3. 内存状态的大小为“单位”。

答案 2 :(得分:0)

我不认为你是对的。实际上,时间步数不会影响LSTM中的参数数。

from keras.layers import LSTM
from keras.models import Sequential

time_step = 13
featrue = 5
hidenfeatrue = 10

model = Sequential()
model.add(LSTM(hidenfeatrue, input_shape=(time_step, featrue)))
model.summary()

time_step=100
model2 = Sequential()
model2.add(LSTM(hidenfeatrue, input_shape=(time_step, featrue)))
model2.summary()

重用:

Using TensorFlow backend.
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_1 (LSTM)                (None, 10)                640       
=================================================================
Total params: 640
Trainable params: 640
Non-trainable params: 0
_________________________________________________________________
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_2 (LSTM)                (None, 10)                640       
=================================================================
Total params: 640
Trainable params: 640
Non-trainable params: 0
_________________________________________________________________