本篇文章介紹使用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函數