私はテンソルの流れでリカレントニューラルネットワークを作成しようとしています。ネットワークへの入力は一連のベクトルです。シーケンスの長さは、すべての入力で異なります。私は入力のバッチでこれをやりたい可変シーケンス長のテンソルフローでリカレントニューラルネットワークを作成するにはどうすればいいですか?
どのようにこれを行うには正確に私を助けることができますか?私はテンソルフローサイトのチュートリアルを終えましたが、まだ私には分かりません。
私はテンソルの流れでリカレントニューラルネットワークを作成しようとしています。ネットワークへの入力は一連のベクトルです。シーケンスの長さは、すべての入力で異なります。私は入力のバッチでこれをやりたい可変シーケンス長のテンソルフローでリカレントニューラルネットワークを作成するにはどうすればいいですか?
どのようにこれを行うには正確に私を助けることができますか?私はテンソルフローサイトのチュートリアルを終えましたが、まだ私には分かりません。
あなたはRNN機能は、それが取る引数のhere
つを定義して使用することができますsequence_length
sequence_lengthです:入力中に各シーケンスの長さを指定します。 int32またはint64ベクトル(テンソル)サイズ[batch_size]。値は[0、T]です。
- 入力形状である[sequence_length、BATCH_SIZE、input_size]及びません:ここでは
は、この方法は、理由のカップルのための私には少し混乱した
# x, state, sequence_length are placeholders
outputs, final_state = tf.nn.rnn(lstm_cell, x, state, sequence_length = sequence_lengths)
# add softmax layer, define loss, training method, etc
...
# code for one epoch
iterations = total_data_length/batch_size
max_sequence_length = max(all_possible_sequence_lengths)
cur_state = initial_state
for i in range(iterations):
# x is of dimension [max_sequence_length, batch_size, input_size]
# sequence_lengths is of dimension [batch_size]
x_data, sequence_data, y_data = mini_batch(batch_size)
feed_dict = {k: v for k, v in zip(x, x_data)}
feed_dict.append(sequence_lengths: sequence_data, ...)
outs, cur_state, _ = session.run([outputs, final_state, train], feed_dict)
完全なループを実装する方法であります[batch_size、sequence_length、input_size]。しかし、コード全体を見て、rnn()がどのように実装されているかを見れば、これは完全に理にかなっています。これはまた、matmulに渡すためにアウトプット(入力と同じ次元を持つ)を作り直す必要があることを意味します。例えば、softmaxなどです。
それはあなたのデータセットに依存しますが、あなたが行うことができます:
このhttps://github.com/tensorflow/tensorflow/tree/master/tensorflow/models/rnnモデルは(この場合はranslationのために)何をしたい – Ashish
こんにちはアシシュをし、私はそのコードを通過しようとしましたこの質問をする前にしかし、私は正確にどのようにそれをやっているのか理解できませんでしたか?あなたはコード内の正しい場所を指していますか?ありがとう – akshaybetala