2017-06-11 56 views
0

我正在嘗試爲Seq2Seq實現多層雙向編碼器。Tensorflow中用於Seq2Seq的多層雙向編碼器

我現在正在做的是以下幾點:

cell = tf.contrib.rnn.LSTMCell(num_size) 
cell = tf.nn.bidirectional_dynamic_rnn(cell_fw =encoder_cell, cell_bw =encoder_cell, ....) 

這將創建一個雙向RNN而是如何使它多層?

我試圖實現的是遵循架構,其中每個LSTM塊是雙向的,並且第n層編碼器的輸出進入第n層解碼器。

enter image description here

我使用Tensorflow 1.0,並使用tf.contrib.seq2seq庫解碼器。

回答

1

它很簡單,只要:

tf.contrib.rnn.MultiRNNCell([在範圍_細胞(num_layers)])

注意,一切被稱爲在此上下文中的細胞(這是一個非常糟糕的命名),包括一個真正的單個神經單元,一個圖層和多個圖層。如版本1.2(https://github.com/tensorflow/tensorflow/releases)的發行說明中所述,嘗試避免*操作以創建多個圖層(以便將來兼容)。

+0

細胞= tf.contrib.rnn.LSTMCell(num_size) 細胞= tf.contrib.rnn.MultiRNNCell([在範圍(num_layers爲_細胞)]) 你建議使用在bidirectional_dynamic_rnn函數此細胞? MultiRnnCell只返回最後一層的輸出。但是解碼器需要每層編碼器的output_state,對嗎?如何實現這一目標? –

+0

MultiRNNCell返回一個單元(層)列表,每個單元具有與給定單元參數所指定的相同的網絡結構。您可以閱讀我引用的發佈說明以瞭解詳細信息。 –

+0

它是否也適用於TF 1.0?我正在使用 –