2016-12-29 13 views
0

テンソルフローのdynamic_rnn関数では、出力形状に驚いて、誰かがRNNセルの理解を向上させることを期待していました。例えばテンソルフローの多次元動的rnn

、入力は以下のように定義されている場合:

seq_size = 5及びinput_dim = 2(すなわち、2つの時系列)と110は、バッチサイズである
x = tf.placeholder(tf.float32, [110, seq_size, input_dim]) 

。そして細胞は、のように定義される

cell = rnn_cell.BasicLSTMCell(hidden_dim) 

ここhidden_​​dim =

Iはdynamic_rnnに

outputs, states = rnn.dynamic_rnn(cell, x, dtype=tf.float32) 

を作成し、[110 5 6]が出力の大きさを確認6。これらの寸法は、seq_sizeによるhidden_​​dimによるバッチサイズです。

質問:

1:これらの寸法は、時系列の時間ステップ当たり6隠れノード30は隠れたノード(X 6 5)よりもむしろ6隠れノードの総数の合計がある暗示。これは正しい解釈ですか?

2:私の入力次元は5×2(各シーケンスで5ステップ、2シーケンス)なので、テンソルフローは各タイムステップで入力を隠れノードにどのように接続するのですか?テンソルフローは、各隠れセルの前に、2つの入力、12の重み、および6つのバイアスを持つ完全に接続されたグラフを仮定していますか?または、他の何か?

+0

質問1:シーケンスごとに5つの隠れノードがあり、各隠れノードは1つの入力/単語に対応しています。 質問2:各入力は2次元空間のベクトルです(例の場合)。 –

+0

1番の答えを理解していません。私は元々考えましたが、各単語/入力に対応する隠れノードが1つありますが、上記の出力の次元はそうでないことを示しています。上記の例では、バッチ要素ごとに[1 5 6]があり、30個の出力があります。また、隠されたノードの数は、Cellの独立変数です(https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/recurrent_network.ipynbなど)。 – Kemp

+0

私は[1 5 6]は5つの出力があり、各出力が6次元のベクトルであることを意味します。あなたは[1 5 2]を提供しました。これは5つの入力を意味し、各入力は2次元ベクトルです。 –

答えて

1

シーケンスは文と入力を単語として考えることができます。シーケンス長は、文中の単語の数であり、LSTMの隠れノードの数でもあります。各入力/単語は、入力を1つの出力にマッピングする1つの隠れノードに対応する。このため、出力数はseq_size(5)です。

単語は、次元数がinput_dimである多次元空間に配置されたベクトルです。 LSTMでは、単語がこの入力空間から次元数がhidden_​​dimの高次元空間にマップされます。このため、各出力のサイズはhidden_​​dim(6)です。

私は、この議論ではエポックは無関係な概念だと思います。 The meaning of batch_size in ptb_word_lm (LSTM model of tensorflow)

+0

質問をより明確に更新しました。私は私の特定の質問がこの言葉にあると思う "単語は、この入力スペースから高次元の空間にマップされています"。マッピングはどのように行われますか?私の言葉が実際のN-D空間にあった場合、各次元はどのように高次元空間(隠れ空間)にマッピングされますか。 – Kemp

+0

weight_matrixのサイズがinput_dim x output_dimのweight_matrixをinput_vectorに乗算することによって、ディメンションが拡張されます。 –

+0

また、リンクを見れば、私はテンソルフローを見るときに、オーバーロードされた用語としてエポックを使用していることに気付きました。上記の質問のエポックは、バッチ上のパスの伝統的なテンソルフローの使用ではなく、複数の時系列(時間的インスタンス、すなわちseq_sizeのインスタンス)の入力の特定の行として使用されます。 – Kemp

関連する問題