2017-03-08 83 views
4

我想在Tensorflow中創建一個多層雙向LSTM。目前我的單層模式是這樣的:多層bidirectional_dynamic_rnn:與MultiRNNCell不兼容?

cell_fw = tf.contrib.rnn.LSTMCell(hidden_size) 
cell_bw = tf.contrib.rnn.LSTMCell(hidden_size) 

(self.out_fw, self.out_bw), _ = tf.nn.bidirectional_dynamic_rnn(cell_fw, cell_bw, input, ...) 

爲了把它變成一個多層次的,我懷疑我能簡單地MultiRNNCell S環繞幾個LSTMCell就像這樣:

multi_cell_fw = tf.contrib.rnn.MultiRNNCell([cell_fw] * num_layers, ...) 

並將它們送入bidirectional_dynamic_rnn,因爲每層中的前向和後向LSTM都需要前一層的向前和向後方向的輸出。目前我的解決方案是在一個循環中創建bidirectional_dynamic_rnn s,輸入前面層的LSTM的連接輸出。

但是,它不是很乾淨坦率地說,我不確定它是否正確,儘管它在玩具數據集上工作。有沒有更好的方法可以使用像MultiRNNCell這樣的東西?

我正在使用Tensorflow API r1.0。

回答

0

只要做到:

multi_cell_fw = tf.contrib.rnn.MultiRNNCell([cell_fw for _ in range(num_layers)], ...)

這應該工作。