2017-02-26 11 views
6

(Pythonを使用)Tensorflow LSTM-Cellの出力

Tensorflow LSTM-Implementationに関する質問があります。そこTFにおけるいくつかの実装は、現在、私は使用:

n_unitsが「平行」LSTM細胞の量である
cell = tf.contrib.rnn.BasicLSTMCell(n_units) 

はその後、私の出力を取得するために私が呼​​ん:xtime_major=Falseとしては)形状のbatch_sizetime_stepsは量である私のBATCH_SIZE

  • ある(batch_size, time_steps, input_length)
  • ある

    rnn_outputs, rnn_states = tf.nn.dynamic_rnn(cell, x, 
             initial_state=initial_state, time_major=False) 
    
    • 私のRNNが進むまでのタイムステップ
    • ここで、input_lengthは私が別の出力サイズを指定していないとしてrnn_outputs形状(batch_size, time_steps, n_units, input_length)であることを期待私の入力ベクトルのうちの1つ(ベクターが一つの特定のバッチにある特定のタイムステップでネットワークに供給)

    の長さです。 ドキュメントのnn.dynamic_rnnは、出力が形状(batch_size, input_length, cell.output_size)であることを示しています。 tf.contrib.rnn.BasicLSTMCellのドキュメントはn_unitsにデフォルト設定されたプロパティoutput_size、(私が使用LSTM細胞の量を)持っていません。

    したがって、各LSTM-セルのみの出力は、すべての与えられた時間ステップのためのスカラーのでしょうか?私はそれが入力ベクトルの長さのベクトルを出力すると期待しています。これは私が今理解しているところからそうではないようですので、私は混乱しています。それがそうであるかどうか、あるいは1つのlstm-cellあたりの入力ベクトルの大きさのベクトルを出力するように変更する方法を教えてください。

  • +0

    どのLSTMセルが各タイムステップごとにスカラーを出力するという結論に達しましたか? – jabalazs

    +0

    あなたは文脈をよりよく理解するためにコードを見たり実行したりすることができるように、より大きなコードスニペットを投稿できますか? –

    答えて

    2

    私は、プライマリ混乱がLSTMセルの引数の用語であると思う:num_units。残念ながら、それは、名前が示すように、あなたのタイムステップと等しいはずの「LSTM細胞の数」を意味するものではありません。それらは実際には隠れ状態(セル状態+隠れ状態ベクトル)の次元数に対応しています。 がdynamic_rnn()への呼び出しは、形状のテンソルを返す:[batch_size, time_steps, output_size]場合、

    (これに注意してください)output_size = NUM​​_UNITS。 if(num_proj = None)、
    ここで、output_size = num_proj;それが定義されている場合。今

    、一般的に、あなたは最後time_stepの結果を抽出して、手動でmat-mul + biases操作を使用して、出力寸法のサイズに投影し、またはLSTMセルにnum_proj引数を使用します。
    私は同じ混乱を経験しており、それをクリアするには本当に深く見なければなりませんでした。この答えがその一部を消してくれることを願っています。

    関連する問題