2016-10-02 9 views
3

でbidirectional_rnn形成ばかり私は可変入力サイズのためsequence_lengthパラメータでtf.nn.bidirectional_rnnを使用している、と私はminibatchに各サンプルの最終的な出力を取得する方法を見つけ出すことはできません。Tensorflow:出力は可変配列の長さ

output, _, _ = tf.nn.bidirectional_rnn(forward1,backward1,input,dtype=tf.float32,sequence_length=input_lengths) 

ここで、シーケンスの長さが一定であれば、私は単純にoutput[-1]を使用して最終出力を得ます。私の場合、私は可変配列を持っています(長さは知られています)。 また、この出力は前方LSTMと後方LSTMの両方の出力ですか?

ありがとうございました。

答えて

0

この質問は、ソースコードrnn.pyを見ることで回答できます。動的な長さを有する配列について

、ソースコードは言う:

sequence_lengthベクターが提供される場合、動的計算を行う あります。この計算方法は、RNNステップ をミニバッチの最大シーケンス長を超えて計算しない(したがって、 計算時間を節約しない)。 の状態の長さを最終状態出力に適切に伝播する。

したがって、実際の最終出力を得るには、出力結果をスライスする必要があります。 bidirectional_rnnについて

、ソースコードは言う:

タプル(出力、output_state_fw、output_state_bw): 出力は は深さ優先である出力(各入力に対して1つ)、の長さTリストであります連結された前方および後方出力。 output_state_fwは、フォワードrnnの最終状態です。 output_state_bwは、後方rnnの最終状態です。

したがって、出力はテンソルではなくタプルです。 必要に応じて、このタプルをベクトルに連結できます。

関連する問題