この形式のデータと次の詳細が提供されました。
person1, day1, feature1, feature2, ..., featureN, label
person1, day2, feature1, feature2, ..., featureN, label
...
person1, dayN, feature1, feature2, ..., featureN, label
person2, day1, feature1, feature2, ..., featureN, label
person2, day2, feature1, feature2, ..., featureN, label
...
person2, dayN, feature1, feature2, ..., featureN, label
...
目標は、翌日の人のラベルを予測することです。したがって、dayN + 1のラベルは、1人あたり、または全体として(一人当たりの方が私には理にかなっています)。データは自由に再フォーマットできます(大きくはありません)。上記に基づいて、いくつか読んだ後、動的RNN(LSTM)が最適に機能すると思いました。
私が持っているデータに意味がない場合は、ここで止めてください。問題は次のとおりです。
tensorflow/tflearn用にこのデータを提供/フォーマットする方法は?
Tflearnを使用した this の例を見てきましたが、入力形式がわからないため、「ミラーリング」してマイニングできます。同様に、 this 非常によく似た質問への投稿を見つけましたが、ポスターのサンプルは私のものであるため、相互に関連していないようです。私のテンソルフローの経験は、その はじめに ページに限定されています。
動的:すべての機能が毎日存在するわけではないため
ここでは、動的の概念が間違っています。 Tensorflowの動的RNNは、実行中にグラフが動的に作成されることを意味しますが、入力は常に同じサイズです(機能がないため、0で問題ありません)。
とにかく、ここで得られるのは、特徴ベクトル(feature1 ... featureN)のさまざまな長さ(day1 ... day?)のシーケンスです。まず、 LSTMセル が必要です
cell = tf.contrib.rnn.LSTMcell(size)
したがって、 tf.nn.dynamic_rnn を使用して、動的に展開されたrnnグラフを作成できます。ドキュメントから:
入力:RNN入力。
Time_major == False(デフォルト)の場合、これは形状のテンソル[batch_size、max_time、...]、またはそのような要素のネストされたタプルである必要があります。
ここで、max_timeは入力シーケンスの長さを示します。 dynamic_rnnを使用しているため、コンパイル時にシーケンスの長さを定義する必要はありません。したがって、入力プレースホルダーは次のようになります。
x = tf.placeholder(tf.float32, shape=(batch_size, None, N))
次に、次のようにrnnにフィードされます
outputs, state = tf.nn.dynamic_rnn(cell, x)
つまり、入力データの形状は(batch_size, seq_length, N)
である必要があります。 1つのバッチの例の長さが異なる場合は、最大長まで0ベクトルでそれらを埋め、適切なsequence_length
パラメーターをdynamic_rnn
に渡す必要があります。
明らかに私は多くの詳細をスキップしたので、RNNを完全に理解するには、たとえば this one のような多くの優れたRNNチュートリアルの1つを読む必要があります。