日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

Pytorch实现基本循环神经网络RNN (3)

發(fā)布時(shí)間:2024/9/27 循环神经网络 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch实现基本循环神经网络RNN (3) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.47.Pytorch實(shí)現(xiàn)基本循環(huán)神經(jīng)網(wǎng)絡(luò)RNN (3)

Recurrent Neural networks(Rumelhart, 1986)主要用來(lái)處理序列型數(shù)據(jù),具有對(duì)以往數(shù)據(jù)的記憶功能。下圖所示,輸入為input和一個(gè)狀態(tài)Hidden0, 輸出為output和hidden1.

一般地,對(duì)輸入到RNN進(jìn)行處理的第t個(gè)數(shù)據(jù),也就是第t時(shí)刻,輸出的隱藏狀態(tài)可以表示為:

在RNN對(duì)序列數(shù)據(jù)進(jìn)行處理時(shí),采用參數(shù)共享機(jī)制,即權(quán)重是相同的。RNN有很多變體,上述的是最簡(jiǎn)單的一種形式,中間也可以輸入y(t)。標(biāo)準(zhǔn)RNN如下:

對(duì)時(shí)刻t,更新的方程為:

在實(shí)際中使用nn.RNN()模式即可實(shí)現(xiàn)標(biāo)準(zhǔn)RNN的調(diào)用,下面通過(guò)講解函數(shù)中的參數(shù)來(lái)具體講解RNN的實(shí)用。nn.RNA有如下參數(shù):
input_size:輸入x 的特征數(shù)量
hidden_size:隱藏狀態(tài)h 的特征數(shù)量
num_layers:網(wǎng)絡(luò)層數(shù),默認(rèn)為1層。若2層,兩個(gè)RNN單元進(jìn)行堆疊,第2個(gè)RNN單元將第1個(gè)RNN單元的h 作為輸入。
nonlinearity:實(shí)用tanh或ReLU,默認(rèn)是tanh
bias:False代表不使用偏置b i h b_{ih}bih和b h h b_{hh}bhh,默認(rèn)為T(mén)rue。
batch_first:決定輸入數(shù)據(jù)的維度順序。默認(rèn)輸入是(seq,batch,feature),分別是RNN序列長(zhǎng)度,批量數(shù),特征維度。True表示(batch,seq,feature).
dropout:接收一個(gè)0~1的數(shù)值,會(huì)在網(wǎng)絡(luò)除最后一層之外的其他輸出層加上dropout層,默認(rèn)為0
bidirectional:如果是True,表示雙向的RNN。

維度流程詳解:

>>> import torch.nn as nn >>> rnn = nn.RNN(10, 20, 2) >>> input = torch.randn(5, 3, 10) >>> h0 = torch.randn(2, 3, 20) # h0不初始化則全部為0 >>> output, hn = rnn(input, h0)

建立了一個(gè)堆疊2層的RNN,可通過(guò)如下的屬性獲得權(quán)重和偏置參數(shù):
RNN.weight_ih_l[k]:表示第k kk層的input-hidden權(quán)重。如果k = 0 k=0k=0,表示第0層維度為(hidden_size,input_size),其他層的維度為(hidden_size,num_directions*hidden_size),接收第k ? 1 k-1k?1層傳來(lái)的hidden特征。
RNN.weight_hh_l[k]: 表示第k kk層的hidden-hidden權(quán)重,維度是(hidden_size,hidden_size),接收第t ? 1 t-1t?1時(shí)刻第k kk層的hidden特征。
RNN.bias_ih_l[k]: 表示第k kk層的input-hidden的偏置,維度為(hidden_size)
RNN.bias_hh_l[k]: 表示第k kk層的hidden-hidden的偏置,維度為(hidden_size)

>>> rnn.weight_ih_l0.size() torch.Size([20, 10]) >>> rnn.weight_ih_l1.size() torch.Size([20, 20]) >>> rnn.weight_hh_l0.size() torch.Size([20, 20]) >>> rnn.weight_hh_l1.size() torch.Size([20, 20])

如果誤差為負(fù)對(duì)數(shù)似然,則誤差為:

RNN的缺點(diǎn):
根據(jù)前面的介紹可以了解RNN對(duì)以往數(shù)據(jù)的具有記憶性,但是存在的問(wèn)題就是具有遺忘性,總是更加清楚地記得最近處理的記憶而遺忘之前發(fā)生的事情,只能很好地解決短時(shí)依賴(lài)的問(wèn)題。因?yàn)樘荻仍诜聪騻鞑サ臅r(shí)候, 初始階段的數(shù)據(jù)產(chǎn)生的梯度會(huì)由于指數(shù)級(jí)的相乘而很小。

總結(jié)

以上是生活随笔為你收集整理的Pytorch实现基本循环神经网络RNN (3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。