2017-05-24 4 views
8

テンソルフロー関数tf.nn.dynamic_rnnの出力を理解できません。このドキュメントでは、出力のサイズについてしか説明していませんが、各行/列が何を意味するのかはわかりません。ドキュメントから:tf.nn.dynamic_rnnテンソルフロー関数の出力の解析

出力:RNN出力Tensor

time_major == False(デフォルト)の場合、Tensorの形状: [batch_size, max_time, cell.output_size]になります。

time_major == Trueの場合、これは形のTensor次のようになります。 [max_time, batch_size, cell.output_size]cell.output_sizeは整数 又はTensorShapeオブジェクトの(おそらくネストした)タプルである場合

注、次いでoutputscell.output_sizeにおける形状データに対応する形状 を有するテンソルを含む、cell.output_sizeとして
同じ構造を持つタプルであろう。

状態:最終状態です。 cell.state_sizeがintの場合、 は[batch_size, cell.state_size]となります。
TensorShapeの場合、これはの形になります。
int(おそらくネストされた)のタプル、つまりTensorShapeの場合は、 は対応する形のタプルになります。

outputsテンソルは3次元行列ですが、各行/列は何を表していますか?

答えて

12

tf.dynamic_rnnは、outputsstateの2つの出力を提供します。

  • outputsには、毎時のRNNセルの出力が含まれています。デフォルトのtime_major == Falseを仮定して、それぞれに7つのタイムステップを持つ10の例と、タイムステップごとにサイズ5のフィーチャベクタからなる入力があるとします。入力は10x7x5(batch_size x max_time x features)になります。これを出力サイズ15のRNNセルへの入力として与えます。概念的には、各例の各タイムステップがRNNに入力され、それらのそれぞれについて15ビットのベクトルが得られます。従って、outputsが含むものであり、各時間ステップでRNNセルの出力を有する10x7x15のサイズのテンソル(batch_sizexmax_timexcell.output_size)である。セルの最終出力にのみ関心がある場合は、最後の要素(たとえばoutputs[:, -1, :])を選択するように時間ディメンションをスライスします。
  • stateには、すべての入力を処理した後のRNNの状態が含まれます。 outputsとは異なり、これには時間ステップごとの情報は含まれておらず、最後のステップについての情報(つまり、の後にはの最後のもの)が含まれています。あなたのケースに応じて、州は有用かもしれないし、有用でないかもしれません。たとえば、非常に長いシーケンスがある場合、それらを単一のバッチで処理することができないようにすることができない場合があり、それらを複数のサブシーケンスに分割する必要があります。 stateを無視すると、新しいサブシーケンスを与えるたびに、新しいサブシーケンスを与えるたびに新しいサブシーケンスを開始するようになります。ただし、状態を覚えていれば(例:RNNの状態を正確に把握し、初期状態(通常はすべてゼロ)にリセットするために、後で(initial_stateパラメータをtf.nn.dynamic_rnn)返すことができます。全体のシーケンスを完了した後。 stateの形状は、使用しているRNNセルによって異なる場合がありますが、一般的には、それぞれの例に対応する状態が1つあります(batch_size x state_sizeの1つ以上のテンソル、ここでstate_sizeはセルのタイプとサイズ)。
+2

これは、「状態」は、ネットワークのすべての層で状態を保持していると思います。したがって、GRUを使用している場合、候補レイヤーとゲートレイヤーの出力の状態があり、GRUが多層RNNのセルであった場合、ネットワークの各レイヤーにこれらの状態があります。 – Engineero

+0

@Engineeroはい、そうです、ありがとうございます。私は詳細は述べていませんが、多層RNNセルの状態は、各セルの状態のリストになります.LSTMセルはテンソルのペアなどとなります。 – jdehesa

+0

@jdehesa - 私が提起したこの別の質問をご覧ください。 https://stackoverflow.com/questions/44116689/siamese-model-with-lstm-network-fails-to-train-using-tensorflow – Mithun