首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解LSTM结构

理解LSTM结构
EN

Data Science用户
提问于 2019-02-18 22:20:03
回答 1查看 1.1K关注 0票数 6

我正在努力学习LSTM,并在LSTM层的结构和输入/输出方面做了一些努力。假设我有这样的网络定义:

代码语言:javascript
复制
timesteps = 50
features = 10
inp = Input(shape=(timesteps, features,), name="input_layer")
x = LSTM(128, return_sequences=True, name="lstm1")(inp)
x = LSTM(64, return_sequences=False, name="lstm2")(x)
x = Dense(128, activation="relu", name="dense1")(x)
x = Dense(64, activation="relu", name="dense2")(x)
x = Dense(1, activation='sigmoid', name="output")(x)
model = Model(inputs=inp, outputs=x)
model.compile(loss='binary_crossentropy', optimizer='adam')

我可以在互联网上找到大量关于LSTM单元内部结构的资源。例如,有一个输入和一些输出的图形。但是我首先想要理解的是,在更高的层次上,LSTM层在不同的配置中提供了什么输入和输出。

假设我的输入数据形状为(1000,50,10)。因此,1000个观察,每一个有50个时间步骤的10个功能。

问题:

我的理解是,第一层("lstm1")将以输入为形状(50,10)。在1000次观测中,每次一次。这10个特性如何输入到LSTM层?它类似于一个密集的层,所以每个输入特性都会以一定的权重进入每个LSTM单元中吗?的回答似乎表明了这一点,但是我不太明白这个答案中每个LSTM“单元”的多个输入是什么(甚至可能是什么“单元”)。

以及内部运作。这里的"lstm1“是否一次处理所有50个时间步骤,然后生成一个输出?在完成所有50个时间步骤之后,下一个层从这个输出中获得它的输入?输出的形状是什么?是shape=(50,128)吗?那么,在这种情况下,输出“特性”集是否是LSTM层中的单元数呢?由于"return_sequences=True",它还在每个时间步骤输出中间值以产生shape=(50,XXX)输出?

这就引出了我关于"lstm2“层的问题。使用"return_sequences=False",它现在是否输出64个值的单个数组?那么shape=(64)?没有值的每个时间步骤,而是只有一个单位在“展开”单元循环结束?

EN

回答 1

Data Science用户

发布于 2019-02-19 16:25:19

添加

代码语言:javascript
复制
model.summary()

产生这个输出

代码语言:javascript
复制
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_layer (InputLayer)     (None, 50, 10)            0         
_________________________________________________________________
lstm1 (LSTM)                 (None, 50, 128)           71168     
_________________________________________________________________
lstm2 (LSTM)                 (None, 64)                49408     
_________________________________________________________________
dense1 (Dense)               (None, 128)               8320      
_________________________________________________________________
dense2 (Dense)               (None, 64)                8256      
_________________________________________________________________
output (Dense)               (None, 1)                 65        
=================================================================
Total params: 137,217
Trainable params: 137,217
Non-trainable params: 0
_________________________________________________________________
  1. LSTM单元表示图层输出的尺寸。
  1. LSTM层(例如lstm1),处理1个输入(本例中为50,10),并生成每个时间步骤的128位表示。
  2. lstm2确实生成了一个64值的向量。它需要学习将输出转换为单个向量所需的~49k参数。

参考资料:

https://www.researchgate.net/publication/13853244

https://www.quora.com/What-is-the-meaning-of-%E2%80%9CThe-number-of-units-in-the-LSTM-cell

https://www.quora.com/What-the-difference-between-an-LSTM-memory-cell-and-an-LSTM-layer

票数 3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/45781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档