2016-06-29 3 views
4

tf.nn.dynamic_rnnグラフ操作を使用してTensorFlow 0.9.0で単語埋め込みと再帰的ニューラルネットワークを使用して言語モデルを作成しようとしていますが、inputテンソルがどのように構造化されているのか分かりません。TensorFlowのtf.nn.dynamic_rnn演算子の入力テンソルはどのように構造化されていますか?

私はのコーパスがnワードであるとしましょう。私は各単語を長さeのベクトルに埋め込み、私はRNNをtタイムステップに展開します。デフォルトのtime_major = Falseパラメータを使用すると仮定すると、私のinputテンソル[batch_size, max_time, input_size]の形状はどのようになりますか?

おそらく特定の小さな例では、この疑問が明確になります。私はコーパスがn = 8のようになっているとします。 > [10、10、10]、2 - - > [20、20、20]、及び3 -

1, 2, 3, 3, 2, 1, 1, 2 

私は埋め込み1サイズE = 3のベクターに埋め込む言います> [30、30、30]、私のinputテンソルの外観はどうですか?

TensorFlow Recurrent Neural Network tutorialは読んでいますが、tf.nn.dynamic_rnnは使用していません。私もtf.nn.dynamic_rnnのドキュメントを読んだことがありますが、混乱しています。特に、ここでは「max_time」と「input_size」が何を意味するのかよくわかりません。

誰がNトン、およびE、および/またはそのテンソルは、私が説明する小さなコーパスからのデータで初期化されたどのように見えるかの例の観点でinputテンソルの形状を与えることができます?あなたは、単一の例を見ているので、

TensorFlow 0.9.0、Pythonの3.5.1、あなたの場合はOS X 10.11.5

答えて

3

は、それは、batch_size = 1のように見えます。従ってmax_timeはのn=8であり、input_sizeは入力深度です。したがって、[1, 8, 3]の形をしたinputテンソルを作成したいと考えています。これはbatch_majorなので、最初の次元(バッチ次元)は1です。たとえば、n=6単語でもう1つの入力があった場合は、この2番目の例を8単語(最後の2単語埋め込みのために0をパディング)にパディングして組み合わせると、inputsのサイズになります[2, 8, 3]

+0

これは、トレーニングセット全体が1つのテンソルに入る必要があることを意味しますか?本当に大きな訓練セットで記憶に問題が生じるのではないでしょうか? –

+0

いいえ。ミニバンで訓練することができます。すなわち、一度に16または32の例の集合である。 'tf.batch'と' tf.batch_join'を見てください。特にこの議論のためには 'dynamic_pad = True'の引数があります。 –

+1

小さなデータセットの場合、単純な 'feed_dict'メカニズムを使用するという考えですが、大きなセットにスケールアップするときは、ファイル読み込みパイプラインを使用する必要がありますか? https://www.tensorflow.org/versions/r0.9/how_tos/reading_data/index.html#reading-from-files –

関連する問題