如何在多层RNN中的每一层之后应用顺序批量标准化?

时间:2018-03-18 18:09:52

标签: tensorflow rnn batch-normalization

我正在从this paper重现顺序MNIST实验,在那里他们使用具有6层的递归神经网络,并在每层之后应用批量标准化

他们似乎使用顺序标准化意味着输出不仅在批次之间标准化,而且在时间步骤之间标准化。这是一个问题,因为这意味着我无法修改BasicRNNCell以在单元格的call方法中执行批量规范化。要使其工作,该方法必须知道它在未来的时间步骤中输出的内容。

因此,我目前的解决方案是针对每一层:

  1. 展开RNN图层
  2. 在此
  3. 之后添加批量规范化图层

    在代码中它看起来像这样:

    layer_input = network_input
    for layer in range(6):
      cell = BasicRNNCell(128)
      layer_output, _ = tf.nn.dynamic_rnn(cell, layer_input)
    
      layer_output = tf.layers.batch_normalization(layer_output)
      layer_input = layer_output
    network_output = layer_output
    

    我的问题:为每一层展开RNN似乎是在每一层之后实现顺序批量标准化的强力方式。是否有更有效的方法,例如使用MultiRNNCell的方法?

0 个答案:

没有答案