2016-02-17 65 views
2

我想在時間序列數據提供時 - 一次一步地增量構建rnn(在幾個初始步驟之後)。使用TensorFlow RNN的增量連續時間序列

當前rnn()將encoder_input和decoder_input作爲完整序列。

def rnn_seq2seq(encoder_inputs, decoder_inputs, cell, initial_state=None,output_projection=None,feed_previous=False, dtype=tf.float32, scope=None): 
    with tf.variable_scope(scope or "rnn_seq2seq"): 
    _, enc_states = rnn.rnn(cell, encoder_inputs, initial_state=initial_state, dtype=dtype) 

    def extract_argmax(prev, i): 
     with tf.device('/gpu:0'): 
      prev = tf.nn.softmax(tf.nn.xw_plus_b(prev, output_projection[0], output_projection[1])) 
     return prev 

    loop_function = None 
    if feed_previous: 
     loop_function = extract_argmax 

    print enc_states[-1] 
    return seq2seq.rnn_decoder(decoder_inputs, enc_states[-1], cell, loop_function=loop_function) 

feedP = tf.placeholder(dtype=tf.bool) 
with tf.variable_scope("mylstm"): 
    output,state = rnn_seq2seq(enc_inputs,dec_inputs,cell,output_projection=output_projection,feed_previous=feedP) 

是否有可能一次爲decoder_input提供一個步驟而不是整個序列,因爲這是數據如何實時發佈的?

回答

0

結帳Scikit Flow。示例文件夾包含大量與RNN有關的示例,並且有內置的RNN估計器,您可以將其插入現有代碼中。

檢查這fit()方法在估計,你會發現partial_fit(),允許持續培訓,這符合您的需求。許多示例都使用它來繼續在while循環中進行培訓並隨時間保存檢查點(您也可以配置頻率)。

希望這會有所幫助。

+0

partial_fit只需調用fit()函數而不添加任何值。這怎麼會有所幫助?您需要在skflow中指定RNN的模型。在這種情況下模型會是什麼樣子? –

+0

它實際上與fit相同,因爲fit是以接受iterator的方式實現的,或者一次只能取一個樣本。這只是爲了更好的用戶API。這些例子可以幫助您開始,例如seq2seq,RNN/LSTM等希望這有助於。 –