国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何使用Pytorch-LSTM輸出參數(shù)

89542767 / 683人閱讀


  小編寫這篇文章的主要目的,主要是給大家做一個(gè)介紹,介紹關(guān)于Pytorch-LSTM是如何去輸出參數(shù),有哪一些步驟呢?下面小編就以代碼和圖片給大家做出一個(gè)介紹。


  1.Pytorch中的LSTM中輸入輸出參數(shù)


  nn.lstm是繼承nn.RNNBase,初始化的定義如下:


  class RNNBase(Module):
  ...
  def __init__(self,mode,input_size,hidden_size,
  num_layers=1,bias=True,batch_first=False,
  dropout=0.,bidirectional=False):


  以下是Pytorch中的參數(shù)及其含義,解釋如下:


  input_size–輸入數(shù)據(jù)的大小,也就是前面例子中每個(gè)單詞向量的長(zhǎng)度


  hidden_size–隱藏層的大小(即隱藏層節(jié)點(diǎn)數(shù)量),輸出向量的維度等于隱藏節(jié)點(diǎn)數(shù)


  num_layers–recurrent layer的數(shù)量,默認(rèn)等于1。


  bias–If False,then the layer does not use bias weights b_ih and b_hh.Default:True


  batch_first–默認(rèn)為False,也就是說(shuō)官方不推薦我們把batch放在第一維,這個(gè)與之前常見(jiàn)的CNN輸入有點(diǎn)不同,此時(shí)輸入輸出的各個(gè)維度含義為(seq_length,batch,feature)。當(dāng)然如果你想和CNN一樣把batch放在第一維,可將該參數(shù)設(shè)置為True,即(batch,seq_length,feature),習(xí)慣上將batch_first設(shè)置為True。


  dropout–如果非0,就在除了最后一層的其它層都插入Dropout層,默認(rèn)為0。


  bidirectional–如果設(shè)置為True,則表示雙向LSTM,默認(rèn)為False


  2.輸入數(shù)據(jù)(以batch_first=True,單層單向?yàn)槔?/p>


  假設(shè)輸入數(shù)據(jù)信息如下:


  輸入維度=28


  nn.lstm中的API輸入?yún)?shù)如下:


   time_steps=3
  batch_first=True
  batch_size=10
  hidden_size=4
  num_layers=1
  bidirectional=False

  備注:先以簡(jiǎn)單的num_layers=1和bidirectional=1為例,后面會(huì)講到num_layers與bidirectional的LSTM網(wǎng)絡(luò)具體構(gòu)造。


  下在面代碼的中:


  lstm_input是輸入數(shù)據(jù),隱層初始輸入h_init和記憶單元初始輸入c_init的解釋如下:


  h_init:維度形狀為(num_layers*num_directions,batch,hidden_size):


  第一個(gè)參數(shù)的含義num_layers*num_directions,即LSTM的層數(shù)乘以方向數(shù)量。這個(gè)方向數(shù)量是由前面介紹的bidirectional決定,如果為False,則等于1;反之等于2(可以結(jié)合下圖理解num_layers*num_directions的含義)。


  batch:批數(shù)據(jù)量大小


  hidden_size:隱藏層節(jié)點(diǎn)數(shù)


  c_init:維度形狀也為(num_layers*num_directions,batch,hidden_size),各參數(shù)含義與h_init相同。因?yàn)楸举|(zhì)上,h_init與c_init只是在不同時(shí)刻的不同表達(dá)而已。


  備注:如果沒(méi)有傳入,h_init和c_init,根據(jù)源代碼來(lái)看,這兩個(gè)參數(shù)會(huì)默認(rèn)為0。


  import torch
  from torch.autograd import Variable
  from torch import nn
  input_size=28
  hidden_size=4
  lstm_seq=nn.LSTM(input_size,hidden_size,num_layers=1,batch_first=True)#構(gòu)建LSTM網(wǎng)絡(luò)
  lstm_input=Variable(torch.randn(10,3,28))#構(gòu)建輸入
  h_init=Variable(torch.randn(1,lstm_input.size(0),hidden_size))#構(gòu)建h輸入?yún)?shù)--每個(gè)batch對(duì)應(yīng)一個(gè)隱層
  c_init=Variable(torch.randn(1,lstm_input.size(0),hidden_size))#構(gòu)建c輸出參數(shù)--每個(gè)batch對(duì)應(yīng)一個(gè)隱層
  out,(h,c)=lstm_seq(lstm_input,(h_init,c_init))#將輸入數(shù)據(jù)和初始化隱層、記憶單元信息傳入
  print(lstm_seq.weight_ih_l0.shape)#對(duì)應(yīng)的輸入學(xué)習(xí)參數(shù)
  print(lstm_seq.weight_hh_l0.shape)#對(duì)應(yīng)的隱層學(xué)習(xí)參數(shù)
  print(out.shape,h.shape,c.shape)


  輸出結(jié)果如下:

