關於LSTM及RNN的基礎知識以及相關的數學推導這篇博客介紹的很好,其中還包括神經網絡的其他基礎內容。
RNN循環神經網絡:https://www.zybuluo.com/hanbingtao/note/541458
LSTM長短時記憶網絡:https://zybuluo.com/hanbingtao/note/581764
在這篇博客(Tensorflow實例:利用LSTM預測股票每日最高價):http://blog.csdn.net/mylove0414/article/details/55805974中對如何使用Tensorflow構建LSTM有所介紹。
這類問題解決的步驟:
1、訓練,測試數據處理
將數據從csv或者txt文件中讀取,利用numpy工具轉換成特定的格式,需要特別注意矩陣的維度信息
2、構建神經網絡
1)、調整輸入數據的維度,設定batch_size,time_step,input_size;
這三個參數,關於batch_size,暫時理解為每次喂多少組數據,比方說,訓練時可以將一組數據重復喂給神經網絡去訓練許多次來更新權重,也可以將多組數據喂給神經網絡每組只更新一次權重,batch_size的大小與收斂效果相關
time_step是與RNN相關的一個重要參數,它指神經網絡循環的深度,簡單理解為RNN展開后寬度,在理解一個神經網絡時,可以按左邊的結構去想
Input_size指訓練數據的維數
2)、設置BasicLSTMCell,DropoutWrapper,MultiRNNCell
DropoutWrapper主要有兩個參數需要設定:input_keep_prob及output_keep_prob,它用於解決過擬合的問題。參考文獻:https://arxiv.org/pdf/1409.2329.pdf
介紹DropoutWrapper的博客:http://blog.csdn.net/abclhq2005/article/details/78683656
3)、初始化可用zero_state函數實現
3、構建損失函數與優化目標
4、訓練和測試
tf.nn.dynamic_rnn用於訓練,訓練得到的模型可以使用saver=tf.train.Saver()及saver.save()存儲,利用modle=tf.train.latest_checkpoint()和saver.restore()恢復並測試
其他有用的博客包括:
多層LSTM構建:https://zhuanlan.zhihu.com/p/29797089
RNN與LSTM相關資源:http://suanfazu.com/t/rnn-lstm/13587/1