python - 使用 Keras 的 RNN 层的 return_state 输出是什么

标签 python arguments keras output lstm

我查看了 LSTM 层的 Keras 文档,关于 RNN 参数的信息如下:

keras.layers.LSTM(units, return_state=True)

参数:

return_state: bool 值。除了输出之外是否返回最后一个状态。

输出形状

if return_state:张量列表。第一个张量是输出。剩下的张量是最后的状态,每个状态的形状都是(batch_size, units)

这就是关于 RNN 的 return_state 的所有信息。作为初学者,真的很难理解剩下的张量是最后一个状态,每个状态都是shape(batch_size,units)到底是什么意思,不是吗?

我知道有细胞状态 c 和隐藏状态 a 将被传递到下一个时间步。

但是我在做网课编程练习的时候遇到了这个问题。贝娄是作业给出的提示。但是我不明白这三个输出是什么意思。

from keras.layers import LSTM
LSTM_cell = LSTM(n_a, return_state = True)
a, _, c = LSTM_cell(input_x, initial_state=[a, c])

有人说,他们分别是(https://machinelearningmastery.com/return-sequences-and-return-states-for-lstms-in-keras/):

1 最后一个时间步的 LSTM 隐藏状态输出。

2 最后一个时间步的 LSTM 隐藏状态输出(再次)。

3 最后一个时间步的 LSTM 单元状态。

我总是将输出 a 视为 LSTM 的隐藏状态输出,将 c 视为单元状态输出。但是这个人说第一个输出是lstm输出,而第二个是hidden state输出,这和网课教程给的hint不一样(因为hint是用第一个输出作为下一个time step的hidden state输出).

谁能告诉我更多关于这方面的信息?

对于更一般的问题,比如在这种情况下,Keras 没有提供初学者友好易懂的文档或示例,如何更有效地学习 Keras?

最佳答案

考虑如何开始 LSTM 的迭代。您有一个隐藏状态 c,一个输入 x,但您还需要一个所谓的先前输出 h,它与 x 连接。因此,LSTM 有两个需要初始化的隐藏张量:ch。现在 h 恰好是前一个状态的输出,这就是为什么您将它作为输入与 c 一起传递的原因。当您设置 return_state=True 时,ch 都会返回。因此,连同输出,您将收到 3 个张量。

关于python - 使用 Keras 的 RNN 层的 return_state 输出是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49122806/

相关文章:

python:运行外部程序并将输出直接输出到文件并等待完成

python - 在 python 中处理可能是整数或字符的方法的参数的正确方法是什么?

python - 使用预训练的 Inceptionv3 提取瓶颈特征 - Keras 的实现和 Native Tensorflow 实现之间的差异

python - 如何使用 Patsy 创建所有可能的公式组合进行模型选择?

Python float 比较

JavaScript 扩展运算符 ... 与 "arguments"数组

powershell - Start-Job 脚本 block ——如何调用带参数的 cmdlet?

machine-learning - 用于音乐的 LSTM 自动编码器 - Keras [序列到序列]

python-3.x - n_gram 模型 HashingVectorizer 并将其与 keras 一起使用

python - Matlab 中的上下文管理器 : Invoking __enter__ in Matlab