LSTM簡單入門


關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM