我查看了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?
答案 0 :(得分:0)
考虑如何开始LSTM的迭代。您有一个隐藏状态c
,一个输入x
,但您还需要一个声称的前一个输出h
,它与x
连接在一起。因此,LSTM需要初始化两个隐藏的张量:c
和h
。现在h
碰巧是前一个状态的输出,这就是你将它作为输入与c
一起传递的原因。设置return_state=True
后,系统会返回c
和h
。因此,与输出一起,您将获得3个张量。
答案 1 :(得分:0)
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);