2017-03-13 5 views
2

テンソルは、前の5つの要素を考慮しながら、テンソルフローLSTM/RNNを持つシーケンス内の次の要素を予測する必要があります。私はXとYに何を供給するべきですか?Tensorflow - 予測シーケンス:XとYは何ですか?

X = 1 2 3 4 5 
    6 7 8 9 10 
    11 12 13 14 15 
    ... 

私Yは次のようになります:

Y = 2 3 4 5 6 
    7 8 9 10 11 
    12 13 14 15 16 
    ... ? 

それとも私が養う必要があります1 2 3 4 5から

、私は6

は私の入力シーケンスXがあるとし予測したいですそれ:

X = 1 2 3 4 5 
    2 3 4 5 6 
    3 4 5 6 7 
    .... 

W私のYは:

Y = 6 
    7 
    8 
    ... ? 

これは自動的に行うのですか?

私は、チュートリアルに触発され、今最初のアプローチを使用しています:

x = tf.placeholder(tf.int32, [None, num_steps], name='input_placeholder') 
    y = tf.placeholder(tf.int32, [None, num_steps], name='labels_placeholder') 

    rnn_outputs = tf.reshape(rnn_outputs, [-1, state_size]) 
    y_reshaped = tf.reshape(y, [-1]) 
    logits = tf.matmul(rnn_outputs, W) + b 
    predictions = tf.nn.softmax(logits) 
    total_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y_reshaped)) 

私は実際のコードの時間ステップで(予測のために頼む場合は16で、クラスの数は申し訳ありませんが、14313ですそのために):

 prevSlice = np.array([[1, 2 , 3 , 4, 5, 6 ,7, 8, 9 ,10, 11, 12, 13, 14, 15, 16]], dtype=np.string_) 
     feed_dict={g['x']: prevSlice} 
     preds, state = sess.run([g['preds'],g['final_state']], feed_dict) 

予測が15を超えます。あるいはこれらをどのように解釈すべきですか?次の16個のスライスの予測は必要ありません。

enter image description here

答えて

2

LSTMsequence to sequence予測を行うので、これはあなたの代わりに、単一のタイムステップのあなたの予測因子の出力としてbatch_size長さのシーケンスを与えられていることを意味するものではないでしょう。

つまり、予測と同じサイズのシーケンスが得られます。

編集:

def predict_point_by_point(model, data): 
    #Predict each timestep given the last sequence of true data, in effect only predicting 1 step ahead each time 
    predicted = model.predict(data) 
    predicted = np.reshape(predicted, (predicted.size,)) 
    return predicted 

あなたがそれらの線に沿って何かを行うには、あなたがその1つの時間ステップを占め、あなたのモデルに養う各len(timestep) ための移動ウィンドウを追加することができますので、時間aswellであなたの出力1を追加しました。

+0

ありがとうございます!それは起こっているようです。一度に1ステップずつ行う方が効率的かどうか疑問に思っています。また、16の最も可能性の高いシーケンスを選びたいとします.16個のベクトルのそれぞれから最も可能性の高いものを選んでいますか?(意味することは、最も可能性の高い第1位を選ぶと、 1)? – dorien

+0

私は、最も賢明なものが予測の最初のものを選ぶだろうと思って、LSTMに動いている窓を与えることによってさらに予測します。新しいシーケンスとその確率の最初の要素として1つだけ与えられますが、異なるとは異なるタイムステップを参照するためです。 – SerialDev

+1

私は同意する、それは最も理にかなっているようだ。あなたの助けをありがとう! – dorien

関連する問題