将有状态LSTM称为功能模型?

ken*_*ong 7 python machine-learning neural-network keras recurrent-neural-network

我将有状态LSTM定义为顺序模型:

model = Sequential()
model.add(LSTM(..., stateful=True))
...
Run Code Online (Sandbox Code Playgroud)

后来,我将它用作功能模型:

input_1, input_2 = Input(...), Input(...)
output_1 = model(input_1)
output_2 = model(input_2)  # Is the state from input_1 preserved?
Run Code Online (Sandbox Code Playgroud)

input_1当我们model再次申请时,input_2是否保留了州 ?如果是,我如何在呼叫之间重置模型状态?

Mar*_*jko 2

遵循此链接中有关在 RNN 中使用状态性的注释Keras 实现,如果满足以下条件,则答案为“是”

  1. 两个模型中的batch_size是相同的(这很重要,因为 Keras 计算内部状态的方式)。
  2. 您将首先构建并编译这两个模型,然后使用它们 - 由于某种原因,Keras 正在重置build层期间的内部状态(您可以在此处通过查找reset_states方法进行检查)。

如果你想重置状态,你可以reset_states在你想要重置状态的每个循环层上调用方法。