天天看點

使用TensorFlow的遞歸神經網絡(LSTM)進行序列預測

本篇文章介紹使用TensorFlow的遞歸神經網絡(LSTM)進行序列預測。作者在網上找到的使用LSTM模型的案例都是解決自然語言處理的問題,而沒有一個是來預測連續值的。

是以呢,這裡是基于曆史觀察資料進行實數序列的預測。傳統的神經網絡模型并不能解決這種問題,進而開發出遞歸神經網絡模型,遞歸神經網絡模型可以存儲曆史資料來預測未來的事情。

在這個例子裡将預測幾個函數:

正弦函數:sin

同時存在正弦函數和餘弦函數:sin和cos

x*sin(x)

首先,建立LSTM模型,lstm_model,這個模型有一系列的不同時間步的lstm單元(cell),緊跟其後的是稠密層。

所建立的模型期望輸入資料的次元與(batch size,第一個lstm cell的時間步長time_step,特征數量num_features)相關。 

接下來我們按模型所能接受的資料方式來準備資料。

這将會建立一個資料讓模型可以查找過去time_steps步來預測資料。比如,LSTM模型的第一個cell是10 time_steps cell,為了做預測我們需要輸入10個曆史資料點。y值跟我們想預測的第十個值相關。 

現在建立一個基于LSTM模型的回歸量。

預測sin函數

預測測試資料

真實sin函數

預測sin和cos混合函數

真實的sin_cos函數

預測的sin_cos函數

真實的x*sin函數

預測的x*sin函數

繼續閱讀