主頁(yè) > 知識(shí)庫(kù) > Pytorch 如何實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè)

Pytorch 如何實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè)

熱門(mén)標(biāo)簽:哈爾濱ai外呼系統(tǒng)定制 海南400電話如何申請(qǐng) 唐山智能外呼系統(tǒng)一般多少錢(qián) 廣告地圖標(biāo)注app 公司電話機(jī)器人 白銀外呼系統(tǒng) 激戰(zhàn)2地圖標(biāo)注 陜西金融外呼系統(tǒng) 騰訊外呼線路

開(kāi)發(fā)環(huán)境說(shuō)明:

Python 35

Pytorch 0.2

CPU/GPU均可

1、LSTM簡(jiǎn)介

人類(lèi)在進(jìn)行學(xué)習(xí)時(shí),往往不總是零開(kāi)始,學(xué)習(xí)物理你會(huì)有數(shù)學(xué)基礎(chǔ)、學(xué)習(xí)英語(yǔ)你會(huì)有中文基礎(chǔ)等等。

于是對(duì)于機(jī)器而言,神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)亦可不再?gòu)牧汩_(kāi)始,于是出現(xiàn)了Transfer Learning,就是把一個(gè)領(lǐng)域已訓(xùn)練好的網(wǎng)絡(luò)用于初始化另一個(gè)領(lǐng)域的任務(wù),例如會(huì)下棋的神經(jīng)網(wǎng)絡(luò)可以用于打德州撲克。

我們這講的是另一種不從零開(kāi)始學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)——循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN),它的每一次迭代都是基于上一次的學(xué)習(xí)結(jié)果,不斷循環(huán)以得到對(duì)于整體序列的學(xué)習(xí),區(qū)別于傳統(tǒng)的MLP神經(jīng)網(wǎng)絡(luò),這種神經(jīng)網(wǎng)絡(luò)模型存在環(huán)型結(jié)構(gòu),

具體下所示:

上圖是RNN的基本單元,通過(guò)不斷循環(huán)迭代展開(kāi)模型如下所示,圖中ht是神經(jīng)網(wǎng)絡(luò)的在t時(shí)刻的輸出,xt是t時(shí)刻的輸入數(shù)據(jù)。

這種循環(huán)結(jié)構(gòu)對(duì)時(shí)間序列數(shù)據(jù)能夠很好地建模,例如語(yǔ)音識(shí)別、語(yǔ)言建模、機(jī)器翻譯等領(lǐng)域。

但是普通的RNN對(duì)于長(zhǎng)期依賴問(wèn)題效果比較差,當(dāng)序列本身比較長(zhǎng)時(shí),由于神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練是采用backward進(jìn)行,在梯度鏈?zhǔn)椒▌t中容易出現(xiàn)梯度消失和梯度爆炸的問(wèn)題,需要進(jìn)一步改進(jìn)RNN的模型結(jié)構(gòu)。

針對(duì)Simple RNN存在的問(wèn)題,LSTM網(wǎng)絡(luò)模型被提出,LSTM的核心是修改了增添了Cell State,即加入了LSTM CELL,通過(guò)輸入門(mén)、輸出門(mén)、遺忘門(mén)把上一時(shí)刻的hidden state和cell state傳給下一個(gè)狀態(tài)。

如下所示:

遺忘門(mén):ft = sigma(Wf*[ht-1, xt] + bf)

輸入門(mén):it = sigma(Wi*[ht-1, xt] + bi)

cell state initial: C't = tanh(Wc*[ht-1, xt] +bc)

cell state: Ct = ft*Ct-1+ itC't

輸出門(mén):ot = sigma(Wo*[ht-1, xt] + bo)

模型輸出:ht = ot*tanh(Ct)

LSTM有很多種變型結(jié)構(gòu),實(shí)際工程化過(guò)程中用的比較多的是peephole,就是計(jì)算每個(gè)門(mén)的時(shí)候增添了cell state的信息,有興趣的童鞋可以專(zhuān)研專(zhuān)研。

上一部分簡(jiǎn)單地介紹了LSTM的模型結(jié)構(gòu),下邊將具體介紹使用LSTM模型進(jìn)行時(shí)間序列預(yù)測(cè)的具體過(guò)程。

2、數(shù)據(jù)準(zhǔn)備

對(duì)于時(shí)間序列,本文選取正弦波序列,事先產(chǎn)生一定數(shù)量的序列數(shù)據(jù),然后截取前部分作為訓(xùn)練數(shù)據(jù)訓(xùn)練LSTM模型,后部分作為真實(shí)值與模型預(yù)測(cè)結(jié)果進(jìn)行比較。正弦波的產(chǎn)生過(guò)程如下:

SeriesGen(N)方法用于產(chǎn)生長(zhǎng)度為N的正弦波數(shù)值序列;

trainDataGen(seq,k)用于產(chǎn)生訓(xùn)練或測(cè)試數(shù)據(jù),返回?cái)?shù)據(jù)結(jié)構(gòu)為輸入輸出數(shù)據(jù)。seq為序列數(shù)據(jù),k為L(zhǎng)STM模型循環(huán)的長(zhǎng)度,使用1~k的數(shù)據(jù)預(yù)測(cè)2~k+1的數(shù)據(jù)。

3、模型構(gòu)建

Pytorch的nn模塊提供了LSTM方法,具體接口使用說(shuō)明可以參見(jiàn)Pytorch的接口使用說(shuō)明書(shū)。此處調(diào)用nn.LSTM構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò),模型另增加了線性變化的全連接層Linear(),但并未加入激活函數(shù)。由于是單個(gè)數(shù)值的預(yù)測(cè),這里input_size和output_size都為1.

4、訓(xùn)練和測(cè)試

(1)模型定義、損失函數(shù)定義

(2)訓(xùn)練與測(cè)試

(3)結(jié)果展示

比較模型預(yù)測(cè)序列結(jié)果與真實(shí)值之間的差距

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Pytorch實(shí)現(xiàn)LSTM和GRU示例
  • pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫(xiě)詩(shī)實(shí)例
  • TensorFlow實(shí)現(xiàn)RNN循環(huán)神經(jīng)網(wǎng)絡(luò)
  • pytorch lstm gru rnn 得到每個(gè)state輸出的操作

標(biāo)簽:黑龍江 黔西 鷹潭 上海 常德 益陽(yáng) 四川 惠州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pytorch 如何實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè)》,本文關(guān)鍵詞  Pytorch,如何,實(shí)現(xiàn),LSTM,時(shí)間序列,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pytorch 如何實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Pytorch 如何實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè)的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章