01.png

  輸出結(jié)果解釋如下:


  (1)lstm_seq.weight_ih_l0.shape的結(jié)果為:torch.Size([16,28]),表示對(duì)應(yīng)的輸入到隱層的學(xué)習(xí)參數(shù):(4*hidden_size,input_size)。


  (2)lstm_seq.weight_hh_l0.shape的結(jié)果為:torch.Size([16,4]),表示對(duì)應(yīng)的隱層到隱層的學(xué)習(xí)參數(shù):(4*hidden_size,num_directions*hidden_size)


  (3)out.shape的輸出結(jié)果:torch.Size([10,3,4]),表示隱層到輸出層學(xué)習(xí)參數(shù),即(batch,time_steps,num_directions*hidden_size),維度和輸入數(shù)據(jù)類似,會(huì)根據(jù)batch_first是否為True進(jìn)行對(duì)應(yīng)的輸出結(jié)果,(如果代碼中,batch_first=False,則out.shape的結(jié)果會(huì)變?yōu)椋簍orch.Size([3,10,4])),


  這個(gè)輸出tensor包含了LSTM模型最后一層每個(gè)time_step的輸出特征,比如說(shuō)LSTM有兩層,那么最后輸出的是,表示第二層LSTM每個(gè)time step對(duì)應(yīng)的輸出;另外如果前面對(duì)輸入數(shù)據(jù)使用了torch.nn.utils.rnn.PackedSequence,那么輸出也會(huì)做同樣的操作編程packed sequence;對(duì)于unpacked情況,我們可以對(duì)輸出做如下處理來(lái)對(duì)方向作分離output.view(seq_len,batch,num_directions,hidden_size),其中前向和后向分別用0和1表示。


  h.shape輸出結(jié)果是:torch.Size([1,10,4]),表示隱層到輸出層的參數(shù),h_n:(num_layers*num_directions,batch,hidden_size),只會(huì)輸出最后一個(gè)time step的隱狀態(tài)結(jié)果(如下圖所示)


  c.shape的輸出結(jié)果是:torch.Size([1,10,4]),表示隱層到輸出層的參數(shù),c_n:(num_layers*num_directions,batch,hidden_size),同樣只會(huì)輸出最后一個(gè)time step的cell狀態(tài)結(jié)果(如下圖所示)

02.png

  3.輸入數(shù)據(jù)(以batch_first=True,雙層雙向)


  '''
  batch_first=True:輸入形式:(batch,seq,feature)
  bidirectional=True
  num_layers=2
  '''
  num_layers=2
  bidirectional_set=True
  bidirectional=2 if bidirectional_set else 1
  input_size=28
  hidden_size=4
  lstm_seq=nn.LSTM(input_size,hidden_size,num_layers=num_layers,bidirectional=bidirectional_set,batch_first=True)#構(gòu)建LSTM網(wǎng)絡(luò)
  lstm_input=Variable(torch.randn(10,3,28))#構(gòu)建輸入
  h_init=Variable(torch.randn(num_layers*bidirectional,lstm_input.size(0),hidden_size))#構(gòu)建h輸入?yún)?shù)
  c_init=Variable(torch.randn(num_layers*bidirectional,lstm_input.size(0),hidden_size))#構(gòu)建c輸出參數(shù)
  out,(h,c)=lstm_seq(lstm_input,(h_init,c_init))#計(jì)算
  print(lstm_seq.weight_ih_l0.shape)
  print(lstm_seq.weight_hh_l0.shape)
  print(out.shape,h.shape,c.shape)


  Pytorch-LSTM函數(shù)參數(shù)解釋圖解


  最近在寫有關(guān)LSTM的代碼,但是對(duì)于nn.LSTM函數(shù)中的有些參數(shù)還是不明白其具體含義,學(xué)習(xí)過(guò)后在此記錄。


  為了方便說(shuō)明,我們先解釋函數(shù)參數(shù)的作用,接著對(duì)應(yīng)圖片來(lái)說(shuō)明每個(gè)參數(shù)的具體含義。


  torch.nn.LSTM函數(shù)


  LSTM的函數(shù)


  class torch.nn.LSTM(args,*kwargs)
  #主要參數(shù)
  #input_size–輸入的特征維度
  #hidden_size–隱狀態(tài)的特征維度
  #num_layers–層數(shù)(和時(shí)序展開(kāi)要區(qū)分開(kāi))
  #bias–如果為False,那么LSTM將不會(huì)使用偏置,默認(rèn)為True。
  #batch_first–如果為True,那么輸入和輸出Tensor的形狀為(batch,seq_len,input_size)
  #dropout–如果非零的話,將會(huì)在RNN的輸出上加個(gè)dropout,最后一層除外。
  #bidirectional–如果為True,將會(huì)變成一個(gè)雙向RNN,默認(rèn)為False。


  LSTM的輸入維度為(seq_len,batch,input_size)如果batch_first為True,則輸入形狀為(batch,seq_len,input_size)


  seq_len是文本的長(zhǎng)度;


  batch是批次的大小;


  input_size是每個(gè)輸入的特征緯度(一般是每個(gè)字/單詞的向量表示;


  LSTM的輸出維度為(seq_len,batch,hidden_size*num_directions)


  seq_len是文本的長(zhǎng)度;


  batch是批次的大小;


  hidden_size是定義的隱藏層長(zhǎng)度


  num_directions指的則是如果是普通LSTM該值為1;Bi-LSTM該值為2


  當(dāng)然,僅僅用文本來(lái)說(shuō)明則讓人感到很懵逼,所以我們使用圖片來(lái)說(shuō)明。


  圖解LSTM函數(shù)


  我們常見(jiàn)的LSTM的圖示是這樣的:

04.png

  但是這張圖很具有迷惑性,讓我們不易理解LSTM各個(gè)參數(shù)的意義。具體將上圖中每個(gè)單元展開(kāi)則為下圖所示:

05.png

  input_size:圖1中xi與圖2中綠色節(jié)點(diǎn)對(duì)應(yīng),而綠色節(jié)點(diǎn)的長(zhǎng)度等于input_size(一般是每個(gè)字/單詞的向量表示)。


  hidden_size:圖2中黃色節(jié)點(diǎn)的數(shù)量


  num_layers:圖2中黃色節(jié)點(diǎn)的層數(shù)(該圖為1)


  以上就是小編為大家總結(jié)的資料,希望可以為大家?guī)?lái)更多的幫助。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/127989.html

