私はtensorflowを使用してLSTMネットを実装しようとしています。tf.nn.static_rnnは、入力と比較して異なるサイズの出力を提供します
iはユニット数= 4
cell = tf.nn.rnn_cell.BasicLSTMCell(4, state_is_tuple=True)
とLSTMcellを有し、私の入力iが4
inputs_series = tf.split(data_hold, 4, axis=1)
に分割2 X 44
(data_hold)行列であります
ですから、各ユニットのサイズは2×11でなければなりません。
私の入力シリーズを確認すると、テンソル形状のリスト2 X 11
が期待通りです。
[<tf.Tensor 'split:0' shape=(2, 11) dtype=float32>, <tf.Tensor 'split:1' shape=(2, 11) dtype=float32>, <tf.Tensor 'split:2' shape=(2, 11) dtype=float32>, <tf.Tensor 'split:3' shape=(2, 11) dtype=float32>]
が、私はstate_series
をチェックするとき、それは形状2 X 4
のテンソルの一覧です。
# initial_state is initial_state = tf.nn.rnn_cell.LSTMStateTuple(state_data_hold, hidden_data_hold)
state_series, current_step = tf.nn.static_rnn(cell=cell, inputs=inputs_series, initial_state=initial_state)
# state_series
[<tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_2:0' shape=(2, 4) dtype=float32>, <tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_5:0' shape=(2, 4) dtype=float32>, <tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_8:0' shape=(2, 4) dtype=float32>, <tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_11:0' shape=(2, 4) dtype=float32>]
私の質問は、状態シリーズと入力シリーズの形状が同じであってはならないということですか?
static_rnn戻りのドキュメントあたりとおり対(出力状態):
出力は出力の長さTリスト(各入力に対して1つ)、またはそのような要素の ネストされたタプル。状態は最終状態です
そして、私がcurrent_stepを印刷すると、現在の単位と隠れた単位のタプルが返されますが、特定の単位はどれですか? (4つの権利がありますか?)
推測どんな?
おかげで、私はそれを理解してくれました。実際には、ロードされたデータを分割することによって、state_sizeと入力数が混乱しました。私の質問の2番目の部分は、それぞれのバッチのタプルがある、私は11のバッチがltmsnetに供給されていると仮定し、各バッチに隠れユニットと現在のユニットがあるので、合計11のタプル、右?だから私は現在の状態を印刷するとき、それは私に最後のバッチのタプルを与えますか? –