最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解讀torch.nn.GRU的輸入及輸出示例

 更新時間:2023年01月28日 08:55:24   作者:久許  
這篇文章主要介紹了解讀torch.nn.GRU的輸入及輸出示例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

我們有時會看到GRU中輸入的參數(shù)有時是一個,但是有時又有兩個。這難免會讓人們感到疑惑,那么這些參數(shù)到底是什么呢。

一、輸入到GRU的參數(shù)

輸入的參數(shù)有兩個,分別是input和h_0。

Inputs: input, h_0

①input的shape

The shape of input:(seq_len, batch, input_size) : tensor containing the feature of the input sequence. The input can also be a packed variable length sequence。

See functorch.nn.utils.rnn.pack_padded_sequencefor details.

②h_0的shape

從下面的解釋中也可以看出,這個參數(shù)可以不提供,那么就默認為0.

The shape of h_0:(num_layers * num_directions, batch, hidden_size): tensor containing the initial hidden state for each element in the batch.

Defaults to zero if not provided. If the RNN is bidirectional num_directions should be 2, else it should be 1.

綜上,可以只輸入一個參數(shù)。當輸入兩個參數(shù)的時候,那么第二個參數(shù)相當于是一個隱含層的輸出。

為了便于理解,下面是一幅圖:

二、GRU返回的數(shù)據(jù)

輸出有兩個,分別是output和h_n

①output

output 的shape是:(seq_len, batch, num_directions * hidden_size): tensor containing the output features h_t from the last layer of the GRU, for each t.

If a class:torch.nn.utils.rnn.PackedSequence has been given as the input, the output will also be a packed sequence.

For the unpacked case, the directions can be separated using output.view(seq_len, batch, num_directions, hidden_size), with forward and backward being direction 0 and 1 respectively.

Similarly, the directions can be separated in the packed case.

②h_n

h_n的shape是:(num_layers * num_directions, batch, hidden_size): tensor containing the hidden state for t = seq_len
Like output, the layers can be separated using
h_n.view(num_layers, num_directions, batch, hidden_size).

三、代碼示例

數(shù)據(jù)的shape是[batch,seq_len,emb_dim]

RNN接收輸入的數(shù)據(jù)的shape是[seq_len,batch,emb_dim]

即前兩個維度調(diào)換就行了。

可以知道,加入批處理的時候一次處理128個句子,每個句子中有5個單詞,那么上圖中展示的input_data的shape是:[128,5,emb_dim]。

結(jié)合代碼分析,本例子將演示有1個句子和5個句子的情況。假設(shè)每個句子中有9個單詞,所以seq_len=9,并且每個單詞對應(yīng)的emb_dim=3,所以對應(yīng)數(shù)據(jù)的shape是: [batch,9,3],由于輸入到RNN中數(shù)據(jù)格式的格式,所以為[9,batch,3]

import torch
import torch.nn as nn

emb_dim = 3
hidden_dim = 2
rnn = nn.GRU(emb_dim,hidden_dim)
#rnn = nn.GRU(9,1,3)
print(type(rnn))

tensor1 = torch.tensor([[-0.5502, -0.1920, 1.1845],
[-0.8003, 2.0783, 0.0175],
[ 0.6761, 0.7183, -1.0084],
[ 0.9514, 1.4772, -0.2271],
[-1.0146, 0.7912, 0.2003],
[-0.5502, -0.1920, 1.1845],
[-0.8003, 2.0783, 0.0175],
[ 0.1718, 0.1070, 0.4255],
[-2.6727, -1.5680, -0.8369]])

tensor2 = torch.tensor([[-0.5502, -0.1920]])

# 假設(shè)input只有一個句子,那么batch為1
print('--------------batch=1時------------')
data = tensor1.unsqueeze(0)
h_0 = tensor2[0].unsqueeze(0).unsqueeze(0)
print('data.shape: [batch,seq_len,emb_dim]',data.shape)
print('')
input = data.transpose(0,1)
print('input.shape: [seq_len,batch,emb_dim]',input.shape)
print('h_0.shape: [1,batch,hidden_dim]',h_0.shape)
print('')
# 輸入到rnn中
output,h_n = rnn(input,h_0)
print('output.shape: [seq_len,batch,hidden_dim]',output.shape)
print('h_n.shape: [1,batch,hidden_dim]',h_n.shape)

# 假設(shè)input中有5個句子,所以,batch = 5
print('\n--------------batch=5時------------')
data = tensor1.unsqueeze(0).repeat(5,1,1) # 由于batch為5
h_0 = tensor2[0].unsqueeze(0).repeat(1,5,1) # 由于batch為5
print('data.shape: [batch,seq_len,emb_dim]',data.shape)
print('')
input = data.transpose(0,1)

