pytorch 笔记:PAD_PACKED_SEQUENCE 和PACK_PADDED_SEQUENCE

1 PACK_PADDED_SEQUENCE

1.0 功能

  • 将填充的序列打包成一个更加紧凑的形式
  • 这样RNN、LSTM和GRU等模型可以更高效地处理它们,因为它们可以跳过不必要的计算

1.2 基本使用方法

python 复制代码
torch.nn.utils.rnn.pack_padded_sequence(
    input, 
    lengths, 
    batch_first=False, 
    enforce_sorted=True)

1.3 参数

|----------------|--------------------------------------------------------------------------------------------------------------------------------|
| input | * 一个大小为T×B×*的张量 * T是最长序列的长度 * B是批次大小 * *表示任意数目的维度 |
| lengths | 每个批次元素的序列长度的列表 |
| batch_first | 如果batch_first是True,那么期望的输入格式是B x T x * |
| enforce_sorted | 如果设置了enforce_sorted=True,序列应该按长度降序排列。这意味着input[:,0]应该是最长的序列,input[:,B-1]应该是最短的。 如果enforce_sorted设置为False,输入序列将无条件地被排序。 |

1.4 举例

python 复制代码
import torch
from torch.nn.utils.rnn import pack_padded_sequence

# 输入序列
input_seq = torch.tensor([[6, 8, 9, 0], [5, 7, 0, 0], [1, 0, 0, 0]])

# 序列的实际长度
lengths = [3, 2, 1]

# 使用pack_padded_sequence
packed = pack_padded_sequence(input_seq, lengths, batch_first=True)

packed
#PackedSequence(data=tensor([6, 5, 1, 8, 7, 9]), batch_sizes=tensor([3, 2, 1]), sorted_indices=None, unsorted_indices=None)

2 pad_packed_sequence

对一个已打包的序列进行解包,这个打包的序列通常是通过pack_padded_sequence函数从一个填充的序列得到的

2.1 基本使用方法

python 复制代码
torch.nn.utils.rnn.pad_packed_sequence(
    sequence, 
    batch_first=False, 
    padding_value=0.0, 
    total_length=None)

2.2 参数说明

|---------------|----------------------------------------------------|
| sequence | 要解包的已打包序列 |
| batch_first | 指示输出的维度顺序。如果为True,输出将为B x T x *格式,否则为T x B x *格式 |
| padding_value | 用于填充的值,通常是0 |
| total_length | 可选的。如果指定,输出序列将被填充到这个长度 |

2.3 举例

还是之前的packed

python 复制代码
from torch.nn.utils.rnn import pad_packed_sequence

pad_packed_sequence(packed)
'''
(tensor([[6, 5, 1],
         [8, 7, 0],
         [9, 0, 0]]),
 tensor([3, 2, 1]))
'''

pad_packed_sequence(packed, batch_first=True,total_length=5)
'''
(tensor([[6, 8, 9, 0, 0],
         [5, 7, 0, 0, 0],
         [1, 0, 0, 0, 0]]),
 tensor([3, 2, 1]))
'''
相关推荐
回眸&啤酒鸭6 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智6 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅6 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein6 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu6 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台6 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
wukangjupingbb6 天前
智能网联汽车安全能力框架
人工智能
风合星语6 天前
2026 具身智能技术实战(一):VLA 到底怎么控制机器人?——用 LeRobot 跑通 SmolVLA 推理
pytorch·机器人·具身智能·vla·lerobot·smolvla
龙亘川6 天前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化