Python 如何在tensorflow中向多层双向lstm添加公路包装

Python 如何在tensorflow中向多层双向lstm添加公路包装,python,tensorflow,lstm,rnn,bidirectional,Python,Tensorflow,Lstm,Rnn,Bidirectional,我正在尝试向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)

我正在尝试向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\u bidirectional\u dynamic\u rnn的每一层将输出一个深度为num\u units*2的张量(通过向前和向后输出连接)。所以输出的深度是num_units*2。但是输入的深度是num_单位,它不等于输出。使用高速公路包装器时,输入和输出的维度必须相同。如何解决此问题?

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