版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)之間是無(wú)連接的。(無(wú)循環(huán))輸入和輸出的維數(shù)都是固定的,不能任意改變。無(wú)法處理變長(zhǎng)的序列數(shù)據(jù)。前饋網(wǎng)絡(luò)假設(shè)每次輸入都是獨(dú)立的,也就是說(shuō)每次網(wǎng)絡(luò)的輸出只依賴于當(dāng)前的輸入。延時(shí)神經(jīng)網(wǎng)絡(luò)(TimeDelayNeuralNetwork,TDNN)建立一個(gè)額外的延時(shí)單元,用來(lái)存儲(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ò)通過(guò)使用帶自反饋的神經(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ò)難以有效解決的問(wèn)題之一。6.3長(zhǎng)距離依賴與參數(shù)學(xué)習(xí)6.3.2參數(shù)學(xué)習(xí)循環(huán)神經(jīng)網(wǎng)絡(luò)的參數(shù)可以通過(guò)梯度下降法來(lái)進(jìn)行學(xué)習(xí)。1.隨時(shí)間反向傳播算法2.實(shí)時(shí)循環(huán)學(xué)習(xí)算法6.4基于門(mén)控的循環(huán)神經(jīng)網(wǎng)絡(luò)主要介紹兩種基于門(mén)控的循環(huán)神經(jīng)網(wǎng)絡(luò):長(zhǎng)短期記憶(LongShortTermMemory,LSTM)網(wǎng)絡(luò)和門(mén)控循環(huán)單元(GatedRecurrentUnit,GRU)網(wǎng)絡(luò)。6.4基于門(mén)控的循環(huán)神經(jīng)網(wǎng)絡(luò)6.4.1LSTM網(wǎng)絡(luò)(1)引入記憶單元(MemoryCell):(2)使用門(mén)控機(jī)制(GateMechanism):長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LongShort-TermMemory,LSTM)6.4基于門(mén)控的循環(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更新門(mén)重置門(mén)6.5深層循環(huán)神經(jīng)網(wǎng)絡(luò)可以將多層循環(huán)神經(jīng)網(wǎng)絡(luò)堆疊在一起,通過(guò)對(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ī)值的模型來(lái)預(yù)測(cè)一次,代碼如下。1.mode1=RNNModel(rnn_layer,vocab_size).to(device)
2.predict_rnn_pytorch('分開(kāi)',10,model,vocab_size,device,idx_to_char,char_to_idx)
輸出如下。"分開(kāi)戲想迎涼想征涼征征"
6.6.2訓(xùn)練模型接下來(lái)實(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ù)來(lái)訓(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024腳手架搭建合同范本
- 二零二五年度綠色環(huán)保型二手住宅買(mǎi)賣(mài)合同模板2篇
- 二零二五年度鋁塑窗節(jié)能補(bǔ)貼申請(qǐng)與執(zhí)行合同4篇
- 2024運(yùn)輸企業(yè)對(duì)貨車(chē)司機(jī)簽訂安全駕駛勞務(wù)合同3篇
- 二零二五年度園林綠化出渣車(chē)輛勞務(wù)分包合同模板4篇
- 基于2025年度市場(chǎng)拓展的保密協(xié)議范本2篇
- 二零二五年度校園門(mén)禁系統(tǒng)安全監(jiān)控系統(tǒng)采購(gòu)合同4篇
- 二零二五版馬賽克裝飾材料進(jìn)口采購(gòu)合同4篇
- 二零二五版建筑工程項(xiàng)目轉(zhuǎn)讓與售后服務(wù)合同3篇
- 2025年度離婚后子女監(jiān)護(hù)權(quán)及探望權(quán)調(diào)整合同3篇
- 第22單元(二次函數(shù))-單元測(cè)試卷(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級(jí)上冊(cè)(含答案解析)
- 藍(lán)色3D風(fēng)工作總結(jié)匯報(bào)模板
- 安全常識(shí)課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(kù)(含答案)
- 2024年中考英語(yǔ)閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 新版中國(guó)食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測(cè)試試題含解析
- 2024年山東省青島市中考生物試題(含答案)
- 保安公司市場(chǎng)拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實(shí)體鑒別第2部分:采用鑒別式加密的機(jī)制
評(píng)論
0/150
提交評(píng)論