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

pytorch對可變長度序列的處理方法詳解

 更新時間:2018年12月08日 12:14:35   作者:深度學(xué)習(xí)1  
今天小編就為大家分享一篇pytorch對可變長度序列的處理方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

主要是用函數(shù)torch.nn.utils.rnn.PackedSequence()和torch.nn.utils.rnn.pack_padded_sequence()以及torch.nn.utils.rnn.pad_packed_sequence()來進行的,分別來看看這三個函數(shù)的用法。

1、torch.nn.utils.rnn.PackedSequence()

NOTE: 這個類的實例不能手動創(chuàng)建。它們只能被 pack_padded_sequence() 實例化。

PackedSequence對象包括:

一個data對象:一個torch.Variable(令牌的總數(shù),每個令牌的維度),在這個簡單的例子中有五個令牌序列(用整數(shù)表示):(18,1)

一個batch_sizes對象:每個時間步長的令牌數(shù)列表,在這個例子中為:[6,5,2,4,1]

用pack_padded_sequence函數(shù)來構(gòu)造這個對象非常的簡單:

pytorch對可變長度序列的處理

如何構(gòu)造一個PackedSequence對象(batch_first = True)

PackedSequence對象有一個很不錯的特性,就是我們無需對序列解包(這一步操作非常慢)即可直接在PackedSequence數(shù)據(jù)變量上執(zhí)行許多操作。特別是我們可以對令牌執(zhí)行任何操作(即對令牌的順序/上下文不敏感)。當(dāng)然,我們也可以使用接受PackedSequence作為輸入的任何一個pyTorch模塊(pyTorch 0.2)。

2、torch.nn.utils.rnn.pack_padded_sequence()

這里的pack,理解成壓緊比較好。 將一個 填充過的變長序列 壓緊。(填充時候,會有冗余,所以壓緊一下)

輸入的形狀可以是(T×B×* )。T是最長序列長度,B是batch size,*代表任意維度(可以是0)。如果batch_first=True的話,那么相應(yīng)的 input size 就是 (B×T×*)。

Variable中保存的序列,應(yīng)該按序列長度的長短排序,長的在前,短的在后。即input[:,0]代表的是最長的序列,input[:, B-1]保存的是最短的序列。

NOTE: 只要是維度大于等于2的input都可以作為這個函數(shù)的參數(shù)。你可以用它來打包labels,然后用RNN的輸出和打包后的labels來計算loss。通過PackedSequence對象的.data屬性可以獲取 Variable。

參數(shù)說明:

input (Variable) – 變長序列 被填充后的 batch

lengths (list[int]) – Variable 中 每個序列的長度。

batch_first (bool, optional) – 如果是True,input的形狀應(yīng)該是B*T*size。

返回值:

一個PackedSequence 對象。

3、torch.nn.utils.rnn.pad_packed_sequence()

填充packed_sequence。

上面提到的函數(shù)的功能是將一個填充后的變長序列壓緊。 這個操作和pack_padded_sequence()是相反的。把壓緊的序列再填充回來。

返回的Varaible的值的size是 T×B×*, T 是最長序列的長度,B 是 batch_size,如果 batch_first=True,那么返回值是B×T×*。

Batch中的元素將會以它們長度的逆序排列。

參數(shù)說明:

sequence (PackedSequence) – 將要被填充的 batch

batch_first (bool, optional) – 如果為True,返回的數(shù)據(jù)的格式為 B×T×*。

返回值: 一個tuple,包含被填充后的序列,和batch中序列的長度列表。

例子:

import torch
import torch.nn as nn
from torch.autograd import Variable
from torch.nn import utils as nn_utils
batch_size = 2
max_length = 3
hidden_size = 2
n_layers =1
 
tensor_in = torch.FloatTensor([[1, 2, 3], [1, 0, 0]]).resize_(2,3,1)
tensor_in = Variable( tensor_in ) #[batch, seq, feature], [2, 3, 1]
seq_lengths = [3,1] # list of integers holding information about the batch size at each sequence step
 
# pack it
pack = nn_utils.rnn.pack_padded_sequence(tensor_in, seq_lengths, batch_first=True)
 
# initialize
rnn = nn.RNN(1, hidden_size, n_layers, batch_first=True)
h0 = Variable(torch.randn(n_layers, batch_size, hidden_size))
 
