




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
循環(huán)神經(jīng)網(wǎng)絡(luò)《Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐》XXX大學(xué)前導(dǎo)圖前饋網(wǎng)絡(luò)連接存在層與層之間,每層的節(jié)點(diǎn)之間是無連接的。(無循環(huán))輸入和輸出的維數(shù)都是固定的,不能任意改變。無法處理變長(zhǎng)的序列數(shù)據(jù)。前饋網(wǎng)絡(luò)假設(shè)每次輸入都是獨(dú)立的,也就是說每次網(wǎng)絡(luò)的輸出只依賴于當(dāng)前的輸入。延時(shí)神經(jīng)網(wǎng)絡(luò)(TimeDelayNeuralNetwork,TDNN)建立一個(gè)額外的延時(shí)單元,用來存儲(chǔ)網(wǎng)絡(luò)的歷史信息(可以包括輸入、輸出、隱狀態(tài)等)這樣,前饋網(wǎng)絡(luò)就具有了短期記憶的能力。如何給網(wǎng)絡(luò)增加記憶能力?/publication/12314435_Neural_system_identification_model_of_human_sound_localization循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)循環(huán)神經(jīng)網(wǎng)絡(luò)通過使用帶自反饋的神經(jīng)元,能夠處理任意長(zhǎng)度的時(shí)序數(shù)據(jù)。循環(huán)神經(jīng)網(wǎng)絡(luò)比前饋神經(jīng)網(wǎng)絡(luò)更加符合生物神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。循環(huán)神經(jīng)網(wǎng)絡(luò)已經(jīng)被廣泛應(yīng)用在語(yǔ)音識(shí)別、語(yǔ)言模型以及自然語(yǔ)言生成等任務(wù)上活性值狀態(tài)6.2循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)循環(huán)神經(jīng)網(wǎng)絡(luò)之所以被稱為“循環(huán)”,是因?yàn)樗鼈儗?duì)序列中的每個(gè)元素執(zhí)行相同的任務(wù),輸出取決于先前的計(jì)算結(jié)果。6.3長(zhǎng)距離依賴與參數(shù)學(xué)習(xí)6.3.1長(zhǎng)距離依賴長(zhǎng)距離依賴是指當(dāng)前系統(tǒng)的狀態(tài)可能受到很長(zhǎng)時(shí)間之前系統(tǒng)狀態(tài)的影響,這是循環(huán)神經(jīng)網(wǎng)絡(luò)難以有效解決的問題之一。6.3長(zhǎng)距離依賴與參數(shù)學(xué)習(xí)6.3.2參數(shù)學(xué)習(xí)循環(huán)神經(jīng)網(wǎng)絡(luò)的參數(shù)可以通過梯度下降法來進(jìn)行學(xué)習(xí)。1.隨時(shí)間反向傳播算法2.實(shí)時(shí)循環(huán)學(xué)習(xí)算法6.4基于門控的循環(huán)神經(jīng)網(wǎng)絡(luò)主要介紹兩種基于門控的循環(huán)神經(jīng)網(wǎng)絡(luò):長(zhǎng)短期記憶(LongShortTermMemory,LSTM)網(wǎng)絡(luò)和門控循環(huán)單元(GatedRecurrentUnit,GRU)網(wǎng)絡(luò)。6.4基于門控的循環(huán)神經(jīng)網(wǎng)絡(luò)6.4.1LSTM網(wǎng)絡(luò)(1)引入記憶單元(MemoryCell):(2)使用門控機(jī)制(GateMechanism):長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LongShort-TermMemory,LSTM)6.4基于門控的循環(huán)神經(jīng)網(wǎng)絡(luò)6.4.2GRU網(wǎng)絡(luò)GRU網(wǎng)絡(luò)是一種比LSTM網(wǎng)絡(luò)更加簡(jiǎn)單的循環(huán)神經(jīng)網(wǎng)絡(luò)。GatedRecurrentUnit,GRU更新門重置門6.5深層循環(huán)神經(jīng)網(wǎng)絡(luò)可以將多層循環(huán)神經(jīng)網(wǎng)絡(luò)堆疊在一起,通過對(duì)幾個(gè)簡(jiǎn)單層的組合,產(chǎn)生一個(gè)靈活的機(jī)制,特別是數(shù)據(jù)可能與不同層的堆疊有關(guān)。6.6實(shí)例:語(yǔ)言模型首先,加載周杰倫專輯歌詞數(shù)據(jù)集。1.import
time
2.import
math
3.import
numpy
as
np
inport
torch
4.from
torch
import
nn,optim
5.import
torch.nn.functional
as
F
import
sys
6.sys.path.append(":")
7.import
d2izh
pytorch
as
d21
8.device=torch,device("code"if
torch.cuda.is_available()
else'cpu')
9.#加載周杰倫專輯歌詞數(shù)據(jù)集10.(corpus_indices,char_to_idx,idx_to_char.
vocab
size)=
d21.load_data_jav_lyrics()
6.6.1定義模型下面構(gòu)造一個(gè)含單個(gè)隱藏層、隱藏單元數(shù)為256個(gè)的循環(huán)神經(jīng)網(wǎng)絡(luò)層rnn_layer。1.num_hiddens=256
2.rnn_layer=nn.RNN(input_size-vocab_size,hidden_size=num_hiddens)
3.#rnn_layer=nn.LSTM(input_size=vocab_size,
hidden_size=num_hiddens)6.6.1定義模型下面構(gòu)造一個(gè)含單個(gè)隱藏層、隱藏單元數(shù)為256個(gè)的循環(huán)神經(jīng)網(wǎng)絡(luò)層rnn_layer。循環(huán)神經(jīng)網(wǎng)絡(luò)(以LSTM網(wǎng)絡(luò)為例)的輸出6.6.1定義模型輸出形狀為(時(shí)間步數(shù),批量大小,隱藏單元個(gè)數(shù))1.num_steps=35
2.batch_size=2
3.state=None
4.x=torch.rand(num_steps,batch_size.
Vocab_size)
5.y,state_new=rn_layer(x,state)
6.print(Y.shape.
len(state_new).
state_nem[0].shape)
輸出如下。
torch.size([35,2,256])1
torch.size([2,256])
6.6.1定義模型輸出個(gè)數(shù)等于詞典大小vocab_size。1.class
RNMModel(nn.Module):
2.def__init__.(self,rnn_layer,vocab_size):
3.super(RNNModel.
self).__init__()
4.self.rnn=rnn_laver
5.self.hidden_size=rnn_layer.hidden_size
*(2
If
rnn
layer.bidirectional
else
1)
6.selt.vocab
size=vocab
size
7.self.dense=nn.Linear(self_hidden_size.
Vocab_size)
8.self.state=None
9.def
formard(self.
inputs.
state):
10.
11.X=d21.to_onehot(inputs,self.vocab_size)
12.
Y,self.state
=self.rnn(torch.stack(x),state)
13.output=self.dense(Y.view(-1.Y.shape[-1]))
14.return
outout.
self.state
6.6.2訓(xùn)練模型下面定義一個(gè)預(yù)測(cè)函數(shù)。這里的實(shí)現(xiàn)在于前向計(jì)算和初始化隱藏狀態(tài)的函數(shù)接口。1.def
predict_rnn_pytorch(prefix,num_chars,model,vocab_size,device,idx_to
_char.char_to_idx):
2.state=None
3.output=[char_to_idx[prefix[0]]]
4.for
t
in
range(num_chars+len(prefix)-1):
5.X=torch.tensor([output[-1]].device=device).view(1,1)
6.if
state
is
not
None:
7.if
isinstance(state,tuple):
8.state=(state[0].to(device),
state[1].to(device))
9.else:
10.state=state.to(device)
11.(Y,state)=model(x.
state)
12.if
t<len(prefix)-1:
13.output.append(char_to_idx[prefix[t
+1]])
14.else:
15.output.append(int(Y.argmax(din-1).item()))
16.return'
'.join([idx_to
char[i]
for
i
in
output])
6.6.2訓(xùn)練模型使用權(quán)重為隨機(jī)值的模型來預(yù)測(cè)一次,代碼如下。1.mode1=RNNModel(rnn_layer,vocab_size).to(device)
2.predict_rnn_pytorch('分開',10,model,vocab_size,device,idx_to_char,char_to_idx)
輸出如下。"分開戲想迎涼想征涼征征"
6.6.2訓(xùn)練模型接下來實(shí)現(xiàn)訓(xùn)練函數(shù)。1.def
train_and_predict_rnn_pytorch(madel,num_hiddens,vocab_size,device,
2.
corpus_indices,idx_to_char,char_to_idx,
3.
num_epochs,num_steps,Ir,clipping_theta,
4.
batch_size,pred_period,pred_len,prefixes):
5.
loss=nn.crossEntropyLoss()
6.
optimizer=torch.optim.Adam(model.parameters(),Ir=1r)
7.
model.to(device)
state-None
8.
6.6.2訓(xùn)練模型9.
for
epoch
in
range(num
epochs):
10.
1_sum,n,start=0.0.0.time.time(
11.
data
iterd21.data
iter
consecutive(corpus
indices,batch
size,num
steps,device)
12.
for
x,Y
in
data_iter:
13.
if
state
is
not
None:
14.
if
isinstance(state,tuple):
15.
state=(state[0].detach(),state[1].detach())
16.
17.
else:
18.
state=state.detach()
19.
(output,state)=model(x,state)"output
20.
y=torch.transpose(Y.e,1).contiguous().view(-1)
21.
1=
loss(output,y.long())
22.
optimizer.zero_grad()
23.
1.backoward()
24.
d21.grad_clipping(model.parameters(),clipping_theta,device)
.
6.6.2訓(xùn)練模型25.
optimizer.step()
26.
1_sum
+=
1.item()*y.shape[0]
27.
n
+=
y.shape[0]
28.
try:
29.
perplexity=math.exp(1_sum/n)
30.
except
OverflowError:
31.
perplexity=float("inf")
32.
if
(epoch
+
1)
%
pred_period
==0:
33.
print("epoch
%d,perplexity
%f,time
%.2f
sec'%(
34.
epoch
+
1,perplexity,time.time()=
start))
35.
for
prefix
in
prefixes:
36.
print('-'.
predict_rnn_pytorch(
37.
prefix,pred_len,model,vocab_size,device,idx_to_char,char_to_idx))
6.6.2訓(xùn)練模型使用超參數(shù)來訓(xùn)練模型。1.num_epochs,batch_size,Ir,clipping_theta
=256,32,1e-3,1e-2
2.pred_period,pred_len,prefixes
=50,50,["
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫字樓租賃補(bǔ)充協(xié)議(含裝修驗(yàn)收標(biāo)準(zhǔn))
- 貨幣賠償場(chǎng)價(jià)評(píng)估與理賠合同
- 股權(quán)代持與公司知識(shí)產(chǎn)權(quán)保護(hù)合同
- 餐飲業(yè)商鋪?zhàn)赓U及品牌戰(zhàn)略規(guī)劃合同樣本
- 資產(chǎn)證券化抵押典當(dāng)服務(wù)協(xié)議
- 康復(fù)醫(yī)學(xué)運(yùn)動(dòng)治療
- 舌系帶短護(hù)理
- 工程項(xiàng)目管理專題匯報(bào)
- 老年人透析護(hù)理
- 古詩(shī)詞鑒賞之修辭手法-2024小升初語(yǔ)文專項(xiàng)復(fù)習(xí)講義
- GB 36894-2018危險(xiǎn)化學(xué)品生產(chǎn)裝置和儲(chǔ)存設(shè)施風(fēng)險(xiǎn)基準(zhǔn)
- 自動(dòng)送料機(jī)控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 管理處干部職工廉潔從業(yè)行為規(guī)范
- 《管理會(huì)計(jì)在企業(yè)應(yīng)用中問題及對(duì)策研究-以美的公司為例(論文)6800字》
- GB-T 1040.3-2006 塑料 拉伸性能的測(cè)定 第3部分:薄塑和薄片的試驗(yàn)條件
- 《數(shù)學(xué)廣角找次品》公開課一等獎(jiǎng)省優(yōu)質(zhì)課大賽獲獎(jiǎng)?wù)n件
- 企業(yè)負(fù)責(zé)人安全管理人員安全能力提升培訓(xùn)之一課件
- 藍(lán)色高效會(huì)議管理技巧PPT模板
- 地下水動(dòng)力學(xué)PDF(課堂PPT)
- 國(guó)學(xué)志愿者申報(bào)表
- 用“利用系數(shù)”法計(jì)算LED路燈的照度及配置
評(píng)論
0/150
提交評(píng)論