【问题标题】:Bidirectional LSTM with Batch Normalization in KerasKeras 中具有批量标准化的双向 LSTM
【发布时间】:2017-11-24 23:55:51
【问题描述】:

我想知道如何在 Keras 中使用批标准化 (BN) 实现 biLSTM。我知道BN层应该介于线性和非线性之间,即激活。这很容易通过 CNN 或 Dense 层实现。但是,如何使用 biLSTM 做到这一点?

提前致谢。

【问题讨论】:

    标签: python keras lstm recurrent-neural-network keras-layer


    【解决方案1】:

    如果你想对 LSTM 的线性输出应用 BatchNormalization,你可以这样做

    from keras.models import Sequential
    from keras.layers.recurrent import LSTM
    from keras.layers.wrappers import Bidirectional
    from keras.layers.normalization import BatchNormalization
    
    model = Sequential()
    model.add(Bidirectional(LSTM(128, activation=None), input_shape=(256,10)))
    model.add(BatchNormalization())
    

    本质上,您正在移除 LSTM 的非线性激活(但不是门激活),然后将 BatchNormalization 应用于输出。

    如果你想要将 BatchNormalization 应用到 LSTM 的内部流程之一,例如循环流程,恐怕这个功能还没有在 Keras 中实现。

    【讨论】:

    • 不过,您随后需要将非线性添加回来。你会怎么做?你可以只添加一个普通的非线性层,但它会包含在循环结构中吗?
    • 您可以在 Bidirectional 和 BatchNormalization 层之间添加一个 Activation 层。但这肯定不会包含在循环结构中,它只会应用于 BiLSTM 层的输出。
    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 2018-06-04
    • 2018-07-28
    • 2019-10-30
    • 1970-01-01
    • 2020-01-15
    • 2018-04-09
    • 2019-05-07
    相关资源
    最近更新 更多