#forward
out, _ = rnn(pack, h0)
 
# unpack
unpacked = nn_utils.rnn.pad_packed_sequence(out)
print('111',unpacked)

輸出:

111 (Variable containing:
(0 ,.,.) =
 0.5406 0.3584
 -0.1403 0.0308
 
(1 ,.,.) =
 -0.6855 -0.9307
 0.0000 0.0000
[torch.FloatTensor of size 2x2x2]
, [2, 1])

以上這篇pytorch對可變長度序列的處理方法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python代碼注釋規(guī)范代碼實例解析

    Python代碼注釋規(guī)范代碼實例解析

    這篇文章主要介紹了Python代碼注釋規(guī)范代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 使用PyTorch實現(xiàn)限制GPU顯存的可使用上限

    使用PyTorch實現(xiàn)限制GPU顯存的可使用上限

    從?PyTorch?1.4?版本開始,引入了一個新的功能,可以允許用戶為特定的?GPU?設(shè)備設(shè)置進程可使用的顯存上限比例,下面我們就來看看具體實現(xiàn)方法吧
    2024-03-03
  • pytorch 實現(xiàn)cross entropy損失函數(shù)計算方式

    pytorch 實現(xiàn)cross entropy損失函數(shù)計算方式

    今天小編就為大家分享一篇pytorch 實現(xiàn)cross entropy損失函數(shù)計算方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python中set方法的使用教程詳解

    Python中set方法的使用教程詳解

    在Python中,set是一種集合數(shù)據(jù)類型,表示一個無序且不重復(fù)的集合。本文主要為大家詳細介紹了Python中set方法的使用,需要的可以參考一下
    2023-04-04
  • Python如何拆分ZIP文件

    Python如何拆分ZIP文件

    這篇文章主要介紹了Python如何拆分ZIP文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python?用戶輸入和字符串格式化示例詳解

    Python?用戶輸入和字符串格式化示例詳解

    Python 允許用戶輸入數(shù)據(jù)。這意味著我們可以向用戶詢問輸入,這篇文章主要介紹了Python?用戶輸入和字符串格式化指南,以下示例要求用戶輸入用戶名,并在輸入用戶名后將其打印在屏幕上,需要的朋友可以參考下
    2023-11-11
  • OpenCV圖像卷積之cv.filter2D()函數(shù)詳解

    OpenCV圖像卷積之cv.filter2D()函數(shù)詳解

    在其官方文檔中,filter2D()函數(shù)在掩模板介紹中一筆帶過,我認為該函數(shù)應(yīng)該進行詳細介紹,下面這篇文章主要給大家介紹了關(guān)于OpenCV圖像卷積之cv.filter2D()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python實現(xiàn)遍歷子文件夾并將文件復(fù)制到不同的目標文件夾

    Python實現(xiàn)遍歷子文件夾并將文件復(fù)制到不同的目標文件夾

    這篇文章主要介紹了如何基于Python語言實現(xiàn)遍歷多個子文件夾,將每一個子文件夾中大量的文件,按照每一個文件的文件名稱的特點復(fù)制到不同的目標文件夾中,感興趣的可以了解下
    2023-08-08
  • Django nginx配置實現(xiàn)過程詳解

    Django nginx配置實現(xiàn)過程詳解

    這篇文章主要介紹了Django nginx配置實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Python中最好用的json庫orjson用法詳解

    Python中最好用的json庫orjson用法詳解

    orjson是一個用于python的快速、正確的json庫,它的基準是 json最快的python庫,具有全面的單元、集成和互操作性測試,下面這篇文章主要給大家介紹了關(guān)于Python中最好用的json庫orjson用法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評論

上饶市| 汾阳市| 永新县| 微山县| 万山特区| 望谟县| 岑巩县| 罗江县| 凤阳县| 南汇区| 连云港市| 军事| 遂宁市| 柳江县| 鄱阳县| 报价| 白沙| 定西市| 桑植县| 大石桥市| 高雄市| 葵青区| 磴口县| 宣城市| 铜鼓县| 云阳县| 梨树县| 那坡县| 巴彦淖尔市| 定陶县| 广州市| 县级市| 南华县| 修水县| 天等县| 岐山县| 昌黎县| 静安区| 莒南县| 鄂伦春自治旗| 达日县|