首页 > 解决方案 > LSTM 的 model.reset_states 会影响模型中的任何其他非 LSTM 层吗?

问题描述

我正在使用 LSTM 的有状态模式,当我处理我的序列数据时tf.keras,我需要手动执行,如此所述。似乎通常人们会这样做,但在我的情况下,我的 LSTM 层嵌入在一个更复杂的网络中,其中包括各种其他层,如 Dense、Conv 等。我的问题是,如果我只是调用嵌入了 LSTM(并且只有一个 LSTM)的主模型,我是否应该担心重置会影响模型中的其他层,例如 Dense 或 Conv 层?寻找 LSTM 层并将调用隔离到该层会更好吗?reset_statesmodel.reset_states()model.reset_states()reset_states

标签: pythontensorflowkeraslstmtf.keras

解决方案


任何具有可设置属性的层 statefulreset_states(); 该方法遍历每一层,检查它是否有stateful=True——如果有,调用它的reset_states()方法;见

在 Keras 中,所有循环层,包括ConvLSTM2D,都有一个可设置的stateful属性——我不知道其他的。tensorflow.keras但是,有很多自定义层实现可能;您可以使用下面的代码来确定:

def print_statefuls(model):
    for layer in model.layers:
        if hasattr(layer, 'reset_states') and getattr(layer, 'stateful', False):
            print(layer.name, "is stateful")

推荐阅读