【问题标题】:What is the return_state output using Keras' RNN Layer什么是使用 Keras 的 RNN 层的 return_state 输出
【发布时间】:2018-08-13 20:05:18
【问题描述】:

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

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

参数:

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

输出形状

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

这就是关于 RNN 的 return_state 的所有信息。作为一个初学者,真的很难理解这到底是什么意思,剩下的张量是最后的状态,每个状态都有形状(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输出,而第二个是隐藏状态输出,这和在线课程指令给出的提示不同(因为提示使用第一个输出作为下一个时间步的隐藏状态输出)。

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

对于一个更笼统的问题,比如本例,Keras 没有给初学者友好易懂的文档或示例,如何更有效地学习 Keras?

【问题讨论】:

  • 我建议用pytorch来学习。一切都没有那么隐藏
  • 感谢您的建议。我确实喜欢在在线课程结束后学习。只是我也想更多地了解人们如何学习晦涩难懂的东西,例如Keras,因为我认为在职业生涯中还会有更多这样的问题。

标签: python arguments keras output lstm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    output,h(hidden state),c(memory/ cell state)

    以LSTM为例,可以这样理解:

    c(t) depend on c(t-1);  
    o(t) depend on x(t) and h(t-1);  
    h(t) depend on o(t) and c(t);  
    

    【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2021-12-30
    • 2019-04-27
    • 2020-08-19
    相关资源
    最近更新 更多