テンソルフローの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つのバイアスを持つ完全に接続されたグラフを仮定していますか?または、他の何か?
質問1:シーケンスごとに5つの隠れノードがあり、各隠れノードは1つの入力/単語に対応しています。 質問2:各入力は2次元空間のベクトルです(例の場合)。 –
1番の答えを理解していません。私は元々考えましたが、各単語/入力に対応する隠れノードが1つありますが、上記の出力の次元はそうでないことを示しています。上記の例では、バッチ要素ごとに[1 5 6]があり、30個の出力があります。また、隠されたノードの数は、Cellの独立変数です(https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/recurrent_network.ipynbなど)。 – Kemp
私は[1 5 6]は5つの出力があり、各出力が6次元のベクトルであることを意味します。あなたは[1 5 2]を提供しました。これは5つの入力を意味し、各入力は2次元ベクトルです。 –