print('input.shape: [seq_len,batch,emb_dim]',input.shape)
print('h_0.shape: [1,batch,hidden_dim]',h_0.shape)
print('')
# 輸入到rnn中
output,h_n = rnn(input,h_0)
print('output.shape: [seq_len,batch,hidden_dim]',output.shape)
print('h_n.shape: [1,batch,hidden_dim]',h_n.shape)

四、輸出

<class ‘torch.nn.modules.rnn.GRU’>
--------------batch=1時------------
data.shape: [batch,seq_len,emb_dim] torch.Size([1, 9, 3])

input.shape: [seq_len,batch,emb_dim] torch.Size([9, 1, 3])
h_0.shape: [1,batch,hidden_dim] torch.Size([1, 1, 2])

output.shape: [seq_len,batch,hidden_dim] torch.Size([9, 1, 2])
h_n.shape: [1,batch,hidden_dim] torch.Size([1, 1, 2])

--------------batch=5時------------
data.shape: [batch,seq_len,emb_dim] torch.Size([5, 9, 3])

input.shape: [seq_len,batch,emb_dim] torch.Size([9, 5, 3])
h_0.shape: [1,batch,hidden_dim] torch.Size([1, 5, 2])

output.shape: [seq_len,batch,hidden_dim] torch.Size([9, 5, 2])
h_n.shape: [1,batch,hidden_dim] torch.Size([1, 5, 2])

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django如何實現(xiàn)上傳圖片功能

    Django如何實現(xiàn)上傳圖片功能

    這篇文章主要介紹了Django如何實現(xiàn)上傳圖片功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python解析壓縮包內(nèi)部文件的后綴名并分類存放

    Python解析壓縮包內(nèi)部文件的后綴名并分類存放

    這篇文章主要為大家詳細介紹了如何使用Python解析壓縮包內(nèi)部文件的后綴名并分類存放,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • 使用Python繪制實時的動態(tài)折線圖

    使用Python繪制實時的動態(tài)折線圖

    這篇文章主要為大家詳細介紹了如何使用Python繪制實時的動態(tài)折線圖,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • Python爬蟲基本庫request的基本使用

    Python爬蟲基本庫request的基本使用

    這篇文章主要介紹了Python爬蟲基本庫request的基本使用,urllib庫使用繁瑣,比如處理網(wǎng)頁驗證和Cookies時,需要編寫Opener和Handler來處理。為了更加方便的實現(xiàn)這些操作,就有了更為強大的requests庫,需要的朋友可以參考下
    2023-07-07
  • python shell命令行中import多層目錄下的模塊操作

    python shell命令行中import多層目錄下的模塊操作

    這篇文章主要介紹了python shell命令行中import多層目錄下的模塊操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 使用python svm實現(xiàn)直接可用的手寫數(shù)字識別

    使用python svm實現(xiàn)直接可用的手寫數(shù)字識別

    這篇文章主要介紹了使用python svm實現(xiàn)直接可用的手寫數(shù)字識別,現(xiàn)在網(wǎng)上很多代碼是良莠不齊,真是一言難盡,于是記錄一下,能夠運行成功并識別成功的一個源碼
    2021-08-08
  • Python?避免字典和元組的多重嵌套問題

    Python?避免字典和元組的多重嵌套問題

    這篇文章主要介紹了Python?避免字典和元組的多重嵌套,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Python修改文件往指定行插入內(nèi)容的實例

    Python修改文件往指定行插入內(nèi)容的實例

    今天小編就為大家分享一篇Python修改文件往指定行插入內(nèi)容的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python scipy的二維圖像卷積運算與圖像模糊處理操作示例

    Python scipy的二維圖像卷積運算與圖像模糊處理操作示例

    這篇文章主要介紹了Python scipy的二維圖像卷積運算與圖像模糊處理操作,涉及Python數(shù)學(xué)運算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • pandas.DataFrame 根據(jù)條件新建列并賦值的方法

    pandas.DataFrame 根據(jù)條件新建列并賦值的方法

    下面小編就為大家分享一篇pandas.DataFrame 根據(jù)條件新建列并賦值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

宝应县| 泽州县| 金川县| 鱼台县| 垦利县| 从江县| 扎鲁特旗| 阿坝| 桓台县| 绥化市| 图木舒克市| 四川省| 卓资县| 平顺县| 长治县| 江阴市| 汕尾市| 封开县| 阿克陶县| 东乌珠穆沁旗| 汕头市| 原平市| 哈尔滨市| 九江市| 宁明县| 陵川县| 萝北县| 崇义县| 左云县| 泰安市| 南溪县| 东台市| 绵阳市| 汝南县| 渑池县| 梁平县| 蒙自县| 舟曲县| 噶尔县| 隆子县| 营山县|