【问题标题】:how to add Highway Wrapper to multilayered bidirectional lstm in tensorflow如何将 Highway Wrapper 添加到 tensorflow 中的多层双向 lstm
【发布时间】:2018-09-06 10:50:19
【问题描述】:

我正在尝试将 Highway Wrapper 或 Residual Wrapper 添加到 tensorflow 中的双向 LSTM。代码如下:

def lstm_cell(self):
    cell = tf.contrib.rnn.LSTMCell(num_units=self.num_units, forget_bias=1.0, state_is_tuple=True, initializer=orthogonal_initializer())
    cell = tf.contrib.rnn.HighwayWrapper(cell)

cells_fw = [self.lstm_cell() for _ in range(self.layer_num)]                                                                                                                                   
cells_bw = [self.lstm_cell() for _ in range(self.layer_num)]                                                                                                                                   
outputs, _, _ = tf.contrib.rnn.stack_bidirectional_dynamic_rnn(cells_fw=cells_fw, cells_bw=cells_bw, inputs=self.features, dtype=tf.float32)

tf.contrib.rnn.stack_bidirectional_dynamic_rnn 的每一层都会输出一个深度为 num_units * 2 的张量(前向和后向输出串联)。所以输出的深度是num_units * 2。但是输入的深度是num_units,不等于输出。使用 Highway Wrapper 时,输入和输出的维度必须相同。我该如何解决这个问题?

【问题讨论】:

    标签: python tensorflow lstm rnn bidirectional


    【解决方案1】:

    我认为你可以尝试自己实现 rnn_fw 和 rnn_bw,并将残差连接分别添加到它们。然后你可以连接它们的输出,并使用连接的向量作为更高级别的 bi-rnn 的输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 2020-11-06
      • 2019-01-25
      • 2017-07-31
      相关资源
      最近更新 更多