2017-06-11 25 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は、セル(レイヤー)のリストを返します。各レイヤーは、与えるcellパラメーターで指定されたものと同じネットワークアーキテクチャーを持ちます。詳細については、私が引用したリリースノートを読むことができます。 –

+0

TF 1.0用ですか?私はそれを使用しています –

関連する問題