gpt4 book ai didi

python - Keras 实现中的 LSTM 架构?

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:17 25 4
gpt4 key购买 nike

我是 Keras 的新手,正在浏览 LSTM 及其在 Keras 文档 中的实现细节。这很容易,但突然间我通过了this SO发布和评论。它让我对什么是实际的 LSTM 架构感到困惑:

代码如下:

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

根据我的理解,10 表示编号。时间步长,每个时间步长都被馈送到各自的 LSTM 单元; 64表示没有。每个时间步长的特征。

但是,上面帖子中的评论和实际答案让我对 32 的含义感到困惑。

此外,LSTM 的输出如何连接到Dense 层。

手绘图解说明对可视化架构非常有帮助。

编辑:

至于this another SO post 而言,则表示如果 return_sequences=True,则 32 表示 每个 LSTM 单元 生成的输出向量的长度。

如果这是真的,那么我们如何将 10 个 LSTM 单元中的每一个产生的每个 32 维输出连接到下一个密集层?

此外,请告知第一个 SO 帖子答案是否模棱两可

最佳答案

how do we connect each of 32-dimensional output produced by each ofthe 10 LSTM cells to the next dense layer?

这取决于你想怎么做。假设你有:

model.add(LSTM(32, input_shape=(10, 64), return_sequences=True))

然后,该层的输出形状为 (10, 32)。此时,您可以使用 Flatten 层来获得具有 320 分量的单个矢量,或者使用 TimeDistributed 处理每个分量10 个独立的向量:

model.add(TimeDistributed(Dense(15))

该层的输出形状为(10, 15)相同的权重应用于每个 LSTM 单元的输出。

it's easy to figure out the no. of LSTM cells required for the input(specified in timespan)

How to figure out the no. of LSTM units required in the output?

根据 return_sequences 的值,您可以获取 last LSTM 单元(最后一个时间步)的输出或每个 LSTM 单元的输出。至于输出向量的维数,那只是你必须做出的选择,就像密集层的大小,或卷积层中过滤器的数量一样。

how each of the 32-dim vector from the 10 LSTM cells get connected to TimeDistributed layer?

按照前面的示例,您将有一个 (10, 32) 张量,即 10 个 LSTM 单元中的每一个单元的大小为 32 的向量。 TimeDistributed(Dense(15)) 所做的是创建一个 (15, 32) 权重矩阵和一个大小为 15 的偏置向量,并执行:

for h_t in lstm_outputs:
dense_outputs.append(
activation(dense_weights.dot(h_t) + dense_bias)
)

因此,dense_outputs 的大小为 (10, 15),并且相同的权重应用于每个 LSTM 输出,独立。 p>

请注意,当您不知道需要多少时间步时,一切仍然有效,例如用于机器翻译。在这种情况下,您使用 None 作为时间步长;我写的所有内容仍然适用,唯一的区别是时间步数不再固定。 Keras 将根据需要重复 LSTM、TimeDistributed 等多次(具体取决于输入)。

关于python - Keras 实现中的 LSTM 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com