Keras 的 LSTM 真的考虑了细胞状态和之前的输出吗?

Arj*_*jun 6 python lstm keras tensorflow

我在过去的一天中了解了LSTM's ,然后我决定查看一个用于Keras创建它的教程。我看了几个教程,它们都有一个衍生的

model = Sequential()
model.add(LSTM(10, input_shape=(1,1)))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
X,y = get_train()
model.fit(X, y, epochs=300, shuffle=False, verbose=0)
Run Code Online (Sandbox Code Playgroud)

然后他们预测使用

 model.predict(X, verbose=0)
Run Code Online (Sandbox Code Playgroud)

我的问题是:您是否必须给出先前的预测以及输入和细胞状态才能使用 LSTM 预测下一个结果?另外,10 代表什么model.add(LSTM(10, input_shape(1,1))

Ken*_*via -1

你的第一个问题:

您是否必须给出先前的预测以及输入和单元状态才能使用 LSTM 预测下一个结果?

不,你不必这样做。据我了解,它存储在 LSTM 单元中,这就是 LSTM 使用如此多 RAM 的原因

如果您的数据形状如下所示:

(100,1000)
Run Code Online (Sandbox Code Playgroud)

如果将其插入到 fit 函数中,每个时期将在 100 个列表上运行。当 LSTM 移动到下一个列表时,它会在刷新之前记住 1000 个数据图。

第二:

另外,model.add(LSTM(10, input_shape(1,1)) 中的 10 代表什么?

它是输入后第一层的形状,因此您的模型当前的形状为:

1,1 10 1

希望能帮助到你 :)