相關(guān)文章

  • 37個(gè)JavaScript基本面試問(wèn)題和解答

    摘要:在嚴(yán)格模式下,嘗試這樣做會(huì)引發(fā)錯(cuò)誤。問(wèn)題是在解析數(shù)字之前將其第一個(gè)參數(shù)強(qiáng)制轉(zhuǎn)換為字符串。當(dāng)處理程序完成時(shí),將檢查隊(duì)列并處理該事件例如,執(zhí)行腳本。當(dāng)值為零作為的第二個(gè)參數(shù)傳遞時(shí),它將嘗試盡快執(zhí)行指定的函數(shù)。 1、使用typeof bar ===object來(lái)確定bar是否是一個(gè)對(duì)象時(shí)有什么潛在的缺陷?這個(gè)陷阱如何避免? 盡管typeof bar ===object是檢查bar是否是對(duì)象的...

    yzzz 評(píng)論0 收藏0
  • 37個(gè)JavaScript基本面試問(wèn)題和解答

    摘要:在嚴(yán)格模式下,嘗試這樣做會(huì)引發(fā)錯(cuò)誤。問(wèn)題是在解析數(shù)字之前將其第一個(gè)參數(shù)強(qiáng)制轉(zhuǎn)換為字符串。當(dāng)處理程序完成時(shí),將檢查隊(duì)列并處理該事件例如,執(zhí)行腳本。當(dāng)值為零作為的第二個(gè)參數(shù)傳遞時(shí),它將嘗試盡快執(zhí)行指定的函數(shù)。 1、使用typeof bar ===object來(lái)確定bar是否是一個(gè)對(duì)象時(shí)有什么潛在的缺陷?這個(gè)陷阱如何避免? 盡管typeof bar ===object是檢查bar是否是對(duì)象的...

    Taste 評(píng)論0 收藏0
  • 37個(gè)JavaScript基本面試問(wèn)題和解答

    摘要:在嚴(yán)格模式下,嘗試這樣做會(huì)引發(fā)錯(cuò)誤。問(wèn)題是在解析數(shù)字之前將其第一個(gè)參數(shù)強(qiáng)制轉(zhuǎn)換為字符串。當(dāng)處理程序完成時(shí),將檢查隊(duì)列并處理該事件例如,執(zhí)行腳本。當(dāng)值為零作為的第二個(gè)參數(shù)傳遞時(shí),它將嘗試盡快執(zhí)行指定的函數(shù)。 1、使用typeof bar ===object來(lái)確定bar是否是一個(gè)對(duì)象時(shí)有什么潛在的缺陷?這個(gè)陷阱如何避免? 盡管typeof bar ===object是檢查bar是否是對(duì)象的...

    hedzr 評(píng)論0 收藏0
  • 膠囊網(wǎng)絡(luò)9大優(yōu)勢(shì)4大缺陷

    摘要:鏈接是他們?cè)跀?shù)據(jù)集上達(dá)到了較先進(jìn)的性能,并且在高度重疊的數(shù)字上表現(xiàn)出比卷積神經(jīng)網(wǎng)絡(luò)好得多的結(jié)果。在常規(guī)的卷積神經(jīng)網(wǎng)絡(luò)中,通常會(huì)有多個(gè)匯聚層,不幸的是,這些匯聚層的操作往往會(huì)丟失很多信息,比如目標(biāo)對(duì)象的準(zhǔn)確位置和姿態(tài)。 PPT由于筆者能力有限,本篇所有備注皆為專知內(nèi)容組成員根據(jù)講者視頻和PPT內(nèi)容自行補(bǔ)全,不代表講者本人的立場(chǎng)與觀點(diǎn)。膠囊網(wǎng)絡(luò)Capsule Networks你好!我是Aurél...

    TesterHome 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<